引言

“AI Agent 探索代码库时读取每一个文件,消耗 412,000 个 token。换成知识图谱查询,只需要 3,400 个 token。”

这是"每日一个开源项目"系列的第135篇文章。今天的主角是 codebase-memory-mcp——一个用纯 C 编写的代码库知识图谱 MCP 服务器。

你用 Claude Code 处理一个中型项目时,Agent 会怎么理解代码结构?通常是逐文件读取:先看目录结构,再读几个关键文件,再追踪引用,再读更多文件……每一步都在消耗 token,每次新会话都要重新来一遍,大型代码库里很快就触到上下文限制。

codebase-memory-mcp 的思路是:先把代码库的结构信息提取成持久化的知识图谱,存进 SQLite;Agent 需要了解代码结构时,不读文件,查图谱。从"每次重新探索"变成"查询已有的结构记忆"。120 倍的 token 差距来自这个设计改变。

你将学到什么

  • 代码知识图谱的数据模型:节点类型和边类型是什么
  • 两层解析架构:Tree-sitter 语法层 + Hybrid LSP 语义层
  • 14 个 MCP 工具的功能分布:从索引到 Cypher 查询
  • 性能数据:Linux 内核级别的代码库需要多久建完图谱
  • 团队协作场景:共享压缩图谱文件的工作流
  • 安全设计:SLSA Level 3、Sigstore 签名、VirusTotal 扫描

前置知识

  • 使用过 Claude Code 或其他支持 MCP 的 AI 编程工具
  • 了解代码库结构(函数、类、调用关系)的基本概念
  • 了解 MCP 协议的基本概念

项目背景

项目简介

codebase-memory-mcp 是一个代码智能 MCP 服务器,把代码库的结构信息构建成持久化的知识图谱,让 AI Agent 通过结构化查询而非文件读取来理解代码。

"知识图谱"在这里是精确的词:节点是代码结构元素(文件、类、函数、路由、资源),边是结构关系(调用、继承、导入、HTTP 调用、数据流),整个图存在 SQLite 数据库里,支持 Cypher 风格的图查询语言。

项目是 Anthropic 开源后最早出现的高质量 MCP Server 之一,背后有学术论文支撑(arXiv:2603.27277)。

作者/团队介绍

  • 组织: DeusData
  • 语言: 纯 C(零运行时依赖)
  • License: MIT
  • 最新版本: v0.8.1
  • 测试用例: 5,604 个

项目数据

  • ⭐ GitHub Stars: 5,400+
  • 🍴 Forks: 491+
  • 📄 License: MIT
  • 🔬 论文: arXiv:2603.27277

主要功能

核心作用

传统方式(逐文件读取):
AI Agent → 读 file1.py → 读 file2.py → 读 file3.py → ...
            ↓
         ~412,000 tokens,每次会话重复,遇到上下文限制

知识图谱方式:
AI Agent → query_graph("MATCH (f:Function)-[:CALLS]->(g)...")
            ↓
         ~3,400 tokens,结果来自持久化图谱,秒级响应

使用场景

  1. 大型代码库理解:接手陌生代码库时,通过图查询快速定位关键结构,不需要逐文件阅读
  2. 重构辅助:查找所有调用某函数的路径(trace_path),确认改动影响范围
  3. 死代码检测:找到没有被任何调用链触及的孤立函数
  4. 架构分析:用 Leiden 社区检测算法自动识别代码的模块边界
  5. 跨仓库分析CROSS_* 边类型链接多个已索引的仓库,分析服务间依赖

快速开始

安装

# 一键安装脚本
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

# npm
npm install -g codebase-memory-mcp

# PyPI
pip install codebase-memory-mcp

# Homebrew (macOS)
brew install deusdata/tap/codebase-memory-mcp

配置到 Claude Code(自动配置,支持 11 个 Agent):

codebase-memory-mcp setup claude-code

手动配置 ~/.claude/mcp.json

{
  "mcpServers": {
    "codebase-memory": {
      "command": "codebase-memory-mcp",
      "args": ["serve"]
    }
  }
}

在 Claude Code 中使用

# 告诉 Agent 索引当前项目
"Index this project"
# Agent 调用 index_repository,几秒到几分钟后图谱建完

# 之后所有代码探索走图谱,不走文件读取
"Find all functions that call the authentication handler"
"What does the payment flow look like from API to database?"
"Are there any functions that are never called?"

CLI 直接查询

# 搜索包含 Handler 的函数
codebase-memory-mcp cli search_graph \
  '{"name_pattern": ".*Handler.*", "label": "Function"}'

# 追踪某函数的调用路径
codebase-memory-mcp cli trace_path \
  '{"function_name": "processPayment", "direction": "both"}'

# Cypher 图查询
codebase-memory-mcp cli query_graph \
  '{"query": "MATCH (f:Function)-[:CALLS]->(g:Function) WHERE f.name = \"main\" RETURN g.name"}'

14 个 MCP 工具

工具 功能
index_repository 索引代码库,构建或更新知识图谱
search_graph 按名称模式/标签搜索节点
search_code 四阶段混合代码搜索(grep + 图智能)
semantic_query 向量嵌入语义搜索(Nomic nomic-embed-code)
trace_path 追踪函数调用链(可指定方向和深度)
query_graph 原生 Cypher 图查询
find_dead_code 检测未被调用的孤立代码
analyze_architecture 用 Leiden 算法检测模块边界
get_node 获取单个节点的详细信息
list_routes 列出所有 HTTP 路由(REST API 分析)
get_dependencies 获取包/模块的依赖关系
get_graph_stats 图谱统计(节点数、边数、覆盖率)
watch_repository 启动后台 Git 感知自动同步
get_index_status 查看索引状态和进度

项目详细剖析

知识图谱数据模型

图谱里的节点和边涵盖代码库的完整结构语义:

节点类型(部分)

Project     ← 仓库根节点
Package     ← 包/模块
File        ← 源文件
Class       ← 类定义
Function    ← 独立函数
Method      ← 类方法
Route       ← HTTP 路由端点
Resource    ← 基础设施资源(K8s、Docker)

边类型(部分)

CALLS           ← 函数/方法调用关系
IMPORTS         ← 模块导入关系
INHERITS        ← 类继承关系
HTTP_CALLS      ← 跨服务 HTTP 调用
EMITS           ← 事件发送(消息队列)
LISTENS_ON      ← 事件监听
DATA_FLOWS      ← 数据流向关系
SIMILAR_TO      ← MinHash 近似重复代码
CROSS_*         ← 跨仓库依赖边

这个数据模型的精度超过大多数 IDE 的符号索引。DATA_FLOWSHTTP_CALLS 边需要理解运行时行为,不只是语法结构。

两层解析架构

解析流水线
    ↓
Layer 1: Tree-sitter
    ├── 158 种语言的语法分析
    ├── 提取:函数/类/方法定义、调用关系、导入
    └── 速度极快,但只有语法层面的信息
         (不知道泛型实例化的具体类型、跨模块的类型解析)
    ↓
Layer 2: Hybrid LSP(9 种语言)
    ├── Python、TypeScript/JS、PHP、C#
    ├── Go、C/C++、Java、Kotlin、Rust
    └── 类型感知分析:
        ├── 跨模块调用解析(知道 foo() 调用的是哪个 foo)
        ├── 泛型实例化
        ├── 继承链解析
        └── 类型推断

关键:Hybrid LSP 不启动语言服务器进程,在进程内完成类型解析

v0.7.0 引入 Hybrid LSP 后,TypeScript 编译器索引时间从 ~5,100 秒降到 ~50 秒(100 倍提升)。代价是仅对 9 种主流语言有效,其余 149 种语言只有 Tree-sitter 语法层。

Cypher 查询语言

图谱支持类似 Neo4j Cypher 的查询语法:

-- 找出所有被超过 5 个函数调用的函数(高耦合节点)
MATCH (g:Function)<-[:CALLS]-(f:Function)
WITH g, count(f) AS caller_count
WHERE caller_count > 5
RETURN g.name, caller_count
ORDER BY caller_count DESC

-- 找出完整的认证调用链
MATCH path = (api:Route)-[:CALLS*..5]->(auth:Function)
WHERE auth.name CONTAINS "authenticate"
RETURN path

-- 检测循环依赖
MATCH (a:Package)-[:IMPORTS]->(b:Package)-[:IMPORTS]->(a)
RETURN a.name, b.name

查询延迟 小于1ms,因为 SQLite 在 WAL 模式下运行,图遍历和过滤在 C 层执行。

性能基准

在 Apple M3 Pro 上测试:

操作 时间
Linux 内核完整索引(28M LOC,75K 文件) ~3 分钟
Django 完整索引(约 10 万行) ~6 秒
平均规模仓库 毫秒级
Cypher 查询 小于1ms
追踪调用路径(深度 5) 小于10ms
死代码检测 ~150ms

纯 C 实现是性能的基础:没有 GC 暂停,没有 JVM 预热,没有 Python 解释器开销,索引过程全程在 C 层进行。

团队协作:共享图谱文件

这是一个值得单独说的设计:

# 把压缩后的图谱文件提交到 git
git add .codebase-memory/graph.db.zst
git commit -m "update codebase knowledge graph"
git push

# 队友克隆后直接用,不需要重新索引
git clone ...
codebase-memory-mcp serve  # 图谱已经在 .codebase-memory/ 里

graph.db.zst 是 Zstandard 压缩的 SQLite 数据库。对大型代码库,团队里每人重新索引一遍浪费时间;由 CI 生成并提交图谱文件,其他人直接用。

安全设计

单一可执行二进制的分发方式有供应链风险,这个项目的安全措施比多数同类项目完善:

  • SLSA Level 3 构建来源:每个 Release 的构建过程有可验证的来源证明
  • Sigstore cosign 无密钥签名:不需要管理 GPG 密钥,签名可以通过 Sigstore 链验证
  • VirusTotal 扫描:v0.8.1 的二进制在 72 个引擎上 0/72 检出
  • CodeQL SAST:代码安全静态分析作为发布门禁
  • 本地处理承诺:所有代码处理发生在本地,不发送到外部服务
  • HTTP 绑定 127.0.0.1:内置可视化界面只接受本地连接,v0.8.1 明确排除了任何非 localhost 访问路径

项目地址与资源

官方资源

分发渠道

npm、PyPI、Homebrew、Scoop、Winget、AUR、Chocolatey、MCP Registry 官方目录


总结

codebase-memory-mcp 的核心贡献是把一个系统性问题做出了工程解答:AI Agent 探索代码库的方式效率极低,每次会话重新读文件,token 消耗是结构查询的 120 倍。

知识图谱的思路在数据库领域是成熟的,但专门为代码库 + MCP 接口设计并实现的工具并不多。纯 C + 零依赖的实现使它成为分发最容易、性能最稳定的选项之一;158 语言覆盖和 Hybrid LSP 语义层解析使它对多语言代码库实际可用;14 个 MCP 工具的接口设计使 Agent 可以精确描述想要的结构信息。

对于长期在同一个代码库上工作的开发者,或者使用 Claude Code 处理超过 5 万行代码的场景,这个 MCP 服务器值得装上试试。


探索 PrimeSkills —— 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。

欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐