MCP应用奇偶校验浏览器
交互式奇偶校验映射浏览器 推动商业智能的微观战略 迁移分析。作为一个 MCP应用程序 具有由本地驱动的嵌入式聊天界面 claude CLI。
______________________________________________________________________
它做什么
使用 5-信号匹配算法:
| 信号 | 名称 | 重量 | 它检查什么 |
|---|---|---|---|
| S1 | 直接Neo4j映射 | 权威(1.0) | 手动验证 pb_semantic_name Neo4j中的属性 |
| 第2页 | 柱线 | 0.30 | MSTR ade_db_column 通过dbt追踪到PBI sourceColumn |
| 第3页 | 名称相似性 | 0.35 | 带域变换的归一化Levenshtein+Jaccard |
| 第四心音 | 公式分析 | 0.25 | MSTR公式结构与DAX表达式(仅指标) |
| S5 | 表上下文 | 0.10 | MSTR沿袭和PBI分区之间的共享源表 |
结果分为置信水平: 确认 (>=90%), 高 (>=70%), 中等 (>=50%), 低 (>=30%), 映射 (\=18.x |建议使用v20+| | Claude CLI |>=2.x| claude 必须在PATH上,或设置 CLAUDE_PATH 有人是。 | Neo4j |(远程)|上游MCP服务器提供只读访问| | PBI模型 |本地| asos-data-ade-powerbi/powerbi/models/ 在工作空间中|
Claude CLI
聊天界面使用本地安装的 Claude 代码命令行工具 以处理自然语言查询。确实如此 不 要求a ANTHROPIC_API_KEY --它使用经过身份验证的CLI会话。
如果你还没有安装Claude Code:
# macOS / Linux
curl -fsSL https://claude.ai/install.sh | sh
# Or via npm
npm install -g @anthropic-ai/claude-code验证它是否正常工作:
claude --version
# 2.1.76 (Claude Code)如果 claude 不在您的PATH中(例如,安装在 ~/.local/bin/claude),设置环境变量:
export CLAUDE_PATH="$HOME/.local/bin/claude"______________________________________________________________________
安装
cd pocs/mcp-app-parity-explorer
npm install______________________________________________________________________
建筑
npm run build这运行:
tsc --noEmit--类型检查tsc -p tsconfig.server.json--发出服务器类型声明vite build为了mcp-app.html--打包成一个独立的HTML文件vite build为了chat.html--捆绑聊天界面
输出: dist/mcp-app.html (约136KB)和 dist/chat.html (~12KB)。
这两个HTML文件都是用 vite插件单文件,它内联了所有JS和CSS——运行时没有外部依赖关系。这是MCP应用程序兼容性所必需的(HTML必须完全自包含)。
______________________________________________________________________
跑步
开发模式(热重载)
npm start这将启动三个并发进程:
- Vite手表
mcp-app.html - Vite手表
chat.html - Express服务器通过
tsx watch main.ts
生产模式
npm run build
npx tsx main.ts服务器URL
| URL | 描述 |
|---|---|
http://localhost:3001/ | 重定向到聊天界面 |
http://localhost:3001/chat.html | 聊天界面(自然语言) |
http://localhost:3001/mcp-app.html | 独立MCP应用程序UI |
http://localhost:3001/mcp | MCP协议端点(HTTP传输) |
端口默认为 3001.用覆盖 PORT 环境变量:
PORT=8080 npx tsx main.ts______________________________________________________________________
用法
1.聊天界面(推荐)
打开http://localhost:3001在您的浏览器中。键入自然语言问题:
- “搜索Monday Huddle报告”
- “搜索销售报告”
- “对报告GUID 2806F1C6运行奇偶校验分析…”
助理将:
- 通过搜索匹配的报告
search-reportsMCP工具 - 在嵌入式iframe中以交互式UI的形式呈现结果
- 提供运行完整的5信号奇偶校验分析
- 显示图表(置信度分布、奇偶校验状态)、可过滤表和信号雷达图表
聊天功能:
- 流式文本响应(SSE)
- 带有状态指示器的工具调用通知
- 用于工具结果的嵌入式交互式iframe(搜索结果、奇偶校验仪表板、信号详细信息)
- 可折叠的iframe部分
- 每个响应的成本和持续时间显示
- 常见查询的建议按钮
- 多回合对话上下文
2.克劳德桌面
添加到您的Claude Desktop MCP配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"parity-explorer": {
"command": "/absolute/path/to/node",
"args": [
"/absolute/path/to/node_modules/.bin/tsx",
"/absolute/path/to/pocs/mcp-app-parity-explorer/main.ts",
"--stdio"
],
"cwd": "/absolute/path/to/pocs/mcp-app-parity-explorer"
}
}
}重要提示: macOS上的Claude Desktop无法加载您的shell配置文件(.zshrcnvm等)。您必须使用 绝对路径 节点二进制文件和项目文件。使用查找节点路径which node或~/.nvm/versions/node/v20.x.x/bin/node.
保存后,重新启动Claude Desktop。您将看到4个可用的新工具:
search-reports--按名称或GUID搜索报告run-parity-analysis--带有交互式仪表板的完整5信号分析get-mapping-detail--特定指标/属性的信号分解get-parity-summary--聚合奇偶性统计
问克劳德:“搜索Monday Huddle报告”——结果以交互式MCP App iframe的形式显示。
3.MCP基本主机(开发人员测试)
这 基本主机 工具连接到HTTP传输进行测试:
npx @nicolo-ribaudo/mcp-basic-host http://localhost:3001/mcp注: 基本主机要求 JSON输入不是自然语言。对于search-reports,类型: ``json {"query": "Monday Huddle"}``
4.克劳德码(终端)
添加到您的工作区 .mcp.json:
{
"mcpServers": {
"parity-explorer": {
"command": "npx",
"args": ["tsx", "main.ts", "--stdio"],
"cwd": "/absolute/path/to/pocs/mcp-app-parity-explorer"
}
}
}注: Claude Code终端支持MCP工具,但 不 渲染MCP应用程序UI(iframe)。您将获得JSON数据,但没有交互式图表。
______________________________________________________________________
MCP应用程序客户端兼容性
| 客户端 | MCP工具 | MCP应用程序UI(iframe) |
|---|---|---|
| 克劳德桌面版 | 是 | 是 |
| ChatGPT | 是 | 是 |
| VS代码副本 | 是 | 是 |
| 鹅 | 是 | 是 |
| 邮递员 | 是 | 是 |
| 光标 | 是 | 否(仅限工具) |
| 克劳德代码(终端) | 是 | 否(仅限工具) |
| 克劳德·韦伯(Claude.ai) | 否 | 否(不支持MCP) |
| 聊天界面(此应用程序) | 是 | 是 |
______________________________________________________________________
MCP工具
search-reports
按名称(部分匹配)或GUID搜索MicroStrategy报告。
输入:
{ "query": "Monday Huddle" }输出: 具有GUID、名称、子类型和位置的匹配报告列表。在MCP应用程序UI中呈现为可点击的卡片。
run-parity-analysis
对报告中的所有指标和属性运行完整的5信号奇偶校验分析。
输入:
{ "guid": "2806F1C6ABCD1234EF567890ABCDEF12" }输出: 完整的分析仪表板,包括:
- KPI(总对象、已映射、覆盖率%、已确认、未映射)
- 置信度分布甜甜圈图
- 奇偶校验状态甜甜圈图
- 可排序/可过滤映射表
- 点击任意行查看信号雷达图和详细分解
get-mapping-detail
获取特定MSTR度量或属性的详细信号细分。
输入:
{ "guid": "METRIC_GUID_HERE" }输出: 具有所有5个信号得分、最佳PBI匹配和置信度分类的个体映射分析。
get-parity-summary
获取报告的聚合奇偶校验状态计数。
输入:
{ "guid": "REPORT_GUID_HERE" }输出: 报告中所有对象的奇偶校验状态(完成、计划、删除、未计划、未知)摘要。
______________________________________________________________________
项目结构
mcp-app-parity-explorer/
├── main.ts .................. Entry point (HTTP + stdio transports)
├── server.ts ................ MCP server definition (tools + UI resource)
├── chat.html ................ Chat interface HTML entry point
├── mcp-app.html ............. MCP App HTML entry point
├── package.json
├── tsconfig.json ............ Type checking (noEmit)
├── tsconfig.server.json ..... Server type declarations
├── vite.config.ts ........... Vite build config (singlefile plugin)
├── src/
│ ├── chat-api.ts .......... Chat API routes (SSE + tool execution)
│ ├── chat.ts .............. Chat client-side logic
│ ├── chat-styles.css ...... Chat UI dark theme
│ ├── mcp-app.ts ........... MCP App client-side logic (charts, tables)
│ ├── styles.css ........... MCP App styles
│ ├── signals.ts ........... 5-signal matching algorithm (S1-S5)
│ ├── tool-defs.ts ......... UI tool name registry
│ └── tool-handlers.ts ..... Shared tool logic (Neo4j, PBI scanner)
├── skills/
│ └── parity-mapping/ ...... Skill definition for Claude agents
│ ├── SKILL.md ......... Skill prompt and instructions
│ ├── evals/ ........... Evaluation configurations
│ ├── references/ ...... Neo4j schema, sample output, tuning guide
│ └── scripts/ ......... Python analysis tools
└── dist/ .................... Built output (git-ignored)
├── chat.html ............ Self-contained chat interface
└── mcp-app.html ......... Self-contained MCP App______________________________________________________________________
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 3001 | HTTP服务器端口 |
CLAUDE_PATH | claude | claude CLI二进制文件的绝对路径 |
MCP配置目录
聊天API诞生 claude 其CWD设置为包含以下内容的目录 .mcp.json。默认情况下,这是 ../../../asos-agentic-workflow 相对于 src/chat-api.tsThe .mcp.json 该目录中必须包含奇偶校验浏览器MCP服务器配置,以便Claude发现工具。
示例 .mcp.json:
{
"mcpServers": {
"parity-explorer": {
"command": "npx",
"args": ["tsx", "main.ts", "--stdio"],
"cwd": "/absolute/path/to/pocs/mcp-app-parity-explorer"
}
}
}PBI模型
奇偶校验分析从以下方面扫描Power BI语义模型定义:
{workspace_root}/asos-data-ade-powerbi/powerbi/models/*/database.json每 database.json 包含用于信号S2、S3、S4和S5的具有度量值(DAX表达式)和列(源映射)的表。
上游Neo4j(只读)
工具处理程序连接到提供只读Neo4j访问的上游MCP服务器。连接详细信息在 src/tool-handlers.ts。所有Cypher查询都会根据写操作块列表进行验证(CREATE, DELETE, SET, REMOVE, MERGE, DROP, DETACH).
______________________________________________________________________
故障排除
spawn claude ENOENT
这 claude 找不到CLI二进制文件。要么:
- 安装克劳德代码:
curl -fsSL https://claude.ai/install.sh | sh - 设置完整路径:
export CLAUDE_PATH="$HOME/.local/bin/claude"
聊天返回空响应
检查是否:
- Claude CLI已通过身份验证(
claude --version应该工作) - MCP配置目录存在并包含
.mcp.json - 不
CLAUDE*env变量正在干扰(服务器会删除它们,但检查是否有其他进程正在设置它们)
克劳德桌面:“服务器已断开连接”
常见原因:
- 节点版本太旧: Claude Desktop使用系统节点,而不是nvm。使用节点>=18的绝对路径。
- 相对路径: macOS GUI应用程序无法加载
.zshrc。在配置中始终使用绝对路径。 - 缺失
cwd: 这cwd字段是服务器查找其依赖关系所必需的。
MCP应用程序iframe显示为空白
- 确保
npm run build已运行(dist/必须包含mcp-app.html) - 检查浏览器控制台是否有错误(iframe沙盒、CSP违规)
- iframe通过以下方式接收数据
postMessage加载后延迟500ms——如果MCP App JS尚未初始化,数据可能会丢失。刷新页面。
未找到PBI型号
扫描仪寻找 asos-data-ade-powerbi/powerbi/models/ 相对于工作空间根。如果目录不存在,PBI索引将为空,信号S2-S5将没有可匹配的PBI候选者。S1(直接Neo4j映射)仍然有效。
______________________________________________________________________
技术栈
- 运行时间: Node.js+ TSX (TypeScript执行)
- MCP应用程序: @modelcontextprotocol/ext应用程序 (工具注册+UI资源)
- 图表: 自定义Canvas 2D(甜甜圈图、雷达图)——无外部图表库
- 聊天后端:
claudeCLI通过child_process.spawn随着--output-format stream-json
______________________________________________________________________
许可证
ISC
