agent-Specialization/docs/mcp-tool-config-guide.md

201 lines
5.6 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.

# 本项目新增 MCP 工具配置指南
> 最后更新2026-04-26
> 适用目录:`/Users/jojo/Desktop/agents/正在修复中/agents`
本文面向后续维护者,说明如何在当前项目里新增并接入一个 MCP 工具MCP Server
---
## 1. 先了解本项目里的 MCP 架构
当前实现是「**本项目作为 MCP 客户端桥接层**」:
1. 在后台配置一个或多个 MCP Serverstdio / streamable_http
2. 系统通过 `tools/list` 拉取远端工具
3. 本地自动生成工具别名:`mcp__<server_id>__<tool_name>`
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 <token>"
},
"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`