/ 目錄 / 演練場 / contextplus
● 社群 ForLoopCodes ⚡ 即開即用

contextplus

作者 ForLoopCodes · ForLoopCodes/contextplus

為你的程式代理提供持久的語意儲存庫地圖——AST + 向量嵌入 + 記憶圖譜 + 影子還原點——讓它不再重複讀取整個程式碼庫。

Context+(ForLoopCodes/contextplus)是一個 TypeScript MCP,提供 17 項工具用於理解儲存庫:tree-sitter AST 樹、檔案骨架、語意識別符搜尋、影響範圍分析、適用於長期專案的記憶圖譜,以及用於安全編輯的影子還原點。支援 Ollama 或雲端向量嵌入。

為什麼要用

核心特性

即時演示

實際使用效果

contextplus.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "contextplus",
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "contextplus": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "contextplus"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add contextplus -- npx -y contextplus

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: contextplus

如何讓新代理快速熟悉大型儲存庫

👤 在 monorepo 上使用 Cursor/Claude Code 的技術負責人 ⏱ ~20 min intermediate

何時使用: 代理浪費了 30% 的上下文空間反覆讀取檔案。

前置條件
  • Node + bun 或 npm — brew install bun 或使用 npm
  • 向量嵌入提供者(本地 Ollama、OpenAI、Gemini 或 Groq) — 執行 ollama pull nomic-embed-text 以支援離線使用
步驟
  1. 建立上下文樹
    對儲存庫根目錄執行 get_context_tree,並摘要頂層結構。✓ 已複製
    → 帶有檔案標頭的 AST 樹
  2. 僅讀取骨架
    對 src/auth/ 使用 get_file_skeleton,只查看函式簽名——先不讀取實作內容。✓ 已複製
    → 不含實作內容的函式簽名
  3. 提出語意問題
    semantic_identifier_search: 'JWT 驗證在哪裡實作並被呼叫?'✓ 已複製
    → 排序後的實作位置 + 呼叫位置

結果: 代理使用約少 5 倍的上下文空間,即可建立儲存庫的整體理解。

注意事項
  • 首次執行索引建立速度較慢 — 一次性執行初始掃描後,後續的增量更新速度很快
  • 建立索引與查詢時使用的嵌入模型不一致 — 固定使用同一個嵌入模型;若更換模型需重新建立索引
搭配使用: filesystem · github

如何使用影子還原點進行重構

👤 擔心讓代理編輯程式碼的開發者 ⏱ ~15 min intermediate

何時使用: 你想讓代理進行編輯,同時保留一鍵還原功能,且不弄髒 git 記錄。

步驟
  1. 建立還原點
    建立名為 'before-auth-refactor' 的還原點。✓ 已複製
    → 回傳還原點 id
  2. 讓代理進行編輯
    propose_commit: 將 JWT 驗證重構為使用新的金鑰輪換輔助函式。✓ 已複製
    → 檔案已編輯 + 驗證通過
  3. 若有問題則回滾
    執行 undo_change 回到 'before-auth-refactor'。✓ 已複製
    → 檔案已還原,git 歷史保持乾淨

結果: 可大膽重構,且不污染 git 歷史記錄。

注意事項
  • 還原點存放在 .contextplus/ 目錄中——不要提交此目錄 — 將 .contextplus/ 加入 .gitignore
搭配使用: github

如何在刪除函式前評估影響範圍

👤 負責清理廢棄程式碼的工程師 ⏱ ~10 min intermediate

何時使用: 你想在移除某個符號之前,確切掌握哪些地方有匯入或使用它。

步驟
  1. 查詢影響範圍
    對 src/pricing.ts 中的 'legacyFormatPrice' 函式執行 get_blast_radius。✓ 已複製
    → 所有匯入或呼叫該函式的檔案與行號
  2. 規劃移除方式
    針對每個呼叫位置,建議對應的替換方案。若有呼叫位置無法乾淨替換,請標記為高風險。✓ 已複製
    → 遷移清單

結果: 提交一個零意外的刪除 PR。

注意事項
  • 動態匯入(require、字串參照)無法被偵測 — 補充使用 grep 搜尋函式名稱
搭配使用: github

如何透過記憶圖譜在不同工作階段間保留決策記錄

👤 長期專案中的任何代理使用者 ⏱ ~15 min advanced

何時使用: 你不斷需要向代理重複說明相同的架構決策。

步驟
  1. 植入記憶
    upsert_memory_node: '我們選擇 Postgres 而非 MongoDB,原因是帳務流程中有交易一致性的需求。'✓ 已複製
    → 節點已建立並附帶向量嵌入
  2. 建立關聯
    create_relation: 將該決策與 src/billing/*.ts 檔案連結,邊的類型為 'implements'。✓ 已複製
    → 邊已建立
  3. 下次工作階段時取回記憶
    search_memory_graph: '為什麼我們要使用 Postgres?'✓ 已複製
    → 決策及相關支援檔案浮現

結果: 持久的專案記憶,不受對話結束影響。

注意事項
  • 記憶圖譜可能逐漸過時 — 每月執行一次 prune_stale_links
搭配使用: memory-service

組合

與其他 MCP 搭配,撬動十倍槓桿

contextplus + github

利用影響範圍分析結果建立 GitHub 追蹤議題

對 LegacyAuth 執行 get_blast_radius,然後建立一個 GitHub 追蹤議題,將每個呼叫位置列為待辦清單項目。✓ 已複製
contextplus + memory-service

使用 mcp-memory-service 作為共用儲存,跨專案持久保存長期決策

每當 Context+ 記錄新的架構決策時,同步鏡像到 mcp-memory-service 中。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
get_context_tree root: str, depth?: int 在新的儲存庫工作階段中首次呼叫 free
get_file_skeleton path: str 快速取得檔案概覽 free
semantic_code_search query: str, k?: int 依語意含義搜尋程式碼 1 embedding + 1 vector search
semantic_identifier_search query: str 定位某個函式或類別 1 vector search
get_blast_radius symbol: str, file?: str 在刪除或重新命名符號之前 free
run_static_analysis path?: str 偵測未使用的程式碼與型別錯誤 free
propose_commit files: Edit[] 套用帶有驗證的編輯 free
list_restore_points 查看可用的回滾點 free
undo_change restore_point_id: str 還原影子編輯 free
upsert_memory_node content: str, tags?: str[] 儲存一項持久性事實 1 embedding
search_memory_graph query: str, traversal?: int 回溯過去的決策記錄 1 vector search

成本與限制

運行它的成本

API 配額
依嵌入提供者而定:Ollama 免費,OpenAI 約 $0.02/1M tokens
每次呼叫 Token 數
骨架讀取:100-500 tokens。完整搜尋:500-2000
費用
免費(開源)+ 使用雲端提供者時的嵌入費用
提示
使用搭配 nomic-embed-text 的 Ollama,邊際成本為零。

安全

權限、密鑰、影響範圍

最小權限: Filesystem read/write to the indexed repo
憑證儲存: 透過環境變數設定嵌入提供者的金鑰
資料出站: 向量嵌入會傳送至你選擇的提供者(或透過 Ollama 保留在本地)
切勿授予: Do not index directories with secrets like .env

故障排查

常見錯誤與修復

Indexing is extremely slow

將大型目錄(node_modules、dist)加入 .contextplusignore;在本地使用 Ollama。

Semantic search returns irrelevant results

查詢過於抽象——請加入具體的符號名稱或檔案名稱作為提示。

undo_change fails with 'point not found'

影子還原點預設為工作階段範圍。若需跨工作階段保留,請透過設定旗標啟用持久化。

Tree-sitter grammar missing for a language

請確認支援的副檔名清單;不支援類型的檔案會被略過,但仍以純文字方式建立索引。

替代方案

contextplus 對比其他方案

替代方案何時用它替代權衡
mcp-language-server你需要 LSP 語意功能(重新命名、參照查詢)而非基於嵌入的搜尋沒有記憶圖譜,也沒有影子還原功能
codebase-memory-mcp你偏好知識圖譜視角而非逐檔案骨架索引結構不同;支援 66 種語言

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills