内容
# 异步克劳德代理SDK-MCP
一个MCP服务器,允许编码代理作为异步子代理运行克劳德代理SDK会话。
`claude` 和 `claude-continue` 在后台回合被调度后立即返回。它们在克劳德工作时从不保持MCP请求打开。`claude-status` 是对内存会话状态的即时读取。
## 工具
### `claude`
启动一个新的克劳德会话,并立即返回一个包装器拥有的 `session_id`。
输入:
- `prompt`(必填):克劳德的任务;
- `model`(可选):克劳德模型覆盖;
- `effort`(可选):`low`、`medium`、`high`、`xhigh` 或 `max`;
- `cwd`(可选):会话的工作目录。
示例结果:
```json
{
"session_id": "0bd9d545-6016-4a5e-89b7-93f85a059f38",
"status": "running",
"turn": 1,
"message": "克劳德正在异步运行。MCP调用已完成。"
}
```
### `claude-continue`
在已完成的会话中启动另一个后台回合。它保留包装器 `session_id` 并恢复底层克劳德代理SDK会话。
输入:
- `session_id`(必填):由 `claude` 返回的句柄;
- `prompt`(必填):下一个提示。
在前一个回合正在运行或失败且未生成可恢复的克劳德会话时,继续操作将被拒绝。
### `claude-status`
返回当前状态而不等待更改。响应包括:
- 生命周期状态:`running`、`completed` 或 `failed`;
- SDK报告的底层克劳德会话ID;
- 克劳德报告的最新状态摘要和待办事项列表;
- 克劳德报告的与调用者相关的问题;
- 最新完成的结果或失败;
- Codex提供的原始Codex会话、线程和回合ID(如果提供)。
## 克劳德状态报告
每个克劳德运行都会收到一个具有两个工具的进程内MCP服务器:
- `report_status`:替换当前的待办事项列表并可选地记录当前焦点;
- `report_problem`:为调用者追加风险、阻塞器或失败。
这些工具仅更新会话状态并发送尽力而为的MCP日志通知。它们不会阻塞克劳德以等待调用者。当Agent SDK消息流中存在时,本地`TodoWrite`调用也会被捕获。
## 权限
默认权限模式为 `bypassPermissions`。这故意为克劳德在其环境中提供无限制的工具执行,并需要Agent SDK的 `allowDangerouslySkipPermissions` 确认。
通过设置 `ASYNC_CLAUDE_MCP_PERMISSION_MODE` 来更改它:
```bash
export ASYNC_CLAUDE_MCP_PERMISSION_MODE=default
```
接受的值包括 `default`、`acceptEdits`、`bypassPermissions`、`plan`、`dontAsk` 和 `auto`。
## 运行
在不全局安装的情况下运行最新发布的版本:
```bash
npx --yes @wyrd-company/async-claude-agentsdk-mcp
```
示例Codex配置:
```toml
[mcp_servers.async_claude]
command = "npx"
args = ["--yes", "--@wyrd-company:registry=https://registry.npmjs.org", "@wyrd-company/async-claude-agentsdk-mcp"]
```
服务器使用stdio并仅向stdout写入协议消息。克劳德代理SDK身份验证和设置从服务器进程环境继承。
显式作用域注册表在Codex配置中确保即使本地npm配置将 `@wyrd-company` 包路由到另一个注册表,也使用npmjs。
对于全局安装,请运行 `npm install --global @wyrd-company/async-claude-agentsdk-mcp` 并使用 `async-claude-agentsdk-mcp` 作为命令。
会话记录在内存中。它们在多个MCP工具调用和克劳德回合期间保持完整,只要stdio服务器保持运行,但它们在服务器重启后不保留。
## 发布
该包作为 `@wyrd-company/async-claude-agentsdk-mcp` 公开发布到npmjs和GitHub Packages。`Publish Package` GitHub Actions工作流验证发布,发布到npmjs并使用存储库的 `NPM_TOKEN` Actions机密提供出处,然后使用其 `GITHUB_TOKEN` 发布到GitHub Packages。
手动运行工作流或推送一个与 `package.json` 中的版本完全匹配的裸SemVer标签,例如 `0.1.0`。前缀为 `v` 的标签不会触发发布。
GitHub Packages发布继承了公共存储库的可见性和权限。首先发布npmjs允许在发布到GitHub Packages失败时重试作业,而无需再次尝试不可变的npmjs版本。
在创建npmjs包后,通过为 `publish-package.yml` 配置npm受信任的发布功能并从npmjs作业中删除 `NODE_AUTH_TOKEN`,以消除长期存在的发布令牌。
## 开发
```bash
npm install
npm test
npm run build
npm start
```