内容
# mcp-delegate
一款**无依赖的MCP服务器**,允许您从**Claude Desktop**中使用
[delegate-skills](https://github.com/amElnagdy/delegate-skills) 委托循环
(`codex-delegate` / `opencode-delegate`)- 这样您可以在桌面聊天中说
“委托此任务给codex”,并运行它,然后查看差异并提交,
就像在Claude Code中一样。
## 为什么
Claude Desktop **不是** Claude Code。它不自动从
`~/.claude/skills/` 或 `~/.agents/skills/` 加载技能 — Desktop仅通过 **MCP服务器**扩展。
`mcp-delegate` 是桥梁:它包装现有的委托技能中继(无新逻辑)并
向Desktop公开四个工具。
## 向Claude Desktop公开的工具
| 工具 | 功能 |
| ------------ | -------------------------------------------------------------------------------------------- |
| `delegate` | 将简短的描述发送给codex/opencode,返回结构化的 `result.json`。 |
| `read_result`| 重新读取运行的 `result.json` (默认为最近的运行)。 |
| `git_diff` | 显示存储库的工作树差异(实施者更改了什么)。 |
| `git_commit` | 提交验证过的工作 — “land it”步骤。只有在审查 + 重新运行网关后。 |
## 先决条件
- **Node 18+** 和 **git** 在您的PATH上。
- **delegate-skills 已安装** (此服务器包装的中继):
```bash
npx --yes skills add amElnagdy/delegate-skills -a claude-code -a codex -a opencode -g --copy -y
```
- **codex 和/或 opencode CLI** 已安装并经过身份验证
(`codex login`, `opencode auth login`)。
- **Claude Desktop** 已安装并运行过一次。
## 安装
```bash
# 1. 添加此技能(将SKILL.md + server.mjs + wire-config.mjs复制到您的技能目录):
npx --yes skills add AhmedMohamedAbdEllatif/mcp-delegate -a claude-code -g --copy -y
# 2. 将服务器连接到Claude Desktop(幂等;保留其他配置):
node ~/.claude/skills/mcp-delegate/wire-config.mjs
# 3. 重启Claude Desktop。查找“delegate”服务器(4个工具)。
```
`wire-config.mjs` 将以下内容添加到 `claude_desktop_config.json` (它找到自己的兄弟节点
`server.mjs`,因此它适用于任何安装路径):
```json
"mcpServers": {
"delegate": { "command": "<node>", "args": ["<…/mcp-delegate/server.mjs>"] }
}
```
手动安装(无需 `skills` CLI):将 `server.mjs` 和 `wire-config.mjs` 复制到任意稳定位置,
然后从该目录运行 `node wire-config.mjs`。
## 用法(在桌面聊天中)
您不需要输入斜杠命令 - 只需用普通语言询问:
> 委托此任务给codex,在 `/path/to/repo` 中:添加一个JSDoc注释到索引导出。
> 不要提交。然后给我看差异。
Claude Desktop 将调用 `delegate`,显示结果 + 影响的文件,然后调用 `git_diff` 进行
审查。在您自己重新运行项目网关后,它可以调用 `git_commit`。
### `delegate` 参数
`brief` (必填),`repo` (必填,绝对路径),`cli` (`codex` | `opencode`,默认为
`codex`),`model` (codex可选;**opencode新运行必填**,作为 `provider/model`),
`read_only`,`resume_last`,`timeout` (例如 `2h`),
`skip_git_repo_check` (仅限codex;对于不在codex信任列表上的目录)。
## 信任立场
- **无依赖** (仅限Node内置模块)。
- **不进行网络调用**,**不读取/写入凭证**,**不发送遥测数据**。
- **仅限** 调用 `node <relay.mjs>` 和 `git`。它不能运行任意shell。
- 它启动的中继调用 `codex` / `opencode`,它们 **确实** 进行身份验证 —
正如它们在终端上所做的那样。 在连接前请阅读 [`server.mjs`](./server.mjs)。
## 注释 / 限制
- `delegate` **阻塞** 直到实施者完成(数分钟到数小时)。传递 `timeout`
(例如 `2h`)来限制它,或在Desktop中取消工具调用。
- 对于 **opencode新运行**,`model` 是必填的(`provider/model`)。
- 对于多小时的运行,更倾向于自己从终端启动中继,然后让Desktop
调用 `read_result` / `git_diff` / `git_commit` 以对抗该运行的输出目录。
- 中继 **从不提交** — 协调器(Desktop,通过 `git_commit`)在
审查差异并重新运行网关后执行此操作。
## 故障排除
- **重启后桌面上没有`delegate`服务器** — 确认 `wire-config.mjs` 已写入
`mcpServers.delegate` 并且 `command` 节点路径已解析;检查Desktop的开发者日志。
- **运行失败,返回 `401 token_invalidated`** — codex/opencode身份验证过期;重新运行
`codex login` (或 `opencode auth login`)并再次委托。
- **`relay not found for cli "…"`** — delegate-skills 未安装在任何搜索的技能
目录中;安装它(参见先决条件)。
## 鸣谢与许可
灵感来自并建立在 [amElnagdy/delegate-skills](https://github.com/amElnagdy/delegate-skills) 的基础上。
MIT — 请参阅 [LICENSE](./LICENSE)。