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。