SuperAPI AI 工具集

mcp-codebase-index

mcp-codebase-index 是一个面向 AI 辅助开发的结构化代码库索引器,并提供 MCP 服务器。它把源代码解析成函数、类、导入、依赖图和跨文件调用链等结构化元数据,再通过 Model Context Protocol 暴露 18 个查询工具,让 Claude Code 等 MCP 客户端无需读取整个文件即可浏览代码库。支持 Python、TypeScript/JS、Go、Rust、C# 等语言,零运行时依赖,需 Python 3.11+,并带有增量重索引与磁盘缓存机制。

访问官网

工具介绍

用途

mcp-codebase-index 是一个结构化代码库索引器,同时提供 MCP(Model Context Protocol)服务器,用于 AI 辅助开发场景,帮助 AI 以结构化方式导航代码库。它的核心目标不是回答“某个函数在哪”,而是回答“改动它会发生什么”。

主要能力

  • 将源代码解析为结构化元数据:函数、类、导入、依赖图、跨文件调用链。
  • 通过 MCP 暴露 18 个查询工具,供 Claude Code 及其他 MCP 客户端调用,避免读取整个文件。
  • 零运行时依赖:Python 分析使用 Python 的 ast 模块,TypeScript/JS、Go、Rust、C# 使用基于正则的解析。要求 Python 3.11+。
  • 自动增量重索引:在 git 仓库中,每次查询前检查 git diff 与 git status(约 1-2ms),若文件有变化,仅重新解析变更文件并重建依赖图,无需手动 reindex。
  • 持久化磁盘缓存:每次构建后索引保存到 pickle 缓存文件 .codebase-index-cache.pkl;后续启动时与当前 git HEAD 校验,ref 匹配则瞬时启动;变更文件 ≤20 个时加载缓存并增量更新,而非全量重建。
  • 内置 token 预算控制:如 max_results、max_lines 等参数,响应大小随答案而非代码库规模增长。

使用方式

安装(包含 MCP 服务器依赖):使用带 [mcp] extra 的安装命令;若只需程序化 API 可省略该 extra。开发时也可从本地克隆安装。PROJECT_ROOT 指定要索引的目录,默认为当前工作目录。

持久化缓存行为:缓存命中(精确匹配)时,若缓存 git ref 与当前 HEAD 一致,直接从磁盘加载;缓存命中(小变更集)时,若变更 ≤20 个文件,加载缓存并在首次查询时增量更新;缓存未命中时进行全量重建并保存新缓存。建议将 .codebase-index-cache.pkl 加入 .gitignore。

与 OpenClaw 配置:在运行 OpenClaw 的机器上安装该包,将 MCP 服务器加入 OpenClaw 的 openclaw.json,重启后验证连接,即可使用全部 18 个工具。注意:OpenClaw 默认通过 mcporter 的 MCP 集成会为每次工具调用新建服务器进程,丢弃内存中的索引并强制重建;持久缓存可显著加快这种冷启动。若需持久连接,可使用 openclaw-mcp-adapter 插件。

与 Claude Code 配置:在项目的 .mcp.json 中添加配置,或直接使用 Python 模块(适用于安装在 virtualenv 中的情况)。Claude Code 默认倾向于使用内置的 Glob/Grep/Read 工具;除 CLAUDE.md 说明外,可添加在每次提示时触发的 hooks 来强化行为(SessionStart 在启动、恢复和上下文压缩时触发,UserPromptSubmit 每轮触发)。

重要提示:默认情况下 AI 助手会忽略索引工具并回退到整文件读取;应使用强制性的措辞而非“prefer”这类软性表述,并给出明确的回退条件。

适用场景

适用于 AI 辅助的代码库导航与重构分析,例如查询符号、类、导入关系,评估某符号变更的直接与传递影响(get_change_impact 在 CPython 上找到 154 个直接依赖与 492 个传递依赖,耗时 0.45ms),以及在大型代码库中控制 AI 的 token 消耗。

性能

针对四个真实项目在 M 系列 MacBook Pro 上测试,涵盖小型项目到 110 万行的 CPython。多个针对性查询在 CPython 上仍为亚毫秒级返回;find_symbol 无论项目是 7K 行还是 110 万行,返回 54-67 个字符。可使用 max_direct、max_transitive 限制输出。持久缓存下,CPython 缓存命中可在 1 秒内恢复完整索引,而非 56 秒。基准测试可通过 python benchmarks/benchmark.py 运行。

与 LSP 的区别

LSP 回答“这个函数在哪”,mcp-codebase-index 回答“改动它会发生什么”。LSP 是点查询:一个符号、一个文件、一个位置;无法直接回答“重构某符号后传递性影响什么”。本工具可在单次调用中返回直接与传递影响(示例:11 个直接依赖、31 个传递影响、204 个字符)。LSP 还需为每种语言安装单独的语言服务器(如 pyright、vtsls、gopls),而本工具零依赖,开箱支持 Python、TypeScript/JS、Go、Rust、C#、Markdown,且每个响应都有内置 token 预算控制。

限制

要求 Python 3.11+。对 TypeScript/JS、Go、Rust、C# 使用基于正则的解析。缓存文件为本地构建产物,建议加入 .gitignore。若嵌入专有产品或作为托管服务提供,需要商业许可。

许可与来源

该项目采用双重许可:开源使用为 AGPL-3.0(见 LICENSE),专有使用为商业许可(见 COMMERCIAL-LICENSE.md)。作为独立 MCP 服务器用于开发时适用 AGPL-3.0,无费用。结构化索引器最初作为 RMLPlus 项目(Recursive Language Models 框架的实现)的一部分开发。