MCP 接入
源码版本v2026.7.20
职责
MCP(Model Context Protocol)是连接外部工具/数据源的通用协议。Hermes 既作为 MCP client 消费外部 MCP server 暴露的工具(经 mcp_tool 桥接进 ToolRegistry),也可作为 MCP server(mcp_serve.py)把自身工具暴露给其他 agent 客户端。这层让 Hermes 能无限接入第三方能力。
关键文件
tools/mcp_tool.py— MCP client 桥接:把外部 MCP server 的工具注册进 ToolRegistrymcp_serve.py— Hermes 作为 MCP server 暴露自身工具(仓库根)registry.register:365-436— MCP 桥接的工具最终走同一注册路径register_plugin_override_policy:316-365— 控制 MCP/插件工具的命名空间准入optional-mcps/ 目录— 可选的 MCP server 实现
数据流
- 启动期(或运行期热加载)读 MCP 配置,
mcp_tool连接外部 MCP server。 - 拉取 server 暴露的工具清单,逐个经
registry.register:365注册为ToolEntry(命名空间隔离,避免与内置工具冲突)。 - 命名空间准入由
register_plugin_override_policy:316控制。 - 主循环像对待内置工具一样收集 schema、分发 tool_call、回填结果。
- 反向:Hermes 可经
mcp_serve.py把自身工具暴露给其他 MCP client,供编辑器/其他 agent 调用。
小结
MCP 是 Hermes 的「能力外接总线」。mcp_tool 让外部工具无缝进入统一工具池,mcp_serve.py 让 Hermes 自己也能被外部调用。统一走 ToolRegistry,所以主循环无需关心工具来自内置还是 MCP。