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 のツールを ToolRegistry に登録mcp_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 かを意識しなくてよい。