codebase-memory-mcp 以 tree-sitter 與 Hybrid LSP 建立持久化程式碼知識圖譜,供 AI coding agent 查詢符號、呼叫鏈、架構與變更影響。專案提供單一靜態執行檔、15 個 MCP 工具,以及 macOS、Linux、Windows 安裝包。
codebase-memory-mcp 是供 MCP client 使用的結構分析後端。它解析 repository,將函式、類別、匯入、呼叫鏈、HTTP route 與跨服務關聯寫入 SQLite 知識圖譜。
全部 158 種語言先經 tree-sitter 產生語法結構;Python、TypeScript/JavaScript、PHP、C#、Go、C/C++、Java、Kotlin、Rust 與 Perl 再由 Hybrid LSP 補強型別解析。圖譜保存在 ~/.cache/codebase-memory-mcp/,可跨 session 重用。
這個 server 不內建 LLM。Agent 負責把自然語言需求轉成 MCP 工具呼叫;server 負責索引、搜尋、圖遍歷、影響分析與 Architecture Decision Record。
macOS 或 Linux 可使用官方安裝指令。需要 3D 圖譜介面時加入 --ui;預設安裝 headless server。
先下載並檢查官方 script,再解除 Mark-of-the-Web 限制並執行。遇到 execution policy 錯誤時,只在目前 Process scope 調整政策。
codebase-memory-mcp,並可列出 15 個工具。
工具分成索引管理、結構搜尋、來源查證、架構分析與可選的圖譜寫入。先用 list_projects 確認專案,再依問題選擇窄範圍查詢;刪除索引或寫入 ADR 前先取得明確授權。
| 問題 | 起始工具 | 驗證工具 |
|---|---|---|
| 這個 repository 的主要模組與入口在哪裡 | get_architecture |
get_code_snippet |
| 誰呼叫指定函式 | search_graph |
trace_path |
| 目前 diff 可能影響哪些符號 | detect_changes |
trace_path |
| 查詢結果能否支持完整或否定性結論 | index_status |
check_index_coverage |
下列操作原則整理自官方 README、工具 schema 與 SECURITY.md。每項結論都要保留 project、index generation、pagination 與 coverage 邊界。
第一次使用先呼叫 list_projects。只有目標 repository 不在清單內時才執行 index_repository。
廣泛問題先使用 get_architecture;後續再以符號搜尋與來源片段驗證具體 claim。
get_code_snippet 與 trace_path 前先用 search_graph 找到精確符號名稱。
search_graph 的 degree 是圖譜 edge 數量;caller 與 callee 關係改用 trace_path。
一般探索先使用 search_graph 與 pagination;需要多跳 pattern 時再使用 read-only Cypher subset。
對每個引用路徑呼叫 check_index_coverage。clean result 只表示沒有已記錄缺口,不代表內容完整。
「沒有 caller」或「沒有受影響符號」需要檢查相關 scope、pagination 與 skipped files。
來源 · 官方 Multi-Agent Support使用 gitignore syntax 排除 generated、fixtures 或大型資料;hardcoded ignore 與 repository 的 .gitignore 仍會先套用。
--progress 將進度寫到 stderr;stdout 保留工具結果。需要完整 MCP envelope 時加入 --json。
codebase-memory-mcp update 會切換 account-wide binary;成功後重新啟動已開啟的 coding-agent sessions。
下列示例示範一個不依賴特定 repository 統計值的查詢流程。Agent 先選定索引,再以 architecture、search、trace、snippet 與 coverage 組成可查證的答案。
結果必須包含 project、index generation、qualified symbol、檔案路徑與查詢方向。使用 pagination 的工具另記錄 has_more、limit 與 offset。
check_index_coverage 回報缺口時,直接讀取相關檔案範圍。索引外的證據不能以圖譜查詢結果替代。
check_index_coverage 只能回報已記錄缺口;否定性或 exhaustive claim 仍需檢查 scope、pagination 與原始檔案。
.gitignore、.cbmignore 與 symlink skip 都可能讓檔案不進入圖譜。
.codebase-memory/graph.db.zst 可提交到 repository;不希望共享時將 .codebase-memory/ 加入 .gitignore。
manage_adr、ingest_traces 與 delete_project 會改變持久化資料;唯讀分析不應自行呼叫。
codebase-memory-mcp uninstall 移除 owned config、skills、hooks 與 binary;圖譜索引只在確認後刪除。
完成單一 repository 的索引與查詢後,再啟用 auto-index、跨 repository 關聯、runtime trace 或共享圖譜 artifact。每次擴大範圍都要重新記錄 project、generation 與 coverage。
1. 啟用自動索引。執行 codebase-memory-mcp config set auto_index true。需要限制 watcher 時另設 auto_watch false。
2. 調整自訂副檔名。在 global 或 per-project config 將非標準副檔名映射到既有 parser,再重新建立索引。
3. 建立跨 repository 關聯。將多個服務索引到同一 store,利用 CROSS_* edge 與 architecture summary 查詢跨服務 route 與 dependency。
4. 匯入 runtime trace。以 ingest_traces 補強靜態圖譜中的 HTTP_CALLS 關聯;執行前確認資料來源與持久化範圍。
5. 分享壓縮圖譜。需要團隊共用時提交 .codebase-memory/graph.db.zst;clone 後由 incremental indexing 補上本機差異。
① README.md:安裝、15 個工具、CLI 與 Multi-Agent Support。
② docs/CONFIGURATION.md:runtime settings、環境變數與 extension mapping。
③ SECURITY.md:本機處理、更新檢查、binary verification 與揭露流程。