Skip to content

Commit ebbb831

Browse files
committed
feat: 实现MCP服务以统一业务逻辑和状态管理
- 新增 mcp_service 文件,移除原本的 src/agents/common/mcp.py,所有功能合并到mcp_service,MCP服务来处理服务器配置的增删改查操作、数据库与缓存之间的同步以及MCP客户端和工具的管理。 - 将重构的 MCP 和现有智能体做适配,引入全局缓存和状态管理机制用于MCP服务器和工具。 - 数据库表更新,在MCPServer模型中为StdIO传输类型添加了command和args字段。 - 其他代码优化、增强样式以提升用户体验和可读性。
1 parent 51b7824 commit ebbb831

File tree

14 files changed

+1018
-622
lines changed

14 files changed

+1018
-622
lines changed

docs/latest/advanced/agents-config.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ async def get_graph(self):
106106

107107
系统会根据配置自动组装工具集合,涵盖知识图谱查询、向量检索生成的动态工具、MySQL 只读查询能力、Tavily 搜索以及所有注册的 MCP 工具。
108108

109-
工具的启用状态和描述由配置文件或环境变量决定,当依赖缺失时会被中间件自动忽略,从而避免在图中加载不可用能力。MCP Server 的接入方式保持不变,只需在 `src/agents/common/mcp.py``MCP_SERVERS` 中填入服务地址与 `transport` 类型,如需更多范式可参阅 LangChain 官方文档。
109+
工具的启用状态和描述由配置文件或环境变量决定,当依赖缺失时会被中间件自动忽略,从而避免在图中加载不可用能力。MCP Server 的接入方式保持不变,只需在 `src/services/mcp_service.py``MCP_SERVERS` 中填入服务地址与 `transport` 类型,如需更多范式可参阅 LangChain 官方文档。
110110

111111
### MCP 服务器配置方式
112112

@@ -198,23 +198,25 @@ MCP_SERVERS = {
198198

199199
### 动态工具加载
200200

201-
系统支持动态加载 MCP 工具:
201+
系统提供统一的 MCP 服务层 (`src/services/mcp_service.py`) 封装所有 MCP 相关操作。
202+
203+
#### 智能体获取工具(自动过滤禁用工具)
204+
205+
智能体应使用 `get_enabled_mcp_tools()` 获取工具,该函数会自动过滤 `disabled_tools` 中的工具:
202206

203207
```python
204-
from src.agents.common.mcp import get_mcp_tools, add_mcp_server
208+
from src.services.mcp_service import get_enabled_mcp_tools, add_mcp_server
205209

206-
# 获取特定服务器的工具
207-
tools = await get_mcp_tools("sequentialthinking")
210+
# 获取指定服务器的工具(自动过滤 disabled_tools)
211+
tools = await get_enabled_mcp_tools("sequentialthinking")
208212

209213
# 动态添加新的 MCP 服务器
210214
add_mcp_server("custom-server", {
211215
"url": "https://your-mcp-server.com/mcp",
212216
"transport": "streamable_http"
213217
})
214-
215-
# 获取所有 MCP 工具
216-
all_tools = await get_all_mcp_tools()
217218
```
219+
218220
### MySQL 数据库
219221

220222
在 数据库报表助手(SqlReporterAgent) 中,可以通过配置下面环境变量,让 Agent 能够连接到 MySQL 数据库。并通过执行 SQL 查询,获取数据库中的数据。

docs/latest/intro/quick-start.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ $env:HTTPS_PROXY="http://IP:PORT"
170170

171171
如果已配置代理但构建失败,尝试移除代理后重试。
172172

173+
如果出现,FetchError: request to https://registry.npmjs.org/npm failed, reason: connect ECONNREFUSED 127.0.0.1:7890
174+
175+
新建一个终端重新执行,并确保没有代理干扰。
176+
173177
</details>
174178

175179
<details>

0 commit comments

Comments
 (0)