AST API 與 Code Graph MCP
搜尋符號、檢視依賴與呼叫關係,並在修改前查看已索引的影響範圍。HTTP API 與唯讀 MCP server 是不同入口。
開始使用
在 Termdock 開啟專案並為該工作區啟用 Code Analysis。HTTP 正式版預設埠為 3033,開發版為 3032;AST_API_PORT 可覆寫。可用 termdock hostinfo --json 查詢執行中 app 的埠。明確傳送 workspace,避免查到目前作用中的其他工作區。
curl -s "http://127.0.0.1:3033/api/workspaces"
curl -s "http://127.0.0.1:3033/api/search?q=UserService&workspace=<wsId>&limit=10"搜尋 data 是陣列,項目包含 symbolId、name、type、file、line、column、relevance。用 symbolId 查詢呼叫者、被呼叫者與影響。搜尋 line、column 從零開始,顯示原始碼行號時加一。
HTTP 查詢
GET /api/workspaces
GET /api/workspaces/:id
GET /api/search?q=<name>&workspace=<wsId>&limit=10
GET /api/graph/deps?file=src/path/to/file.ts&workspace=<wsId>
GET /api/graph/importers?file=src/path/to/file.ts&workspace=<wsId>
GET /api/graph/callers?to=<symbolId>&workspace=<wsId>
GET /api/graph/calls?from=<symbolId>&workspace=<wsId>
GET /api/impact?symbolId=<id>&depth=2&workspace=<wsId>
POST /api/graph/callers/batch
POST /api/index/update- deps 回傳檔案的 imports、exports,建議使用工作區相對路徑。importers 回傳 file、importers、count。
- callers 回傳傳入呼叫關係,calls 回傳傳出關係。這些是索引找到的關係,不保證涵蓋每個執行期呼叫。
- impact 依 depth 1–3 遞迴收集呼叫者,變更行為前請檢查結果並閱讀受影響原始碼。
- callers/batch 接收 JSON { symbolIds: [...], workspace: "..." },最多 50 個 symbol ID。index/update 接收 JSON { workspace: "..." } 更新索引。
程式碼圖與 LSP
1.16 起,Express、Fastify、Koa、FastAPI、Flask 路由成為圖節點,連到 handler 與 middleware。Diff 影響分析將變更對應到符號與呼叫者,完整索引使用 Rust pipeline。
1.21 起,介面節點可向 LSP 要求更多被呼叫者。HTTP callers 查詢可補入已索引專案符號的 LSP 關係,並在 data 旁回傳 lsp.targets。語言伺服器不可用或失敗時仍保留靜態關係;請檢查 LSP 可用狀態,不要把沒有補充關係解讀為沒有呼叫者。
Code Graph MCP server
Stdio server 讀取 Termdock 建立的索引,以 --path 綁定專案。請先在 app 開啟專案並建立索引。Server 為唯讀,不重建索引。下列 launcher 需要 app scripts 目錄旁已有建置好的 dist/main/ast-mcp.js,請使用實際安裝或建置路徑。
node /path/to/Termdock/scripts/termdock-ast-mcp.js --path /path/to/project- termdock_context:query 或 task,可選 maxNodes、maxSnippets、maxBytes、includeCode,取得容量受限的任務上下文。
- termdock_search:query,可選 maxResults,找到符號位置。
- termdock_callers/termdock_callees:filePath,可選 symbol,查看指定方向的呼叫關係。
- termdock_impact:symbolId,可選 depth,遞迴收集呼叫者。
- termdock_node:symbolId,可選 includeCode,讀取符號詳情。
- termdock_status:索引與工作區狀態;termdock_files:已索引檔案清單。
結果受索引範圍與更新時間限制,空結果不能證明符號未被使用。請核對工作區與原始碼,需要時在 app 更新索引,程式碼變更後重新搜尋,不沿用過期 ID。
安裝 skill
可在設定 > Skills 為支援的 AI 工具安裝 termdock-ast,依已安裝指引確認 API 或 MCP 路徑。已知精確檔案或只需要字串比對時,可直接使用文字搜尋。