跳转到内容

MCP 连接器

repo-harness 自带一个 MCP server,给 ChatGPT 和 Codex 对你已注册仓库的只读访问——既包括工作流文件,也包括仓库目录树、文本搜索和文件内容——同时写入仍限定在工作流产物(计划、sprint、契约、handoff)范围内。ChatGPT 通过一个公开的 /mcp 端点经由 HTTP 加 OAuth 连接;Codex 在本地通过 stdio 连接,无需隧道。这个 sidecar 不是远程编码 agent——它为本地 agent 宿主准备工作流产物。

一个已采用的仓库

在一个已经运行过 repo-harness adopt 的仓库中运行。见 安装

PATH 上有 repo-harness

repo-harness CLI 必须已安装,并能在你的 shell PATH 上解析到。

ChatGPT Developer Mode

一个能访问 Developer Mode 和自定义 MCP Connector 的 ChatGPT workspace。

一个公开的 /mcp 端点

用于 ChatGPT 长期使用的稳定公开 HTTPS /mcp URL。本地 Codex 使用 stdio,无需隧道。

  1. 在 localhost 上以 planner profile 通过 HTTP 启动 server:

    Terminal window
    repo-harness mcp serve --repo . --transport http --host 127.0.0.1 --port 8765 --profile planner
  2. 确认它健康:

    Terminal window
    curl http://127.0.0.1:8765/health
  3. 读取本地 OAuth 口令——ChatGPT 在授权时会问你要:

    Terminal window
    jq -r .passphrase .repo-harness/mcp.oauth.json
  4. 冒烟测试 OAuth 发现:

    Terminal window
    curl http://127.0.0.1:8765/.well-known/oauth-protected-resource/mcp

ChatGPT 需要一个以 /mcp 结尾的公开 HTTPS URL。长期使用时优先用稳定的主机名——quick tunnel 的 URL 会变,而 ChatGPT 会把每个新 URL 当成不同的 Connector 应用。

Terminal window
cloudflared tunnel login
cloudflared tunnel create repo-harness-mcp
cloudflared tunnel route dns repo-harness-mcp repo-harness-mcp.example.com
cloudflared tunnel run --url http://127.0.0.1:8765 repo-harness-mcp

然后把稳定端点记录到被忽略的本地配置里:

Terminal window
repo-harness mcp setup chatgpt --repo . --endpoint <https-url>/mcp
  1. 打开 ChatGPT Settings
  2. 如果你的 workspace 暴露了 Developer Mode,启用它。
  3. 进入 Connectors
  4. 创建一个名为 repo-harness 的 Connector。
  5. 粘贴以 /mcp 结尾的 HTTPS Connector URL。
  6. 把 Connector 认证配置为 OAuth
  7. 点击 Scan Tools
  8. 当授权页面打开时,输入 .repo-harness/mcp.oauth.json 中的口令。
  9. 等待工具扫描完成,然后创建该 Connector。
  10. 保持 write confirmations enabled

Codex 在本地运行,不需要隧道——它直接讲 stdio。自动生成配置:

Terminal window
repo-harness mcp setup codex --repo . --scope project

这会写出 .codex/config.toml,其中含一个 stdio 的 repo_harness server 条目和允许的工具列表。

Terminal window
repo-harness mcp serve --repo . --transport http --host 127.0.0.1 --port 8765 \
--profile orchestrator --enable-dev-runner --dev-runner-agents codex

或者通过环境变量覆盖:

Terminal window
REPO_HARNESS_MCP_DEV_RUNNER=1 REPO_HARNESS_MCP_DEV_RUNNER_AGENTS=codex,claude \
repo-harness mcp serve --repo . --transport http --profile orchestrator

启用后,server 会暴露 run_agent_goal。它读取 .ai/harness/handoff/codex-goal.md,并通过允许的本地 CLI 运行那个固定的 handoff。它不是任意 shell。

planner profile 以读为主:它能读取你已注册的仓库,并且只写入规划产物——绝不会碰应用源码、manifest、lockfile、CI 配置、密钥,或允许的仓库根目录之外的文件。

  • 工作流读取: harness_statusharness_doctorread_workflow_filelist_workflow_fileslatest_handofflatest_checks
  • 仓库读取(只读): reader_statuslist_allowed_rootsopen_workspacetreesearch_textread_text——浏览和搜索整个仓库,而不仅仅是工作流文件
  • 规划写入: write_prd_from_ideawrite_checklist_sprintprepare_codex_goal_from_sprint

即使开启了仓库读取,deny glob 仍然生效:.env、私钥、SSH 密钥、凭据、密钥、.git,以及依赖和构建产物永远不会被返回。

一个 Connector 就能服务你采用过的每一个仓库。repo-harness adoptrepo-harness init 会把仓库注册到 ~/.repo-harness/registered-repos.jsondiscover_harness_repos 列出它们,读取工具接受一个 repo_path 来指定具体仓库。全盘读取已弃用——遗留的 fullDiskRead: true 现在会fail closed;额外的非仓库根目录要用 --allow-root 显式添加。

User-scope 设置(repo-harness mcp setup chatgpt 不带 --repo,把配置和认证存放在 ~/.repo-harness/ 下)适用于 Developer Mode 部署。HTTP 认证支持 OAuth——带 offline_access 的 refresh-token 轮换——以及一个 url-token 兼容模式。

预期的规划链路:idea → write_prd_from_ideawrite_checklist_sprintprepare_codex_goal_from_sprint → 本地 Codex /goal 执行。

  • 如果 ChatGPT 连不上,确认隧道 URL 是 HTTPS 且以 /mcp 结尾。
  • 如果 ChatGPT 返回未授权,确认 OAuth 发现正常,并重新走一遍口令流程。
  • 如果工具缺失,重启 repo-harness mcp serve 并重新扫描工具。
  • 如果写入失败,确认目标路径是 PRD、sprint、plan 或已批准的 handoff 文件。
  • 如果 ChatGPT 生成的是 prose 而不是 checklist 形式的 Sprint task card,让它使用 write_checklist_sprint
  • 如果 Codex 看不到 server,运行 repo-harness mcp setup codex --repo . --scope project