本地 MCP 服务器
应用可以开一个只监听本机的 JSON-RPC 服务,让本地 Agent 读取仓库状态。默认关闭,需要时在「设置 → 高级 → 本地自动化(MCP)」里启用。
网络边界
- 只绑定
127.0.0.1,不接受外部网卡连接; - 只接受
POST /mcp;请求体上限 1 MiB; Host必须是127.0.0.1、localhost或::1;- 未知方法、未知工具直接拒绝。
端点与端口在设置里可见,默认端口 47123,可改为 1024–65535 之间的值;改端口会重启服务器。
令牌
- 每个请求都必须带
Authorization: Bearer <token>; - 令牌由加密随机数生成,保存在系统凭据库,不写入设置文件,也不进日志;
- 可以在设置里显示、复制与轮换;轮换后旧令牌立即失效。
读取工具
读取工具不改变仓库状态,可以随时调用:
状态、diff、日志、分支、远端、Stash、文件搜索、文件读取、blame、标签、提交详情,以及两个版本之间的 diff。
每次调用都有边界:
| 项目 | 上限 |
|---|---|
| 单次调用时限 | 30 秒 |
| diff | 512 KiB |
| 单文件读取 | 256 KiB |
| 日志 | 100 条提交 |
| blame | 1000 行 |
| 搜索 | 500 条匹配 |
超出部分会被截断,而不是让响应无限增长。
写操作需要逐次批准
目前只有三个变更动作:git.fetch、index.stage、index.unstage。
调用它们时不会立即执行,而是返回 approval_required 与一个审批 ID,并把动作排队最多两分钟:
- 应用在主线程弹出确认框,写明仓库、动作与路径或远端;
- Agent 也可以用
approval.resolve回答同一个请求; - 拒绝、超时、未知 ID 与重放都不会执行任何操作;
- 动作与结果会写进日志,令牌不会。
能拿到令牌的 Agent 也能用 approval.resolve 自行回答同一个请求,所以弹窗只是让你看见调用,不是阻止 Agent 自我确认。令牌只应交给你信任的 Agent。
当前不提供
- 创建或修改文件的工具;
- 按客户端划分的令牌权限;
- 流式响应(返回单个 JSON 响应)。
与其他功能的区别
MCP 是给本地 Agent 的接口,不是给 ACP Agent 用的通道;两者互不依赖。ACP 的只读策略见 ACP Agent。
最后更新于