# 本项目新增 MCP 工具配置指南 > 最后更新:2026-04-26 > 适用目录:`/Users/jojo/Desktop/agents/正在修复中/agents` 本文面向后续维护者,说明如何在当前项目里新增并接入一个 MCP 工具(MCP Server)。 --- ## 1. 先了解本项目里的 MCP 架构 当前实现是「**本项目作为 MCP 客户端桥接层**」: 1. 在后台配置一个或多个 MCP Server(stdio / streamable_http) 2. 系统通过 `tools/list` 拉取远端工具 3. 本地自动生成工具别名:`mcp____` 4. 模型调用该别名时,桥接层转发到对应服务的 `tools/call` 5. 对于同一服务,桥接层会复用长连接会话(避免每次调用都重启 MCP 进程),并处理常见 Server→Client 请求(如 `ping`、`roots/list`) 内置了一个原生工具: - `list_mcp_servers`:查看服务、缓存工具和别名映射(可选刷新) --- ## 2. 配置入口(推荐) ### 2.1 管理后台入口(推荐) - 打开:`/admin/policy` - 页面中的「**MCP 服务配置(统一工具扩展)**」区域可做增删改查、同步工具 ### 2.2 个人空间入口(宿主机管理员) - 个人空间里有单独的「**MCP 配置**」入口 - 仅在 **宿主机模式 + 管理员** 时显示 - 点击后会跳转到 `/admin/policy` > 管理 API 受管理员权限和二级密码校验保护,建议优先使用页面配置,不建议直接手改请求。 --- ## 3. 第一步:先写一个可运行的 MCP Server 仓库已有可直接参考的测试服务: - `/Users/jojo/Desktop/agents/正在修复中/agents/scripts/mcp_calculator_server.py` 这个示例使用 stdio,支持: - `initialize` - `tools/list` - `tools/call` 如果你写新服务,至少要保证上述 3 个方法可用。 --- ## 4. 第二步:在后台新增服务配置 在 `/admin/policy` 的 MCP 区域点击“新增 MCP 服务”,填写核心字段: - `id`:必须以字母开头,仅允许字母/数字/`_`/`-` - `transport`:`stdio` 或 `streamable_http` - `enabled`:是否启用 - `timeout(s)`:调用超时 ### 4.1 stdio 示例 - `transport`: `stdio` - `command`: `python3`(或绝对路径) - `args`: 每行一个参数(常见是服务脚本绝对路径) - `cwd`: 可选 - `env`: 可选 JSON 示例: ```json { "id": "calc_stdio", "name": "Calculator MCP", "enabled": true, "transport": "stdio", "command": "python3", "args": ["/abs/path/scripts/mcp_calculator_server.py"], "timeout_seconds": 12 } ``` ### 4.2 streamable_http 示例 ```json { "id": "my_http_mcp", "name": "My HTTP MCP", "enabled": true, "transport": "streamable_http", "url": "http://127.0.0.1:8000/mcp", "headers": { "Authorization": "Bearer " }, "timeout_seconds": 25 } ``` ### 4.3 可选过滤 - `include_tools`:仅放行这些工具名 - `exclude_tools`:屏蔽这些工具名 --- ## 5. 第三步:同步工具缓存 保存后点击: - “同步工具”(单服务) - 或“同步全部工具” 同步成功后会写入缓存字段(页面可见): - `tools_cache_count` - `tools_cache_updated_at` - `last_error` --- ## 6. 第四步:在对话里验证是否接入成功 让模型先调用 `list_mcp_servers`(可 `refresh=true`),确认: 1. 目标服务在列表中 2. `tools_cache_names` 有你新工具 3. `tool_aliases` 已生成(通常是 `mcp__...`) 再让模型调用对应别名工具即可。 --- ## 7. 环境变量(可选) 见 `.env.example`: - `MCP_TOOLS_ENABLED=1` - `MCP_SERVERS_FILE=./data/mcp_servers.json` - `MCP_PROTOCOL_VERSION=2025-06-18` - `MCP_DEFAULT_TIMEOUT_SECONDS=25` 默认配置文件是运行态文件: - `/Users/jojo/Desktop/agents/正在修复中/agents/data/mcp_servers.json` --- ## 8. Docker 模式下的 stdio MCP(重要) 当前策略已收敛为:**MCP 仅在宿主机模式支持**。 当会话运行在 docker 模式时: 1. 调用 `list_mcp_servers` 会直接返回:`当前为docker模式,MCP仅支持宿主机模式`。 2. 调用任意 `mcp__...` 工具别名也会返回同样提示。 3. 不再在 docker 模式执行 MCP 服务同步与调用。 如果需要使用 MCP,请先切换到宿主机模式后再进行配置/调用。 --- ## 9. 常见问题排查 1. **服务保存失败** - 检查 `id` 格式、transport 必填项(stdio 要 `command`,HTTP 要 `url`) 2. **同步失败 / 无工具** - 看 `last_error` - 检查服务是否能独立启动 - 检查 `include_tools/exclude_tools` 3. **工具在页面有,但模型看不到** - 确认服务 `enabled=true` - 确认管理策略没禁用 MCP 分类 - 重新“同步工具”后再试 4. **调用时报超时** - 提高 `timeout_seconds` - 优化 MCP Server 响应速度 --- ## 10. 关键代码位置(便于二次开发) - MCP 配置:`/Users/jojo/Desktop/agents/正在修复中/agents/config/mcp.py` - 服务注册表:`/Users/jojo/Desktop/agents/正在修复中/agents/modules/mcp_server_registry.py` - MCP 客户端桥接:`/Users/jojo/Desktop/agents/正在修复中/agents/modules/mcp_client_manager.py` - 管理 API:`/Users/jojo/Desktop/agents/正在修复中/agents/server/admin.py` - 工具定义/执行: - `/Users/jojo/Desktop/agents/正在修复中/agents/core/main_terminal_parts/tools_definition.py` - `/Users/jojo/Desktop/agents/正在修复中/agents/core/main_terminal_parts/tools_execution.py` - 管理端页面:`/Users/jojo/Desktop/agents/正在修复中/agents/static/src/admin/PolicyApp.vue` - 测试示例服务:`/Users/jojo/Desktop/agents/正在修复中/agents/scripts/mcp_calculator_server.py`