agent-ecosystem/landing/product-docs/zh/guide/mcp-integration.md
777genius 95e0f34d31 docs(product-docs): add zh, es, ja, fr, de doc translations
Localize the VitePress docs into Simplified Chinese, Spanish, Japanese,
French and German (18 pages each), mirroring the existing en/ru structure.

- generate the 5 new locales in config.ts from a single strings table
  (nav, sidebar, search, footer, docFooter, outline, editLink) with
  locale-prefixed links
- rework DocsCardGrid from the binary isRu check to a per-locale map so
  the home cards render translated copy and prefixed links for every locale
2026-05-31 17:50:54 +03:00

225 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: MCP 集成 Agent Teams 文档
description: 在 Agent Teams 中配置 MCP用于看板操作、队友协作、外部工具服务器以及自定义工具开发。
lang: zh-Hans
---
# MCP 集成
Agent Teams 在两个实用层级上使用 MCP
| 层级 | 作用 | 使用者 |
| --- | --- | --- |
| 内置看板服务器 | 暴露 Agent Teams 的任务、消息、审查、进程、运行时以及跨团队工具 | 由应用启动的 lead 与队友 |
| 外部 MCP 服务器 | 添加可选工具,例如浏览器自动化、设计上下文、文档搜索或公司系统 | 用户与已配置的运行时 |
请将这两个层级分开看待。内置的 `agent-teams` MCP 服务器是智能体在 Agent Teams 内部进行协作的方式。外部 MCP 服务器则是可选的运行时工具。
## Agent Teams 如何注入 MCP
当桌面应用启动基于 Claude 的团队成员时,它会写入一个临时的 `--mcp-config` JSON 文件,其中包含内置的 `agent-teams` 服务器:
```json
{
"mcpServers": {
"agent-teams": {
"command": "node",
"args": ["/path/to/agent-teams-mcp/index.js"],
"env": {
"AGENT_TEAMS_MCP_CLAUDE_DIR": "/Users/you/.claude"
}
}
}
}
```
在开发环境中,该命令可能通过 `tsx` 指向 `mcp-server/src/index.ts`。在打包构建中,应用会将捆绑的 MCP 服务器复制到一个稳定的应用数据路径,并使用 Node 运行它。生成的文件归应用所有,并会尽力清理。
用户级和项目级的 MCP 服务器保持独立。应用从以下位置读取已安装的服务器:
| 范围 | 位置 |
| --- | --- |
| 用户 | `~/.claude.json` 中的 `mcpServers` |
| Claude 配置中的本地项目条目 | `~/.claude.json` 中的 `projects[projectPath].mcpServers` |
| 项目 | `<project>/.mcp.json` 中的 `mcpServers` |
对于属于某一个仓库的工具,优先使用项目范围。对于你要在多个不相关项目中复用的工具,优先使用用户范围。
## 项目 `.mcp.json` 示例
当一个团队应当看到相同的项目范围服务器时,将此文件放在项目根目录:
```json
{
"mcpServers": {
"docs-search": {
"command": "npx",
"args": ["-y", "@acme/docs-search-mcp"],
"env": {
"DOCS_INDEX_PATH": "./docs-index"
}
},
"local-browser": {
"command": "node",
"args": ["./tools/mcp/browser-server.js"]
}
}
}
```
不要把密钥放进已提交的 `.mcp.json` 文件。如果某个值必须保留在本地,请把凭据放在你的 shell、用户范围配置中或应用的自定义 MCP 安装流程中。
## 看板 MCP 工作流
当工作属于某个任务时,智能体应当使用看板 MCP 工具:
1. 读取最新的任务上下文。
2. 仅在真正开始工作时才启动任务。
3. 为阻塞项、计划和最终结果添加任务评论。
4. 在发布结果评论后将任务标记为完成。
5. 当 lead 或队友需要知道结果时,发送一条简短消息。
智能体流程示例:
```text
task_get -> task_start -> edit/test -> task_add_comment -> task_complete -> message_send
```
用直接消息进行协作。用任务评论保存持久的任务历史。
::: tip
如果该备注涉及审查、验证、变更范围或某个阻塞项,请把它放在任务上。
:::
## 内置 Agent Teams 工具
MCP 服务器从 `agent-teams-controller/src/mcpToolCatalog.js` 注册工具。注册循环位于 `mcp-server/src/tools/index.ts`,每个分组在 `mcp-server/src/tools/` 下有自己的文件。
常用运维工具:
| 工具 | 用途 |
| --- | --- |
| `task_get` | 读取最新的任务上下文、评论、附件、状态以及关联关系 |
| `task_start` | 在工作真正开始时将任务标记为 in progress |
| `task_add_comment` | 添加阻塞项备注、验证备注、计划以及最终结果摘要 |
| `task_complete` | 在发布最终结果评论后完成任务 |
| `message_send` | 向 lead、队友或用户发送一条可见的收件箱消息 |
| `review_request`、`review_start`、`review_approve`、`review_request_changes` | 推进任务范围的审查工作流 |
| `process_register`、`process_list`、`process_stop`、`process_unregister` | 跟踪队友拥有的开发服务器、监听器以及其他后台服务 |
工具名称在运行时可能带有 MCP 命名空间前缀,例如 `mcp__agent-teams__task_get`。在 MCP 服务器内部,规范的工具名称仍然是 `task_get`
## 注册一个新的内置工具
对于 Agent Teams 仓库的工作,请通过现有的 FastMCP 结构添加内置看板工具:
1. 将工具实现添加到 `mcp-server/src/tools/` 中匹配的文件,如果该领域确实是全新的,则创建一个新的分组文件。
2. 将工具名称添加到 `agent-teams-controller/src/mcpToolCatalog.js` 中相应的分组。
3. 仅在需要新的领域分组时,才通过 `mcp-server/src/tools/index.ts` 接入新分组。
4. 使用 `zod` 校验输入,并调用控制器 API而不是直接读取看板文件。
5.`mcp-server/test/tools.test.ts` 中添加针对性测试,或在传输层很重要时添加一个 e2e 用例。
最小结构:
```ts
server.addTool({
name: 'task_example',
description: 'Explain what this tool does for agents.',
parameters: z.object({
teamName: z.string().min(1),
claudeDir: z.string().min(1).optional(),
taskId: z.string().min(1)
}),
execute: async ({ teamName, claudeDir, taskId }) => {
assertConfiguredTeam(teamName, claudeDir);
const controller = getController(teamName, claudeDir);
return jsonTextContent(controller.tasks.getTask(taskId));
}
});
```
不要创建绕过控制器校验、改动无关团队文件,或在没有明确任务需要的情况下暴露宽泛文件系统/进程访问权限的工具。
## 外部 MCP 服务器
当队友需要一个持久的工具连接,而不仅仅是一次带粘贴上下文的提示时,请使用外部 MCP 服务器。
适用场景:
- 浏览器或网站测试工具
- 设计或产品数据工具
- 内部文档与搜索系统
- 问题跟踪或支持系统
- 使用只读凭据的数据库检查工具
不适用场景:
- 粘贴进提示的密钥
- 可以直接附加的一次性文件
- 未经审查就改动生产系统的工具
- 当更窄的项目范围已经足够时,却使用宽泛的本地文件系统访问
## 范围
Agent Teams 识别共享范围和面向项目的 MCP 范围。
| 范围 | 适用情形 |
| --- | --- |
| 用户或全局 | 同一个服务器应当在多个项目间可用 |
| 项目或本地 | 该服务器属于某一个仓库、工作区或团队上下文 |
优先选择仍能让工作流可用的最窄范围。项目范围的服务器在审查时更易于推理,因为该工具属于正在被修改的项目。
## 设置检查清单
在分配一个依赖某个 MCP 服务器的任务之前:
1. 安装或配置该服务器。
2. 确认它出现在应用针对目标范围的已安装 MCP 列表中。
3. 在可用时,从 MCP 注册表或扩展 UI 运行诊断。
4. 从一个低风险的只读任务开始。
5. 在任务描述或团队简报中提及预期的 MCP 工具使用方式。
如果某个服务器诊断失败,请先修复它。更好的任务提示并不能修复缺失的命令、错误的配置路径或被拒绝的凭据。
## 从应用安装自定义服务器
桌面应用通过 Electron IPC 暴露 MCP 注册表 API用于搜索、浏览、安装、自定义安装、卸载、读取已安装状态以及诊断。自定义安装会在调用运行时安装路径之前校验服务器名称、范围、项目路径、环境变量名以及 HTTP 标头。
当你有一个尚未进入注册表的 MCP 包时,使用自定义安装:
| 字段 | 示例 |
| --- | --- |
| 服务器名称 | `docs-search` |
| 范围 | `project` 表示此仓库,`user` 表示所有项目 |
| 类型 | `stdio` 表示本地命令,`http` 或 `sse` 表示远程服务器 |
| 包 | `@acme/docs-search-mcp` |
| 环境变量 | `DOCS_INDEX_PATH=./docs-index` |
安装后,运行诊断并创建一个小型的只读任务来验证工具界面,然后再分配更大的工作。
## 任务示例
```text
Audit the docs home page with the browser MCP. Check desktop and mobile widths, capture any layout issue as a task comment, and only edit landing/product-docs files. Run `pnpm --dir landing docs:build` before completion.
```
这之所以有效,是因为它指明了工具、操作界面、写入边界以及验证步骤。
## 安全规则
- 不要默认给每个队友都配上每一个 MCP 服务器。
- 除非审查需要,否则将具备写入能力的工具排除在宽泛团队之外。
- 检查类任务优先使用只读凭据。
- 把会影响生产的工具使用置于明确的任务评论和审查之后。
- 将 MCP 诊断失败视为设置失败,而非智能体失败。
- 避免在 `.mcp.json` 或提示中提交密钥。
- 通过应用安装项目范围服务器时,使用绝对路径的 `projectPath` 值。
- 不要编辑应用生成的 `agent-teams-mcp-*.json` 文件;它们是临时的启动产物。
## 相关指南
- [运行时设置](/zh/guide/runtime-setup)
- [团队简报示例](/zh/guide/team-brief-examples)
- [智能体工作流](/zh/guide/agent-workflow)
- [开发者](/zh/developers/)