ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

如何用 MCP Server 把 Claude Managed Agents 接入 Claude Desktop 与 claude.ai?

如何用 MCP Server 把 Claude Managed Agents 接入 Claude Desktop 与 claude.ai? 如何用 MCP Server 把 Claude Managed Agents 接入 Claude Desktop 与 claude.ai【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooksclaude-cookbooks 仓库中的 cma-mcp 是一个薄 MCPModel Context ProtocolServer它把 Claude Managed AgentsCMA的 Sessions API 封装成 9 个 MCP 工具让你可以在Claude Desktop或claude.ai 网页版中直接启动、对话你所在 workspace 里已托管的 Managed Agent——就像调用本地工具一样。本文按两条路径走一遍完整接入流程Desktop 走 stdio本地进程claude.ai 网页走 Streamable HTTP部署后的公开 URL Bearer token。两条路径共用同一套工具定义区别只在你使用的客户端。准备工作两条路径共用在开始任何一条路径之前先完成这些一次性准备安装依赖。进入 cma-mcp 目录并用 Bun 安装cd managed_agents/cma-mcp bun install依赖版本见 package.jsonanthropic-ai/sdk要求^0.95.1README 中说明需 ≥ 0.95.1以及modelcontextprotocol/sdk和zod。创建 CMA environment一次性session 需要environment_idant beta:environments create --name cma-mcp \ --config {type: cloud, networking: {type: unrestricted}} --transform id -r执行后得到一个env_开头的 ID记下来两条路径都会用到。准备一个 API keysk-ant-开头和一个已存在的 Managed Agent。注意这个 MCP Server不创建 agent它只驱动你 workspace 里已经存在的 agentagent 的创建和更新要通过antCLI 或 Console 完成。在项目根目录建.env.local写入两个值sk-ant-...与env_...换成你自己的真实值ANTHROPIC_API_KEYsk-ant-... CLAUDE_ENVIRONMENT_IDenv_...这两个值在两条路径中都是必需的stdio 路径下 Desktop 的子进程不读你的 shell 环境变量必须在 Desktop 配置里显式传入见下文HTTP 路径下则作为部署 secrets 传入。路径一接入 Claude Desktopstdio本地这条路径下Claude Desktop 会把 MCP Server 作为子进程用 stdio 拉起入口是 src/server.ts。注册到 Claude Desktop。编辑~/Library/Application Support/Claude/claude_desktop_config.jsonmacOS 路径加入如下配置然后重启 Desktop{ mcpServers: { cma: { command: bun, args: [run, /absolute/path/to/managed_agents/cma-mcp/src/server.ts], env: { ANTHROPIC_API_KEY: sk-ant-..., CLAUDE_ENVIRONMENT_ID: env_... } } } }其中args里的路径必须替换成你本机上src/server.ts的绝对路径env块必须完整填写——stdio server 读不到你 shell 里的环境变量漏掉CLAUDE_ENVIRONMENT_ID会报CLAUDE_ENVIRONMENT_ID is required。测试。在 Desktop 新开一个对话输入list my managed agents, start a session with the first one, and relay this message to it: hello.预期行为是 Claude 依次调用list_agents→create_session→send_message→wait_for_idle然后把 CMA agent 的回复原样带回。如果你看到 CMA session 的回复内容出现在 Desktop 对话中说明接入成功。推荐配置 relay 模式的 Project instructions。没有引导时Desktop 里的 Claude 会试图自己回答而不是转发给后端 agent。在 Project 的 custom instructions 中放入You are a frontend for a backend Managed Agent reached via thecmaMCP tools. On the first user turn:list_agents(if needed) →create_session→send_message(user text verbatim)→wait_for_idle→ return thereplyverbatim. On subsequent turns:send_message→wait_for_idle. Do not answer from your own knowledge; do not paraphrase the backends reply. Ifwait_for_idlereturnsstatus: timeout, tell the user its still running and offer to keep waiting.路径二接入 claude.ai 网页版Streamable HTTP远程浏览器里的 claude.ai 无法启动本地进程所以 stdio 只适用于 Desktop / Claude Codeclaude.ai 走 HTTP 路径入口是 src/server-http.ts。工具集完全相同但服务运行在一个公开 URL 上claude.ai 以自定义 Connector 方式连接。生成访问 token并妥善保管——持有这个 token 的人可以驱动你的 agentexport CMA_MCP_TOKEN$(openssl rand -hex 32)本地先跑一遍测试时可用 ngrok / cloudflared 获得公开 URLbun run http # → :3000/mcp服务监听:3000/mcp。src/server-http.ts中 token 是强制的未设置CMA_MCP_TOKEN时进程直接抛错退出。部署。Dockerfile 面向 Fly / Railway / Render 部署 HTTP 路径基于oven/bun:1-slimEXPOSE 3000把ANTHROPIC_API_KEY、CLAUDE_ENVIRONMENT_ID、CMA_MCP_TOKEN三个值配置为部署平台的 secrets。Cloudflare Workers 也可行——WebStandardStreamableHTTPServerTransport是 fetch 原生的把process.env换成env、Bun.serve换成export default { fetch }即可。在 claude.ai 添加自定义 ConnectorSettings → Connectors → Add custom connector字段如下FieldValueNameCMAURLhttps://your-deploy/mcpAuthenticationBearer token → 你的CMA_MCP_TOKENURL 中的your-deploy替换为你实际部署得到的域名。注意Team / Enterprise 组织里通过 URL 添加 Connector 通常只有组织管理员能做——普通成员看到的是精选目录而非 URL 输入框。由管理员在 org 设置里加一次 URL token之后每位成员的 Connectors 列表里都会出现该 Connector 供启用。验证。先确认服务可达GET /health返回okBearer 鉴权只作用于/mcp路径。然后在 claude.ai 新开对话启用CMAconnector使用与 Desktop 相同的测试提问上一步的 list my managed agents…。九个工具与调用循环这套接入暴露的工具注册逻辑见 src/tools.tsToolCMA endpointlist_agents/get_agentGET /v1/agents[/{id}]create_sessionPOST /v1/sessionssend_message/interruptPOST /v1/sessions/{id}/eventsget_sessionGET /v1/sessions/{id}list_eventsGET /v1/sessions/{id}/eventsarchive_sessionPOST /v1/sessions/{id}/archivewait_for_idle流式读取…/events/stream直到 idle返回回复文本前八个是 CMA endpoint 的一对一封装wait_for_idle是唯一一个编辑器加工——因为 MCP 是请求/响应模型而 CMA 的完成事件是 SSE 流必须在一次工具调用内部把流阻塞到 idle。典型循环是每轮send_message→wait_for_idle。session_id是唯一的会话状态由create_session返回由 Claude 在后续每轮调用中传递MCP Server 本身无状态。wait_for_idle的timeout_sec参数范围 5–600默认 120。排查与限制现象文档给出的检查点Desktop 里看不到cma工具配置路径写错或 Desktop 进程找不到buncommand用bun的绝对路径。查看 Desktop 的 MCP 日志报CLAUDE_ENVIRONMENT_ID is requiredDesktop 配置里漏了 env 块——stdio server 不读 shell 环境wait_for_idle返回空replyagent 变 idle 但没有产出文本例如只做了工具调用。用list_events看完整日志每一轮都新开一个 sessionClaude 没有在轮次间传递session_id。收紧 Project instructionsclaude.ai Connector 显示 couldnt connectURL 错误、服务不可达、或 token 不匹配在 server 日志里查 401本地 HTTP server 返回 401运行bun run http的那个 shell 里没有export CMA_MCP_TOKEN另外三个需要知道的边界来自 skill.md长回合会撞上工具超时。wait_for_idle是阻塞的如果 CMA agent 跑了好几分钟大仓库 clone、大量工具调用MCP 客户端可能超时。两种缓解方式传更小的timeout_sec然后循环调用wait_for_idle超时时返回status: timeoutlast_event_id可再次调用或让 Claude 改轮询get_sessionlist_events(after_id...)。计费归属。所有 CMA 用量都计在 server 配置里那个ANTHROPIC_API_KEY上而不是 Desktop 用户自己的账号——这正是给非技术用户提供服务的用途所以该 key 所在 workspace 的额度要按实际用量规划。安全模型HTTP 路径。URL 是公开的bearer token 是ANTHROPIC_API_KEYCMA 配额前面唯一的闸门。不要不带 token 部署不要把 token 打进日志按普通 API key 一样轮换。刻意未暴露的 endpoint。agents.archive永久且不可撤销、agents.create/updateagent 的编写应在antCLI / Console 做、sessions.delete、environments.*破坏性基础设施操作、vaults.*/credentials.*密钥、sessions.resources.add。如果确有需求按 skill.md 的说法在src/cma.tssrc/server.ts里加几行即可。参考位置READMEQuickstart 与工具表skill.md两条路径的完整 checklist、relay 模式指令与调试表src/server.tsstdio 入口与 src/server-http.tsHTTP 入口 bearer 鉴权package.jsonbun run stdio、bun run http、bun run typecheck三个脚本Dockerfile部署镜像【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表