关于 codemunch-pro
CodeMunch Pro 是面向编码 Agent 的代码索引 MCP 服务,可检索本地目录及远程仓库。它结合 AST、混合搜索和调用图,并按字节偏移直接读取符号源码。
主要功能
- 01索引本地目录与远程仓库
- 02支持 10 种编程语言
- 03FTS5 与向量混合搜索
- 04按偏移读取符号源码
- 05分析函数调用关系
适用场景
- 01为编码 Agent 提供代码上下文
- 02审查函数签名变更影响
- 03语义搜索代码实现位置
- 04重构前追踪调用关系
MCP 相关
通过 stdio 或 HTTP 向 MCP 客户端提供 15 种代码索引与检索工具,包括符号搜索、源码读取和调用图查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
CodeMunch Pro
智能代码索引 MCP 服务。15 个工具、10 种语言、tree-sitter AST 提取、混合搜索(FTS5 + 向量)、调用图、远程仓库索引、增量索引。
节省 99% 的 token — 通过字节偏移定位获取精确的函数源码,无需读取整个文件。
安装
pip install codemunch-pro
快速开始
Claude Desktop / Cline
在 MCP 客户端配置中添加:
{
"mcpServers": {
"codemunch-pro": {
"command": "codemunch-pro"
}
}
}
HTTP 服务
codemunch-pro --transport streamable-http --port 5002
15 个 MCP 工具
| 工具 | 描述 |
|---|---|
index_folder | 索引本地目录(增量式,基于 SHA-256) |
index_repo | 索引 GitHub/GitLab 仓库(下载 tarball,无需 git) |
list_repos | 列出所有已索引的仓库及其统计信息 |
invalidate_cache | 强制重新索引仓库 |
file_tree | 获取目录树及文件数量 |
file_outline | 列出单个文件中的符号 |
repo_outline | 列出仓库中的所有符号(摘要) |
get_symbol | 获取一个符号的完整源码(O(1) 字节定位) |
get_symbols | 批量获取多个符号 |
search_symbols | 混合搜索(FTS5 + 向量 RRF) |
search_text | 在文件内容中进行全文搜索 |
get_callees | 此函数调用了什么? |
get_callers | 谁调用了此函数? |
diff_symbols | 自上次索引后有哪些变化?(PR 审查) |
dependency_map | 此文件依赖什么?又有哪些内容依赖它? |
10 种语言
Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、C#、Ruby
全部通过 tree-sitter-language-pack 实现 — 无需编译,提供预构建二进制文件。
主要功能
O(1) 符号获取
每个符号都存储其字节偏移和长度。get_symbol 直接定位到函数源码 — 无需读取整个文件。一个来自 40KB 文件的 200 字节函数 = 节省 99.5% 的 token。
增量索引
文件使用 SHA-256 哈希。仅重新解析发生变化的文件。修改一个文件后,重新索引包含 10K 个文件的仓库只需几毫秒。
混合搜索(FTS5 + 向量)
使用 Reciprocal Rank Fusion,将 BM25 关键词匹配与语义向量相似度结合起来。搜索“authentication middleware”,即可找到 auth_middleware、verify_token 和 login_handler。
调用图
通过 AST 跟踪函数调用。get_callees("main") 会显示 main 调用了什么。get_callers("authenticate") 会显示谁调用了 authenticate。支持深度遍历。
远程仓库索引(v1.1)
通过 URL 索引任意公开的 GitHub 或 GitLab 仓库 — 无需 git 二进制文件。通过 API 下载 tarball,解压并建立索引。缓存在本地,并通过 SHA 检查数据是否仍然新鲜。支持使用身份验证令牌访问私有仓库,并支持稀疏路径。
###全文内容搜索 搜索原始文件内容 — 字符串字面量、TODO 注释、配置值、错误消息。不仅限于符号名称。
工作原理
- 解析 — tree-sitter 为每个源文件构建 AST
- 提取 — 遍历 AST,查找函数、类、方法、类型、接口
- 存储 — 每个仓库使用一个带有 FTS5 虚拟表的 SQLite 数据库
- 嵌入 — FastEmbed(ONNX,仅使用 CPU)为语义搜索生成 384 维向量
- 构图 — 从函数体中提取调用表达式,存储并解析边
- 提供服务 — FastMCP 通过 stdio 或 HTTP 暴露 13 个工具
架构
~/.codemunch-pro/
├── myproject_a1b2c3d4e5f6.db # Per-repo SQLite database
├── otherproject_7890abcdef.db
└── ...
Each DB contains:
├── files # Indexed files with SHA-256 hashes
├── symbols # Functions, classes, methods, types
├── symbols_fts # FTS5 full-text search index
├── symbols_vec # sqlite-vec 384-dim vector index
├── call_edges # Call graph (caller → callee)
└── file_content_fts # Raw file content search
使用场景
- AI 编码 Agent:让 Agent 精准访问代码库,而不耗尽上下文
- 代码审查:更改函数签名前,找出所有调用者
- 入职:通过语义搜索符号 — 搜索“错误处理在哪里?”,即可找到相关代码
- 重构:在模块间移动函数前绘制调用图
- 文档:提取所有包含签名和文档字符串的公开 API
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。