内容
# corpus-mcp
一个 [MCP](https://modelcontextprotocol.io) 的_stdio服务器,暴露 [Corpus](https://github.com/jcosta33/corpus) 的读取和协调事实给代理客户端(Claude Desktop,Cursor)——这样代理可以在任务中途询问Corpus _“我的范围_,_“缺少什么证据?”_,_“审查者过什么?”_ —— **无需声明任务完成**。
## 它是什么 - 它不是什么
corpus-mcp 是在 `corpus` 命令行工具的 `--json` 接口上的一个**薄适配层**。它使用固定参数启动 `corpus <cmd> --json`,并将输出重塑为MCP工具、资源和提示。它**不**导入corpus-cli的内部实现,不运行模型循环,不写入持久化产物,也不发出裁决。
- **仅协调**。每个工具结果都noVerdued: true`;资源直接提供命令行工具的 `--json` 数据(同样没有裁决,只是未包装)。corpus-mcp 提供事实(覆盖范围缺口、超出范围的更改、空证据Pass行、自报告不匹配)和派生的**人类关注**列表;人类或独立审查者负责Pass / Fail / Unverified / Blocked结果。空或弱证据Unverified,无论协调是否干净。
- **根目录限制**。它只在配置的工作区根目录内读取;每个输入在子进程运行前都会被验证。文件路径是实路径限制的(无 `..`,无绝对路径逃逸,无符号链接逃逸);id/stem必须是一个安全的段;git基准必须是无引用。
- **多个库,而不是框架**。它仅通过公共 `--json` 接口与corpus-cli耦合,因此corpus-cli保持其最小占用空间,每个部分都保持独立有用。
## 运行它
```jsonc
// Claude Desktop / 配置
{
"mcpServers": {
"corpus": {
"command": "corpus-mcp",
"args": ["--workspace", "/path/to/your/corpus-workspace"],
},
},
}
```
配置:`--workspace <path>` / `CORPUS`(工作区根目录);`--corpuspath>` / `CORPUS_BIN`(`corpus`二进制文件,默认为PATH上的`corpus`)。需要安装pus` 命令行工具](https://github.com/jcosta33/corpus-cli)。
上面的 `corpus-mcp` 命令解析为此包的二进制文件。要从源代码安装,直到发布版本可用:
```sh
git clone https://github.com/jcosta33/corpus-mcp && cd corpus-mcp
pnpm install && pnpm build && npm link # 在PATH上暴露corpus-mcp(运行构建的dist/)
```
Node.js:发布/构建安装需要 Node.js ≥ 18.18;从源代码检出运行(无 `dist/`)需要 Node.js ≥ 22.6(它在运行时类型)。
## v0 接口(只读)
- **10)**。协调/检查:`corpus_get_status`corpus_check_workspace`,`corpus_check_file`,pus_scan_task`,`corpus_reconcile_review`,pus_validate_review_packet`。解析产物加载器:`corpus_get_task`,`corpus_get_spec`,`corpus_get_review`,`corpus_get_checks`。
- **资源(7)**。固定:`corpus://workspace`,`corpus://status`,`corpus://checks`。模板化:`corpus://tasks/{id}`,`corpus://specs/{id}`,`corpus://reviews/{id}`,`corpus://findings/{id}`。
- **提示(5)**。`corpus_task_briefing`corpus_before_done`(实现者 - _不得批准自己的工作_),`corpus_review_assistant`(独立 - _伪造,不要信任_),`corpus_evidence_rule`,`corpus_finding。在完成前/审查不对称是故意的:没有提示授予裁决权。
```sh
pnpmpnpm gate # 类型检查 + lint + 覆盖率(强制阈值)+
```
状态:**v0** —— 在 `corpus` 命令行工具的 `--json` 接口上的完整读取 + 协调接口。它仅通过该公共接口与corpus(记录在 [corpus ADR-0085](https://github.com/jcosta33/corpus/blob/main/docs/adrs5-corpus-mcp-ad-the-json-contract.md) 中),因此corpus-cli保持其最小占用空间,每个部分都保持独立有用。