代码库存储器mcp
](https://github.com/DeusData/codebase-memory-mcp/releases/latest)           
用于AI编码代理的最快、最高效的代码智能引擎。 完整索引平均存储库以毫秒为单位,Linux内核(28M LOC,75K文件)以3分钟为单位。在1ms内回答结构化查询。作为macOS、Linux和Windows的单个静态二进制文件发布——下载、运行 install,完成。
通过高质量解析 树保姆 跨所有155种语言的AST分析,通过Go、C、C++和TypeScript/JavaScript/JSX/TSX(更多语言即将推出)的LSP风格混合类型解析进行增强,从而生成函数、类、调用链、HTTP路由和跨服务链接的持久知识图。14个MCP工具。零依赖。跨11个编码代理的即插即用。
研究 --预印本中描述了该项目背后的设计和基准 *代码库存储器:基于树的知识图,通过MCP进行LLM代码探索* (arXiv:2603.27277)。在31个真实世界的存储库中进行了评估:答案质量为83%,令牌减少10倍,工具调用减少2.1倍。
Built-in 3D graph visualization (UI variant) — explore your knowledge graph at localhost:9749
为什么使用代码库内存mcp
- 极高的索引速度 --Linux内核(28M LOC,75K文件)在3分钟内完成。RAM第一流水线:LZ4压缩,内存SQLite,融合Aho-Corasick模式匹配。索引后释放的内存。
- 即插即用 --适用于macOS(arm64/amd64)、Linux(arm64/AMD 64)和Windows(AMD 64)的单一静态二进制文件。没有Docker,没有运行时依赖,没有API密钥。下载→
install→ 重启代理→ done. - 155种语言 --编译成二进制文件的供应商树保姆语法。无需安装,无需损坏。
- 代币数量减少120倍 --5个结构化查询:约3400个令牌,而通过逐文件搜索约412000个令牌。一个图查询可以替换数十个grep/read循环。
- 11名特工,一个指挥部 —
install自动检测Claude Code、Codex CLI、Gemini CLI、Zed、OpenCode、Antigravity、Aider、KiloCode、VS Code、OpenClaw和Kiro——为每个配置MCP条目、指令文件和预工具挂钩。 - 内置图形可视化 --3D交互式用户界面
localhost:9749(可选UI二进制变体)。 - 基础设施即代码索引 --Dockerfiles、Kubernetes清单和Kustomize覆盖层被索引为具有交叉引用的图节点。
ResourceK8s类节点,ModuleKustomize覆盖的节点IMPORTS引用资源的边缘。 - 14个MCP工具 --搜索、跟踪、架构、影响分析、Cypher查询、死代码检测、跨服务HTTP链接、ADR管理等。
快速开始
单线安装 (macOS/Linux):
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash使用图形可视化UI:
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash -s -- --ui视窗 (PowerShell):
# 1. Download the installer
Invoke-WebRequest -Uri https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 -OutFile install.ps1
# 2. (Optional but recommended) Inspect the script
notepad install.ps1
# 3. Run it
.\install.ps1
选项: --ui (图形可视化), --skip-config (仅二进制,无代理设置), --dir= (自定义位置)。
重新启动您的编码代理。说 “索引此项目” --完成。
Manual install
- 下载 从 最新版本:
- codebase-memory-mcp--.tar.gz (macOS/Linux)或 .zip (Windows)--标准 - codebase-memory-mcp-ui--.tar.gz / .zip --图形可视化
- 提取并安装 (每个档案包括
install.sh或install.ps1):
macOS/Linux:
tar xzf codebase-memory-mcp-*.tar.gz
./install.shWindows(PowerShell):
Expand-Archive codebase-memory-mcp-windows-amd64.zip -DestinationPath .
.\install.ps1- 重启 你的编码代理。
这 install 命令会自动删除macOS隔离属性并对二进制文件进行特殊签名——无需手动 xattr/codesign 需要。
这 install 命令自动检测所有已安装的编码代理,并为每个代理配置MCP服务器条目、指令文件、技能和预工具挂钩。
图形可视化用户界面
如果您下载了 ui 变体:
codebase-memory-mcp --ui=true --port=9749打开 http://localhost:9749 在您的浏览器中。UI作为后台线程与MCP服务器一起运行——只要您的代理连接,它就可用。
自动索引
启用MCP会话启动时的自动索引:
codebase-memory-mcp config set auto_index true启用后,新项目将在第一次连接时自动索引。以前索引的项目在后台监视器中注册,以进行基于git的更改检测。可配置的文件限制: config set auto_index_limit 50000.
保持最新
codebase-memory-mcp updateMCP服务器还会在启动时检查更新,并在第一次工具调用时通知是否有新版本可用。
卸载
codebase-memory-mcp uninstall删除所有代理配置、技能、挂钩和说明。不会删除二进制或SQLite数据库。
特性
图表与分析
- 架构概述:
get_architecture在单个调用中返回语言、包、入口点、路由、热点、边界、层和集群 - 架构决策记录:
manage_adr跨会话持久化架构决策 - 鲁汶社区检测:通过对调用边进行聚类来发现功能模块
- Git差异影响映射:
detect_changes将未提交的更改映射到受影响的符号,并进行风险分类 - 调用图:解决跨文件和包的函数调用(导入感知、类型推断)
- 死码检测:查找调用方为零的函数,不包括入口点
- 类似密码的查询:
MATCH (f:Function)-[:CALLS]->(g) WHERE f.name = 'main' RETURN g.name
搜索
- 语义搜索 (
semantic_query):在整个图中进行矢量搜索,由捆绑的Nomic提供支持nomic-embed-code嵌入(40K令牌,768d int8)编译成二进制-没有API密钥,没有Ollama,没有Docker。11-信号组合评分(TF-IDF、RRI、API/类型/装饰器签名、AST配置文件、数据流、Halstead-lite、MinHash、模块接近度、图形扩散)。 - BM25全文搜索 通过SQLite FTS5
cbm_camel_split标记器(支持camelCase/snake_case) - 结构搜索 (
search_graph):正则表达式名称模式、标签过滤器、最小/最大程度、文件作用域 - 代码搜索 (
search_code):graph仅在索引文件上增强grep
跨服务链接
- 超文本传输协议 路线↔ 呼叫站点匹配与置信度评分
- gRPC、GraphQL、tRPC 使用protobuf路由提取进行服务检测
- 信道检测 (
EMITS/LISTENS_ON)对于Socket。IO、EventEmitter和8种语言的通用发布-订阅模式,具有恒定的分辨率
交叉回购情报
- **
CROSS_*边缘** 跨同一存储下索引的多个存储库的链接节点 - 多星系3D UI布局 用于跨仓库架构可视化
- 跨仓库架构概述 组合索引车队中的服务、路线和依赖关系
边缘类型(已选择)
CALLS,IMPORTS,DEFINES,IMPLEMENTS,INHERITSHTTP_CALLS,ASYNC_CALLS(交叉服务)EMITS,LISTENS_ON(频道)DATA_FLOWS具有arg到param映射+字段访问链SIMILAR_TO(MinHash+LSH近克隆检测,Jaccard评分)SEMANTICALLY_RELATED(词汇不匹配,语言相同,得分≥0.80)
索引管道
- 155本买来的树保姆语法书 编译成二进制文件
- 通用包/模块解析 --裸说明符,如
@myorg/pkg,github.com/foo/bar,use my_crate::foo通过清单扫描解决(package.json,go.mod,Cargo.toml,pyproject.toml,composer.json,pubspec.yaml,pom.xml,build.gradle,mix.exs,*.gemspec) - 基础设施即代码索引 --Dockerfiles、Kubernetes清单、Kustomize覆盖图节点
- LSP式混合型分辨率 对于Go、C、C++和TypeScript/JavaScript/JSX/TSX(更多语言即将推出)——tsserver/TypeScript-Go的类型解析算法(参数绑定、返回类型推理、泛型替换、JSX组件调度、普通JS文件的JSDoc推理)的全新实现
- RAM第一流水线:LZ4压缩,内存SQLite,末尾单转储。记忆释放之后。
分销与运营
- 单一静态二进制,零基础设施:SQLite支持,坚持
~/.cache/codebase-memory-mcp/ - 自动同步:后台监视器检测文件更改并自动重新索引
- 路由节点:REST端点是一级图实体
- CLI模式:
codebase-memory-mcp cli search_graph '{"name_pattern": ".*Handler.*"}' - 可用的:npm、PyPI、自制、Scoop、Winget、巧克力、AUR,
go install
团队共享图形工件
将一个压缩文件提交到你的仓库,你的队友跳过重新索引。
.codebase-memory/graph.db.zst 是位于源代码旁边的知识图的zstd压缩快照。当您进行索引时,工件会被写入或刷新;当队友克隆repo并跑步时 codebase-memory-mcp 工件首次被解压缩,增量索引填充了它们的局部差异。
- 格式:SQLite数据库,索引被剥离,
VACUUM INTO压实,然后压缩zstd 1.5.7(典型比例为8-13:1) - 两层:
- 最佳 (zstd -9 +索引条+ VACUUM INTO)--写在明确的 index_repository - 快 (zstd -3)--由观察者编写,用于低延迟增量更新
- 独自创立:当不存在本地DB但存在伪影时,
index_repository首先导入工件,然后运行增量索引——避免了完全的重新索引成本 - 没有合并痛苦一
.gitattributes带有merge=ours在首次导出时自动创建,因此并发编辑不会在二进制工件上产生冲突 - 可选的:除非你愿意,否则永远不要承诺。添加
.codebase-memory/到.gitignore如果你希望每个人都从头开始重新索引。
结果在精神上与graphify的相似 graphify-out/ 目录,但作为一个具有显式两层导出、完整性检查导入和零合并摩擦的单个压缩文件。
运作原理
代码库内存mcp是一个 结构分析后端 --它构建和查询知识图。确实如此 不 包括法学硕士。相反,它依赖于您的MCP客户端(Claude Code或任何与MCP兼容的代理)作为智能层。
You: "what calls ProcessOrder?"
Agent calls: trace_call_path(function_name="ProcessOrder", direction="inbound")
codebase-memory-mcp: executes graph query, returns structured results
Agent: presents the call chain in plain English为什么没有内置LLM? 其他代码图工具嵌入了自然语言的LLM→ 图形查询翻译。这意味着要配置额外的API键、额外的成本和另一个模型。使用MCP,您已经在与之交谈的代理 *是* 查询翻译器。
演出
以苹果M3 Pro为基准:
| 操作 | 时间 | 备注 |
|---|---|---|
| Linux内核完整索引 | 3分钟 | 28M LOC,75K文件→ 2.1M个节点,4.9M条边 |
| Linux内核快速索引 | 1m 12s | 1.88M节点 |
| Django全索引 | ~6s | 49K个节点,196K条边 |
| 密码查询 | \ Windows注释:SmartScreen可能会显示未签名软件的警告。点击 “更多信息” → “无论如何都要运行”.验证完整性 checksums.txt. |
设置脚本
Automated download + install
macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/scripts/setup.sh | bashWindows(PowerShell):
irm https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/scripts/setup-windows.ps1 | iexAUR(Arch Linux)
yay -S codebase-memory-mcp-binparu -S codebase-memory-mcp-bin这 codebase-memory-mcp-bin 套餐可在以下网址购买:https://aur.archlinux.org/packages/codebase-memory-mcp-bin
通过Claude代码安装
You: "Install this MCP server: https://github.com/DeusData/codebase-memory-mcp"从源代码构建
Prerequisites: C compiler + zlib
| 要求 | 检查 | 安装 |
|---|---|---|
| C编译器 (gcc或clang) | gcc --version 或 clang --version | macOS: xcode-select --install,Linux: apt install build-essential |
| C++编译器 | g++ --version 或 clang++ --version | 与上述相同 |
| 压缩算法 | -- | macOS:包括在内,Linux: apt install zlib1g-dev |
| Git | git --version | 预装在大多数系统上 |
git clone https://github.com/DeusData/codebase-memory-mcp.git
cd codebase-memory-mcp
scripts/build.sh # standard binary
scripts/build.sh --with-ui # with graph visualization
# Binary at: build/c/codebase-memory-mcp手动MCP配置
If you prefer not to use the install command
添加 ~/.claude/.mcp.json (全球)或项目 .mcp.json:
{
"mcpServers": {
"codebase-memory-mcp": {
"command": "/path/to/codebase-memory-mcp",
"args": []
}
}
}重新启动您的代理。证实 /mcp --你应该看看 codebase-memory-mcp 14个工具。
多代理支持
install 自动检测并配置所有已安装的代理:
| 代理 | MCP配置 | 说明 | 挂钩 |
|---|---|---|---|
| 克劳德代码 | .claude/.mcp.json | 4技能 | 工具使用前(Grep/Glob/Read提醒) |
| Codex CLI | .codex/config.toml | .codex/AGENTS.md | — |
| Gemini CLI | .gemini/settings.json | .gemini/GEMINI.md | BeforeTool(grep/read提醒) |
| Zed | settings.json (JSON) | -- | -- |
| OpenCode | opencode.json | AGENTS.md | — |
| 反重力 | mcp_config.json | AGENTS.md | — |
| 助手 | -- | CONVENTIONS.md | — |
KiloCode 的 mcp_settings.json | ~/.kilocode/rules/ | — | |
| VS代码 | Code/User/mcp.json | — | — |
| OpenClaw | openclaw.json | — | — |
| 基罗 | .kiro/settings/mcp.json | — | — |
钩子 是建议性的(退出代码0)——它们提醒代理在调用grep/glob/read时更喜欢MCP图工具,而不会阻止工具调用。
命令行接口命令模式
每个MCP工具都可以从命令行调用:
codebase-memory-mcp cli index_repository '{"repo_path": "/path/to/repo"}'
codebase-memory-mcp cli search_graph '{"name_pattern": ".*Handler.*", "label": "Function"}'
codebase-memory-mcp cli trace_call_path '{"function_name": "Search", "direction": "both"}'
codebase-memory-mcp cli query_graph '{"query": "MATCH (f:Function) RETURN f.name LIMIT 5"}'
codebase-memory-mcp cli list_projects
codebase-memory-mcp cli --raw search_graph '{"label": "Function"}' | jq '.results[].name'MCP工具
索引
| 工具 | 说明 |
|---|---|
index_repository | 将存储库索引到图中。自动同步使其在那之后保持新鲜。 |
list_projects | 列出所有具有节点/边计数的索引项目。 |
delete_project | 删除项目及其所有图形数据。 |
index_status | 检查项目的索引状态。 |
询问
| 工具 | 说明 |
|---|---|
search_graph | 按标签、名称模式、文件模式、程度过滤器进行结构化搜索。通过限制/偏移进行分页。 |
trace_call_path | BFS遍历——谁调用函数以及它调用什么。深度1-5。 |
detect_changes | 将git diff映射到受影响的符号+爆炸半径,并进行风险分类。 |
query_graph | 执行类似Cypher的图形查询(只读)。 |
get_graph_schema | 节点/边计数、关系模式、每个标签的属性定义。先运行这个。 |
get_code_snippet | 按限定名读取函数的源代码。 |
get_architecture | 代码库概述:语言、包、路由、热点、集群、ADR |
search_code | 在索引项目文件中进行类似Grep的文本搜索。 |
manage_adr | 用于架构决策记录的CRUD。 |
ingest_traces | 获取运行时跟踪以验证HTTP_CALLS边。 |
图形数据模型
节点标签
Project, Package, Folder, File, Module, Class, Function, Method, Interface, Enum, Type, Route, Resource
边缘类型
CONTAINS_PACKAGE, CONTAINS_FOLDER, CONTAINS_FILE, DEFINES, DEFINES_METHOD, IMPORTS, CALLS, HTTP_CALLS, ASYNC_CALLS, IMPLEMENTS, HANDLES, USAGE, CONFIGURES, WRITES, MEMBER_OF, TESTS, USES_TYPE, FILE_CHANGES_WITH
限定名称
get_code_snippet 使用限定名称: . ..使用 search_graph 首先发现它们。
支持的Cypher子集
query_graph 支持: MATCH 具有标签和关系类型、可变长度路径, WHERE 通过比较/regex/CONTAINS, RETURN 与财产访问和 COUNT/DISTINCT, ORDER BY, LIMIT。不支持: WITH, COLLECT, OPTIONAL MATCH,突变。
忽略文件
分层:硬编码模式(.git, node_modules等等)→ .gitignore 层级→ .cbmignore (项目特定的gitignore语法)。符号链接总是被跳过。
配置
codebase-memory-mcp config list # show all settings
codebase-memory-mcp config set auto_index true # auto-index on session start
codebase-memory-mcp config set auto_index_limit 50000 # max files for auto-index
codebase-memory-mcp config reset auto_index # reset to default环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
CBM_CACHE_DIR | ~/.cache/codebase-memory-mcp | 覆盖数据库存储目录。所有项目索引和配置都存储在这里。 |
CBM_DIAGNOSTICS | false | 设置为 1 或 true 以实现定期诊断输出 `/tmp/cbm-diagnostics- |
| .json`. | ||
CBM_DOWNLOAD_URL | *(GitHub发布)* | 覆盖更新的下载URL。用于测试或自托管部署。 |
# Store indexes in a custom directory
export CBM_CACHE_DIR=~/my-projects/cbm-data自定义文件扩展名
通过JSON配置文件将其他文件扩展名映射到支持的语言。适用于框架特定的扩展,如 .blade.php (Laravel)或 .mjs (ES模块)。
每个项目 (在您的repo根目录中):
// .codebase-memory.json
{"extra_extensions": {".blade.php": "php", ".mjs": "javascript"}}全球的 (适用于所有项目):
// ~/.config/codebase-memory-mcp/config.json (or $XDG_CONFIG_HOME/...)
{"extra_extensions": {".twig": "html", ".phtml": "php"}}项目配置会覆盖全局冲突扩展。未知的语言值将被自动跳过。缺少的配置文件将被忽略。
坚持
SQLite数据库存储在 ~/.cache/codebase-memory-mcp/。在重启后持续(WAL模式,ACID安全)。要重置: rm -rf ~/.cache/codebase-memory-mcp/.
故障排除
| 问题 | 修复 | |
|---|---|---|
/mcp 不显示服务器 | 检查 .mcp.json 路径是绝对的。重新启动代理。测试: `echo '{}' \ | /path/to/binary` 应该输出JSON。 |
index_repository fails | 传递绝对路径: index_repository(repo_path="/absolute/path") | |
trace_call_path 返回0个结果 | 使用 search_graph(name_pattern=".*PartialName.*") 首先找到确切的名字。 | |
| 查询返回错误的项目结果 | 添加 project="name" 参数。使用 list_projects 看名字。 | |
| 安装后找不到二进制文件 | 添加到PATH: export PATH="$HOME/.local/bin:$PATH" | |
| UI未加载 | 请确保已下载 ui 变种和ran --ui=true.检查 http://localhost:9749. |
语言支持
155种语言,所有语言都通过编译成二进制文件的厂商提供的树型语法进行解析。以64个真正的开源存储库(78到49K节点)为基准:
| 级别 | 分数 | 语言 |
|---|---|---|
| 优秀 (>=90%) | Lua、Kotlin、C++、Perl、Objective-C、Groovy、C、Bash、Zig、Swift、CSS、YAML、TOML、HTML、SCSS、HCL、Dockerfile | |
| 好 (75-89%) | Python、TypeScript、TSX、Go、Rust、Java、R、Dart、JavaScript、Erlang、Elixir、Scala、Ruby、PHP、C#、SQL | |
| 功能的 (\ --repo DeusData/codebase-memory-mcp` |
- Sigstore联名签名 --所有工件上的无钥匙签名;每个版本中都包含捆绑包
- SHA-256校验和 —
checksums.txt每次发布时都会发布;提取前由两个安装脚本验证 - CodeQL SAST --如果仍有任何打开的警报,则阻止释放管道
- 零运行时依赖关系 --没有可传递的供应链;编译时提供的所有库
v0.6.1病毒总扫描
| 二进制 | SHA-256 | VirusTotal |
|---|---|---|
linux-amd64 | 7e6624b345f994afb901... | 0/72 ✅ |
linux-arm64 | ac2498c45235c1bf37f8... | 0/72 ✅ |
darwin-arm64 | 3e72c8cb364c431d99f1... | 0/72 ✅ |
darwin-amd64 | 7836878876c8956f6413... | 0/72 ✅ |
windows-amd64 | d773be23ed0823d58677... | 0/72 ✅ |
每个版本的扫描链接也会自动包含在GitHub发行说明中。
许可证
麻省理工学院
