src/mcp/mcp.c(11,797 行)· mcp.hmcp.c 是 CBM 對 MCP client 的門面。它負責:JSON-RPC 2.0 的解析與回覆、15 個工具的 schema 註冊與分派、session 的生命週期、以及 auto-index 的觸發。當你的 agent 呼叫 search_graph,請求就是在這裡被解包、路由到 store/ 或 cypher/,再包成 JSON-RPC 回覆。
15 個工具的定義是資料導向的:每個工具列出參數(name/label/qn…)、型別、是否必填。MCP client 靠這份 schema 知道怎麼呼叫。工具的實際執行是 switch 或查表分派到對應 handler。
JSON-RPC 2.0 的 tools/call 請求 body 有 name 與 arguments。這兩個函式是解包的入口——避免每次呼叫都手動翻 JSON。
MCP server 是 stdio 協議:handle() 讀一行 JSON-RPC、解包、分派、回覆。evict_idle() 與 daemon 合作回收閒置 session 的資源。session 之間透過 daemon 共享索引、watcher、UI。
查詢類工具大多是薄包裝:解析參數 → 呼叫 store/(或 cypher/)→ 包成 MCP 結果。真正的圖操作在 store 層。想深入可以接著看 store/store.c 與 cypher/cypher.c。
接受 repo_path(絕對路徑),呼叫 pipeline 做索引。auto_index 開啟時,新 session 的第一次連線會自動對目前工作目錄觸發此工具。索引在 daemon 的共享 job 系統執行。
回傳每個路徑是否被索引、有無 flagged/skipped/excluded 範圍。agent 的 Verify/Auditor tier 用它做證據檢查——clean 不代表完整證明,只代表「沒有記錄缺口」。
統一的回覆格式:錯誤帶 code/message,Cypher 的 unsupported … 錯誤就在這裡成形。stdout 只出 JSON-RPC(機器可讀),日誌走 stderr / daemon log。