test/crg-mcp-plugin/README.md

69 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# crg-mcp — code-review-graph MCP 接入插件
把已部署在本机的 `D:\github-project\code-review-graph` MCP 服务接入 PI-Desktop,
让它的工具以原生 agent 工具的形式出现。**未修改该项目任何文件。**
## 接入原理
PI-Desktop 的 MCP 客户端由插件宿主承载:宿主读取插件 `manifest.json` 里的
`contributes.mcpServers`,自行拉起进程、完成 MCP 握手,并把上游每个工具发布为
`plugin_<插件id>_<server id>_<工具名>`。因此这里只需声明,无需自己写 JSON-RPC。
## 文件
| 文件 | 作用 |
| --- | --- |
| `manifest.json` | 声明 stdio MCP 服务 + `mcp.server.local` 权限 |
| `crg.cmd` | 启动包装脚本(修环境后 exec `python -m code_review_graph serve`) |
| `main.js` | 空加载器,客户端生命周期归宿主管理 |
| `dist/crg-mcp-1.0.0.piplug` | 可安装包 |
## 两个必须保留的环境修正
宿主的 `mcpProcessEnv()` 只向子进程传递
`PATH / SystemRoot / windir / TEMP / TMP / LANG`(加插件声明的 env),所以:
1. **`PYTHONPATH` 必须注入。** 项目的 editable 安装记录
`.venv\Lib\site-packages\_editable_impl_code_review_graph.pth` 指向
`D:\github_project\code-review-graph`(下划线),而项目实际位于
`D:\github-project\code-review-graph`(连字符),因此直接
`import code_review_graph` 会 `ModuleNotFoundError`。
同理 `.venv\Scripts\code-review-graph.exe` 也不能用
(`error: uv trampoline failed to canonicalize script path`)——包装脚本绕过了
这两点,改用 `python -m code_review_graph`。
2. **`USERPROFILE` / `HOMEDRIVE` / `HOMEPATH` 必须补齐。**
`code_review_graph/constants.py` 在 import 期调用 `Path.home()`,
精简环境下会抛 `RuntimeError: Could not determine home directory.`
## 暴露的工具(10 个)
默认通过 `CRG_TOOLS` 只开放审查相关的 10 个工具(上游共 30 个,全开会显著占上下文):
`build_or_update_graph_tool`、`run_postprocess_tool`、`get_minimal_context_tool`、
`get_review_context_tool`、`get_impact_radius_tool`、`query_graph_tool`、
`semantic_search_nodes_tool`、`detect_changes_tool`、`list_graph_stats_tool`、
`get_affected_flows_tool`
工具名前缀为 `plugin_crg_mcp_crg_`,例如 `plugin_crg_mcp_crg_query_graph_tool`。
### 调整暴露范围 / 目标仓库
编辑 `crg.cmd`:
- 改 `CRG_TOOLS=...`:改工具白名单(置空并删除该行 = 暴露全部 30 个)。
- 改 `CRG_REPO=...`:改被分析的仓库根目录(默认指向 code-review-graph 自身,
即已建好图的那个库)。
改完重启 PI-Desktop 生效。
## 为何用 stdio 而不是 HTTP
`serve --http`(127.0.0.1:5555/mcp)实测可用,但宿主只负责 spawn,不会托管一个
常驻服务;HTTP 需要外部进程守护,进程一掉工具就全空。stdio 由宿主拉起并在每次
调用时自动重连握手,更稳。
## 校验方式
装好后对 agent 说“用图谱统计一下仓库规模”,应命中
`plugin_crg_mcp_crg_list_graph_stats_tool` 并返回节点/边数量。