背景+
面向大规模工程的语义智能。
Context+是一个MCP服务器,专为要求99%准确率的开发人员而设计。通过结合RAG、树型AST、光谱聚类和黑曜石风格链接,Context+将庞大的代码库转化为可搜索的分层特征图。
https://github.com/user-attachments/assets/a97a451f-c9b4-468d-b036-15b65fc13e79
工具
发现
| 工具 | 说明 |
|---|---|
get_context_tree | 项目的结构化AST树,包含文件头和符号范围(函数/类/方法的行号)。动态修剪会自动缩小输出。 |
get_file_skeleton | 函数签名、类方法和带行范围的类型定义,无需阅读全文。显示API曲面。 |
semantic_code_search | 按含义搜索,而不是按精确文本搜索。在文件头/符号上使用嵌入,并返回匹配的符号定义行。 |
semantic_identifier_search | 对具有排序调用站点和线路号的函数/类/变量进行标识符级语义检索。 |
semantic_navigate | 使用谱聚类按意义浏览代码库。将语义相关的文件分组到标记的簇中。 |
分析
| 工具 | 说明 |
|---|---|
get_blast_radius | 跟踪导入或使用符号的每个文件和行。防止孤立引用。 |
run_static_analysis | 运行本机linter和编译器以查找未使用的变量、死代码和类型错误。支持TypeScript、Python、Rust、Go。 |
代码操作
| 工具 | 说明 |
|---|---|
propose_commit | 编写代码的唯一方法。保存前根据严格规则进行验证。在写入之前创建阴影还原点。 |
get_feature_hub | 黑曜石风格的功能中心导航器。集线器是 .md 文件与 [[wikilinks]] 将功能映射到代码文件。 |
版本控制
| 工具 | 说明 |
|---|---|
list_restore_points | 列出由创建的所有阴影还原点 propose_commit。每个都捕获AI更改前的文件状态。 |
undo_change | 将文件还原到特定AI更改前的状态。使用阴影还原点。不会影响git。 |
内存和RAG
| 工具 | 说明 |
|---|---|
upsert_memory_node | 使用自动生成的嵌入创建或更新内存节点(概念、文件、符号、注释)。 |
create_relation | 在节点之间创建类型化边(relates_to、depends_on、implementations、references、similar_to、contains)。 |
search_memory_graph | 带图遍历的语义搜索——找到直接匹配,然后遍历一级/二级邻居。 |
prune_stale_links | 删除衰减边(e^(-λt)低于阈值)和访问计数低的孤立节点。 |
add_interlinked_context | 批量添加具有自动相似性链接的节点(余弦≥0.72会自动创建边)。 |
retrieve_with_traversal | 从一个节点开始向外走——返回所有按衰减和深度评分的可达邻居。 |
设置
快速入门(npx/bunx)
无需安装。将Context+添加到IDE MCP配置中。
对于Claude Code、Cursor和Windsurf,请使用 mcpServers:
{
"mcpServers": {
"contextplus": {
"command": "bunx",
"args": ["contextplus"],
"env": {
"OLLAMA_EMBED_MODEL": "nomic-embed-text",
"OLLAMA_CHAT_MODEL": "gemma2:27b",
"OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
}
}
}
}VS代码(.vscode/mcp.json),使用 servers 和 inputs:
{
"servers": {
"contextplus": {
"type": "stdio",
"command": "bunx",
"args": ["contextplus"],
"env": {
"OLLAMA_EMBED_MODEL": "nomic-embed-text",
"OLLAMA_CHAT_MODEL": "gemma2:27b",
"OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
}
}
},
"inputs": []
}如果你喜欢 npx,使用:
"command": "npx""args": ["-y", "contextplus"]
或者直接在当前目录中生成MCP配置文件:
npx -y contextplus init claude
bunx contextplus init cursor
npx -y contextplus init opencode支持的编码代理名称: claude, cursor, vscode, windsurf, opencode.
配置文件位置:
| IDE | 配置文件 |
|---|---|
| 克劳德代码 | .mcp.json |
| 光标 | .cursor/mcp.json |
| VS代码 | .vscode/mcp.json |
| 风帆冲浪 | .windsurf/mcp.json |
| OpenCode | opencode.json |
CLI子命令
init [target]-生成MCP配置(目标:claude,cursor,vscode,windsurf,opencode).skeleton [path]或tree [path]- 新 直接在终端中查看具有文件头和符号定义的项目结构树。[path]-启动指定路径(默认为当前目录)的MCP服务器(stdio)。
来自源头
npm install
npm run build嵌入提供者
Context+支持两个由控制的嵌入后端 CONTEXTPLUS_EMBED_PROVIDER:
| 提供者 | 价值 | 要求 | 最佳 |
|---|---|---|---|
| 奥拉玛 (默认) | ollama | 本地Ollama服务器 | 免费、离线、私人 |
| OpenAI兼容 | openai | API密钥 | Gemini(免费层)、OpenAI、Groq、vLLM |
Ollama(默认)
无需额外配置。只需使用嵌入模型运行Ollama:
ollama pull nomic-embed-text
ollama serve谷歌双子座(免费版)
完整的克劳德代码 .mcp.json 例子:
{
"mcpServers": {
"contextplus": {
"command": "npx",
"args": ["-y", "contextplus"],
"env": {
"CONTEXTPLUS_EMBED_PROVIDER": "openai",
"CONTEXTPLUS_OPENAI_API_KEY": "YOUR_GEMINI_API_KEY",
"CONTEXTPLUS_OPENAI_BASE_URL": "https://generativelanguage.googleapis.com/v1beta/openai",
"CONTEXTPLUS_OPENAI_EMBED_MODEL": "text-embedding-004"
}
}
}
}在获取免费API密钥 谷歌人工智能工作室.
开放人工智能
{
"mcpServers": {
"contextplus": {
"command": "npx",
"args": ["-y", "contextplus"],
"env": {
"CONTEXTPLUS_EMBED_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-...",
"OPENAI_EMBED_MODEL": "text-embedding-3-small"
}
}
}
}其他与OpenAI兼容的API(Groq、vLLM、LiteLLM)
任何实现 OpenAI嵌入API 作品:
{
"mcpServers": {
"contextplus": {
"command": "npx",
"args": ["-y", "contextplus"],
"env": {
"CONTEXTPLUS_EMBED_PROVIDER": "openai",
"CONTEXTPLUS_OPENAI_API_KEY": "YOUR_KEY",
"CONTEXTPLUS_OPENAI_BASE_URL": "https://your-proxy.example.com/v1",
"CONTEXTPLUS_OPENAI_EMBED_MODEL": "your-model-name"
}
}
}
}注: 这个semantic_navigate该工具还使用聊天模型进行集群标记。使用时openai提供者,setCONTEXTPLUS_OPENAI_CHAT_MODEL(默认值:gpt-4o-mini). 对于VS代码、游标或OpenCode,使用相同的envIDE MCP配置格式中的块(请参阅 配置文件位置 上表)。
建筑
使用模型上下文协议SDK在stdio上使用TypeScript构建的三层:
核心 (src/core/)-多语言AST解析(树形图,43个扩展)、gitignore感知遍历、带磁盘缓存的Ollama向量嵌入、wikilink中心图、带衰减评分的内存属性图。
工具 (src/tools/)-17个MCP工具,展示结构、语义、操作和内存图功能。
Git (src/git/)-影子还原点系统,用于撤消操作,无需接触git历史记录。
运行时缓存 (.mcp_data/)-在服务器启动时创建;存储可重用的文件、标识符和调用站点嵌入,以避免重复的GPU/CPU嵌入工作。实时跟踪器增量刷新更改的文件/函数。
配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
CONTEXTPLUS_EMBED_PROVIDER | 字符串 | ollama | 嵌入后端: ollama 或 openai |
OLLAMA_EMBED_MODEL | 字符串 | nomic-embed-text | Ollama嵌入模型 |
OLLAMA_API_KEY | string | - | Ollama Cloud API密钥 |
OLLAMA_CHAT_MODEL | 字符串 | llama3.2 | 用于集群标记的Ollama聊天模型 |
CONTEXTPLUS_OPENAI_API_KEY | string | - | OpenAI兼容提供程序的API密钥(别名: OPENAI_API_KEY) |
CONTEXTPLUS_OPENAI_BASE_URL | 字符串 | https://api.openai.com/v1 | OpenAI兼容端点URL(别名: OPENAI_BASE_URL) |
CONTEXTPLUS_OPENAI_EMBED_MODEL | 字符串 | text-embedding-3-small | OpenAI兼容的嵌入模型(别名: OPENAI_EMBED_MODEL) |
CONTEXTPLUS_OPENAI_CHAT_MODEL | 字符串 | gpt-4o-mini | 用于标签的OpenAI兼容聊天模型(别名: OPENAI_CHAT_MODEL) |
CONTEXTPLUS_EMBED_BATCH_SIZE | 字符串(解析为数字) | 8 | 每次GPU调用嵌入批处理大小,限制在5-10 |
CONTEXTPLUS_EMBED_CHUNK_CHARS | 字符串(解析为数字) | 2000 | 合并前每个块字符数限制为256-8000 |
CONTEXTPLUS_MAX_EMBED_FILE_SIZE | 字符串(解析为数字) | 51200 | 跳过大于此字节数的非代码文本文件 |
CONTEXTPLUS_EMBED_NUM_GPU | string(解析为数字) | - | 可选Ollama嵌入运行时 num_gpu 以(权力)否决 |
CONTEXTPLUS_EMBED_MAIN_GPU | string(解析为数字) | - | 可选Ollama嵌入运行时 main_gpu 以(权力)否决 |
CONTEXTPLUS_EMBED_NUM_THREAD | string(解析为数字) | - | 可选Ollama嵌入运行时 num_thread 以(权力)否决 |
CONTEXTPLUS_EMBED_NUM_BATCH | string(解析为数字) | - | 可选Ollama嵌入运行时 num_batch 以(权力)否决 |
CONTEXTPLUS_EMBED_NUM_CTX | string(解析为数字) | - | 可选Ollama嵌入运行时 num_ctx 以(权力)否决 |
CONTEXTPLUS_EMBED_LOW_VRAM | string(解析为布尔值) | - | 可选Ollama嵌入运行时 low_vram 以(权力)否决 |
CONTEXTPLUS_EMBED_TRACKER | 字符串(解析为布尔值) | true | 启用文件更改时的实时嵌入刷新 |
CONTEXTPLUS_EMBED_TRACKER_MAX_FILES | 字符串(解析为数字) | 8 | 每个跟踪器滴答声处理的最大更改文件数,限制在5-10个 |
CONTEXTPLUS_EMBED_TRACKER_DEBOUNCE_MS | 字符串(解析为数字) | 700 | 刷新跟踪器前清除窗口抖动 |
测试
npm test
npm run test:demo
npm run test:all