使用说明
背景+
面向大规模工程的语义智能。
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 |
从一个节点开始向外走——返回所有按衰减和深度评分的可达邻居。 |
补充服务器: pmll存储器mcp (
npx pmll-memory-mcp)是一个独立的MCP服务器 @Qedwards博士 它调整了Context+的长期内存图,并在其上添加了短期KV上下文内存、Q-promise重复数据删除和解决方案引擎。看 drQedwards/PPM 了解详情。
设置
快速入门(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)。
包括工作区排除的路径 .gitignore
如果你的工作空间 .gitignore 排除您仍然需要的子目录
索引(在monorepos中很常见,其中子项目在 repos/, packages/,
或 vendor/ 在顶层被忽略),使用 --include 或
CONTEXTPLUS_EXTRA_ROOTS 重新添加路径。
CLI表单 (可重复):
bunx contextplus /path/to/workspace \
--include repos/lacuna \
--include repos/graphrag-core
环境变量 (否时回退 --include 标志已设置;使用
系统路径分隔符-- : 在Unix上, ; 在Windows上):
CONTEXTPLUS_EXTRA_ROOTS=repos/lacuna:repos/graphrag-core \
bunx contextplus /path/to/workspace
进入 .mcp.json env形式通常更符合人体工程学:
{
"mcpServers": {
"contextplus": {
"command": "bunx",
"args": ["contextplus", "/path/to/workspace"],
"env": {
"CONTEXTPLUS_EXTRA_ROOTS": "repos/lacuna:repos/graphrag-core"
}
}
}
}
列出的每条路径都是步行的 独立地 工作区根目录,带有
新鲜忽略范围。每条路都有自己的 .gitignore 受到尊重。路径是
启动时验证;无效条目(不存在,不是目录,
工作区外)发出stderr警告并被跳过。
嵌套 .gitignore 工作区内和每个额外根目录内的文件
加载并合并继承的规则,匹配 git 和 ripgrep
行为。
来源
npm install
npm run build
嵌入提供者
Context+支持两个由控制的嵌入后端 CONTEXTPLUS_EMBED_PROVIDER:
| 提供者 | 价值 | 要求 | 最佳 |
|---|---|---|---|
| Ollama (默认) | 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密钥 谷歌AI工作室.
OpenAI
{
"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