2026年6月30日

Context+
17 个 MCP 工具把代码库变成可搜索的知识图谱

2K Star 的 MCP Server,用 RAG + AST + 谱系聚类 + Obsidian 双链,给 AI Agent 一套真正"看懂"大型代码库的语义智能系统。

Context+

它到底是什么

一句话:一个 MCP Server,把大型代码库解析成语义图谱,让 AI 编程 Agent 像人类高级工程师一样"理解"代码。

用过 Claude Code、Cursor 这类 AI 编程工具的人都有个共同痛点:项目一大,Agent 就开始"迷路"。你让它改个函数,它不知道这个函数被谁调用、改了会炸哪里。你问它项目架构,它只能看到你喂给它的那几个文件。

Context+ 的思路是:不要让 Agent 瞎猜,给它一张精确的代码地图。

它做的事情:

  • 用 Tree-sitter 解析 43 种语言的 AST,提取函数签名、类定义、类型信息
  • 用向量嵌入(Ollama 或 OpenAI 兼容)给代码做语义索引
  • 用谱系聚类(Spectral Clustering)把语义相关的文件自动分组
  • 用 Obsidian 风格的 [[wikilink]] 建立特性到代码的映射
  • 全部封装成 17 个 MCP 工具,Agent 按需调用

装上之后,你的 Agent 就从"只能看眼前几个文件"升级成"能搜整个代码库的语义图谱"。

解决的核心痛点

AI Agent 在大型项目里的问题,本质上是上下文不足

场景Agent 的问题Context+ 怎么解决
改一个函数不知道谁在调用它get_blast_radius 追踪全部引用链
理解项目结构只能看 context window 里的文件get_context_tree 返回整个项目的 AST 结构树
找相关代码只能按文件名搜semantic_code_search 按语义搜索,理解含义
写代码后出错不知道改了会影响什么propose_commit 写入前自动验证 + 影子恢复点
跨模块理解看不懂模块间的依赖semantic_navigate 用聚类发现隐含关联

技术架构拆解

Context+ 的架构分三层,全用 TypeScript 写的,跑在 stdio 上:

核心层(src/core/)

负责代码解析和向量化:

  • Tree-sitter AST 解析 — 支持 43 种语言扩展,能提取函数/类/方法的签名和行号范围
  • Gitignore 感知遍历 — 自动跳过 node_modules、dist 等目录
  • 向量嵌入 — 支持 Ollama(本地免费)和 OpenAI 兼容 API(Gemini 免费额度、OpenAI、Groq、vLLM)
  • 磁盘缓存 — 嵌入结果存在 .mcp_data/,启动时加载,文件变更时增量刷新
  • 属性图 — 内存中的图结构,节点带衰减评分,边有类型(depends_on、implements、references 等)

工具层(src/tools/)

17 个 MCP 工具,分五类:

分类工具干什么
发现get_context_tree项目 AST 结构树,带文件头和符号范围,动态裁剪输出
get_file_skeleton函数签名 + 类方法 + 类型定义(不含实现),看 API 表面
semantic_code_search按语义搜索代码,不是按文本匹配
semantic_identifier_search标识符级别的语义检索,返回调用点和行号
semantic_navigate用谱系聚类浏览代码库,自动分组语义相关的文件
分析get_blast_radius追踪符号的全部导入和使用点,防止孤儿引用
run_static_analysis跑原生 linter,找未使用变量、死代码、类型错误
代码操作propose_commit唯一写代码入口,写入前验证 + 创建影子恢复点
get_feature_hubObsidian 风格的特性中心,用 wikilink 映射特性到代码
版本控制list_restore_points列出所有影子恢复点
undo_change恢复到 AI 修改前的状态,不影响 git 历史
记忆 & RAGupsert_memory_node创建/更新记忆节点,自动生成嵌入
create_relation创建节点间的类型化边
search_memory_graph语义搜索 + 图遍历,找直接匹配再走一阶/二阶邻居
prune_stale_links用指数衰减清理过期边和孤立节点
add_interlinked_context批量添加节点,余弦相似度 ≥ 0.72 自动建边
retrieve_with_traversal从节点出发图遍历,按衰减和深度评分

Git 层(src/git/)

影子恢复点系统。propose_commit 写文件前先快照当前状态,存到内部存储。如果 AI 写的代码有问题,undo_change 可以精确回滚——不动 git 历史,不影响你的真实 commit。

这个设计很聪明:git 的粒度太粗(一次 commit 改了很多文件),而 AI Agent 经常改一个文件改坏。影子恢复点给了一个"AI 修改"级别的 undo。

怎么接入

最简方式:npx 一行搞定

不需要安装,直接在 IDE 的 MCP 配置里加:

{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": ["-y", "contextplus"],
      "env": {
        "OLLAMA_EMBED_MODEL": "nomic-embed-text",
        "OLLAMA_CHAT_MODEL": "gemma2:27b"
      }
    }
  }
}

前提是你本地跑了 Ollama。没装 Ollama?可以用 Gemini 免费额度:

{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": ["-y", "contextplus"],
      "env": {
        "CONTEXTPLUS_EMBED_PROVIDER": "openai",
        "CONTEXTPLUS_OPENAI_API_KEY": "你的Gemini_API_KEY",
        "CONTEXTPLUS_OPENAI_BASE_URL": "https://generativelanguage.googleapis.com/v1beta/openai",
        "CONTEXTPLUS_OPENAI_EMBED_MODEL": "text-embedding-004"
      }
    }
  }
}

CLI 一键生成配置

# Claude Code
npx -y contextplus init claude

# Cursor
bunx contextplus init cursor

# VS Code
npx -y contextplus init vscode

# Windsurf
npx -y contextplus init windsurf

# OpenCode
npx -y contextplus init opencode

支持的 Agent 列表:Claude Code、Cursor、VS Code、Windsurf、OpenCode。

终端直看项目结构

不用连 Agent,直接在终端看 AST 骨架:

# 查看项目结构树
npx -y contextplus skeleton ./my-project

# 或者
npx -y contextplus tree ./my-project

和同类工具对比

工具方式Context+ 的差异
Axon知识图谱 + MCP,Python 实现Context+ 多了谱系聚类、影子恢复点、记忆图谱衰减
Sourcegraph Cody代码搜索 + 补全,SaaSContext+ 是本地 MCP Server,数据不出本机
Claude Code 内置搜索grep 风格的文件搜索Context+ 是语义搜索,理解含义而非文本匹配
Cursor @codebase嵌入索引整个项目Context+ 多了 AST 解析 + 图遍历 + 聚类导航
Tree-sitter 单独用AST 解析,需自己集成Context+ 把 AST + 嵌入 + 图 + MCP 打包好了

适用场景

  • 大型 monorepo — 项目文件上千个,Agent 需要语义级别的导航能力
  • 多语言项目 — 前端 TypeScript + 后端 Go + 脚本 Python,43 种语言一把梭
  • 重构改造 — 改一个接口前,先用 get_blast_radius 看影响范围
  • 新人 onboardingsemantic_navigate 自动发现模块间的隐含关系
  • 需要安全写入的场景propose_commit 的影子恢复点给 AI 写代码加了安全网

实际体验的一些坑

  • 首次索引慢 — 大项目第一次跑需要生成全部嵌入,Ollama 本地跑的话 CPU/GPU 会拉满一阵子
  • 需要 Ollama 或 API Key — 嵌入是必需的,要么本地跑 Ollama,要么用 Gemini/OpenAI 的 API
  • 内存占用 — 大项目的属性图 + 嵌入缓存会吃不少内存,小内存机器要注意
  • semantic_navigate 额外需要 chat model — 聚类标注要用 LLM,用 OpenAI 兼容模式时要额外配 chat model
  • npm 包名容易混 — 包名就叫 contextplus,但 GitHub 仓库在 forloopcodes/contextplus

总结

Context+ 是目前 MCP 生态里做得最完整的"代码语义智能"方案之一。它不是简单的 RAG 包装,而是把 AST 解析、向量嵌入、谱系聚类、Obsidian 双链、属性图、影子恢复点这些技术真正融合到了一起。17 个 MCP 工具覆盖了从"看代码"到"改代码"到"记忆代码"的全流程。

如果你的项目大到 Agent 经常"迷路",Context+ 值得试一试。npx 一行就能跑起来,零安装成本。

项目地址:github.com/forloopcodes/contextplus