| 類別 | 工具 |
|---|---|
| 索引 | index_repository · list_projects · delete_project · index_status |
| 查詢 | search_graph · trace_path · detect_changes · query_graph · get_graph_schema |
| 讀取 | get_code_snippet · get_architecture · search_code |
| 維運 | manage_adr · check_index_coverage · ingest_traces |
核心參數 repo_path(絕對路徑)。首次全索引,之後增量。auto_index 開啟時(config set auto_index true)會在新專案連線時自動執行。結束時可選擇寫出 team-shared graph artifact(見 Graph Artifact)。
list_projects 回傳每個專案的 name(用於其他工具的 project 參數)、節點/邊數。 delete_project 移除專案與全部圖資料。index_status 查詢專案目前的索引狀態。
最常用的發現工具。正則 name_pattern(如 .*Handler.*)、label(如 Function)、file_pattern、min_degree/max_degree、limit/offset 分頁。這是「先發現確切名稱」的入口——trace_path 與 get_code_snippet 都靠它找目標。
別名 trace_call_path。function_name + direction(inbound / outbound / both)。這是取代「grep 誰呼叫 X」的殺手級工具——在型別解析的圖上 BFS,<10ms。
openCypher 唯讀子集(Cypher 全解)。例如死碼偵測 MATCH (f:Function) WHERE NOT EXISTS { (f)<-[:CALLS]-() } RETURN f.name。子集之外的語法回傳明確的 unsupported … 錯誤,不會靜默回空。
讀取未 commit 的變更,映射到受影響的符號與風險等級。用於「改了這個會影響到誰」的影響分析。
探索圖結構的起點:看這個專案有哪些 label、邊型、屬性——決定接下來要問什麼。
用 <project>.<path_parts>.<name> 直接讀函式原始碼——不用先知道檔案路徑。qualified name 可用 search_graph 發現。
一次呼叫拿整個專案的架構摘要。含社群 cluster(Louvain 偵測的功能模組)與 ADR 摘要。跨 repo 時也能給 cross-repo architecture summary。
跟 grep 類似,但範圍限於圖索引的檔案——語意上有圖的加持(可顯示該 hit 對應到哪個符號)。
把架構決策(ADR)持久化,跨 session 保留下來。query 模式(get/sections)用 server 的快取 query store,可以在同專案重索引進行中繼續服務;寫入仍序列化。
檢查給定檔案路徑是否被索引、有無 flagged / skipped / excluded 範圍。agent 的 Verify / Auditor tier 用它做「證據路徑的涵蓋檢查」——clean 結果只代表「沒有記錄缺口」,不是完整證明。
把 runtime trace 資料收進圖,用真實執行資料驗證/補強 HTTP_CALLS 跨服務邊。
每個 MCP 工具都能當單次本機指令跑(cli 子指令),不會啟動 daemon、不留常駐 process:
codebase-memory-mcp cli index_repository --repo-path /path/to/repo
codebase-memory-mcp cli list_projects
codebase-memory-mcp cli search_graph --project my-project --name-pattern '.*Handler.*' --label Function
codebase-memory-mcp cli trace_path --project my-project --function-name Search --direction both
codebase-memory-mcp cli query_graph --project my-project --query 'MATCH (f:Function) RETURN f.name LIMIT 5'
加 --json 拿完整 MCP result envelope;--progress 在非互動環境強制顯示進度(只寫 stderr,stdout 保持機器可讀)。
search_graph 為何是發現入口、trace_path 如何取代 grep「誰呼叫誰」、以及每個工具都能用 cli 子指令在本機跑。