关于 Sourcerer Mcp
Sourcerer MCP 是一个用于语义代码搜索与导航的 MCP 服务,面向希望减少 token 消耗的 AI Agent。它基于 Tree-sitter 切分代码块,Agent 无需通读整个文件,即可按概念搜索并直接定位函数、类等代码片段。
主要功能
- 01基于 Tree-sitter 的代码解析与分块
- 02按概念进行语义搜索
- 03通过稳定 ID 获取指定代码块
- 04查找相似代码块
- 05监听文件变化并自动重新索引
- 06遵循 .gitignore 规则
适用场景
- 01让 Agent 在大型代码库中定位相关函数而不读取整个文件
- 02降低 AI Agent 处理代码时的 token 消耗
- 03查找与某段代码功能相似的其他实现
MCP 相关
该服务通过 semantic_search、get_chunk_code、find_similar_chunks、index_workspace 和 get_index_status 等工具向 MCP 客户端提供代码搜索与索引能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Sourcerer MCP 🧙
一款用于语义代码搜索与导航的 MCP 服务,可帮助 AI Agent 高效工作,避免消耗大量昂贵的 token。 Agent 无需读取整个文件,只需进行概念搜索, 即可直接跳转到所需的特定函数、类和代码块。
演示
要求
- OpenAI API Key:生成嵌入向量所必需(计划支持本地嵌入)
- Git:必须是 Git 仓库(遵循
.gitignore文件) - 将
.sourcerer/添加到.gitignore:此目录用于存储嵌入向量数据库
安装
Go
go install github.com/st3v3nmw/sourcerer-mcp/cmd/sourcerer@latest
Homebrew
brew tap st3v3nmw/tap
brew install st3v3nmw/tap/sourcerer
配置
Claude Code
claude mcp add sourcerer -e OPENAI_API_KEY=your-openai-api-key -e SOURCERER_WORKSPACE_ROOT=$(pwd) -- sourcerer
mcp.json
{
"mcpServers": {
"sourcerer": {
"command": "sourcerer",
"env": {
"OPENAI_API_KEY": "your-openai-api-key",
"SOURCERER_WORKSPACE_ROOT": "/path/to/your/project"
}
}
}
}
工作原理
Sourcerer 🧙 会为你的代码库构建语义搜索索引:
1. 代码解析与分块
- 使用 Tree-sitter 将源文件解析为 AST
- 提取具有稳定 ID 的有意义代码块(函数、类、方法、类型)
- 每个代码块都包含源代码、位置信息和上下文摘要
- 代码块 ID 遵循以下格式:
file.ext::Type::method
2. 文件系统集成
- 使用
fsnotify监视文件变更 - 通过
git check-ignore遵循.gitignore文件 - 自动为发生变更的文件重新编制索引
- 存储元数据以追踪修改时间
3. 向量数据库
- 使用 chromem-go 在
.sourcerer/db/中持久化存储向量 - 通过 OpenAI 的 API 生成用于语义相似度搜索的嵌入向量
- 支持概念搜索,而不仅仅是文本匹配
- 保存代码块、对应的嵌入向量及元数据
4. MCP 工具
semantic_search:使用语义搜索查找相关代码get_chunk_code:通过 ID 获取特定代码块find_similar_chunks:查找相似代码块index_workspace:手动触发重新编制索引get_index_status:检查索引进度
这种方法可让 AI Agent 无需读取整个文件即可找到相关代码, 大幅减少 token 用量和认知负担。
支持的语言
要支持一种语言,需要编写 Tree-sitter 查询, 以识别该语言中的函数、类、接口和其他代码结构。
已支持: Go、JavaScript、Markdown、Python、TypeScript
计划支持: C、C++、Java、Ruby、Rust 等
贡献
欢迎所有贡献!请参阅 CONTRIBUTING.md。
$ ls @stephenmwangi.com
- gh:st3v3nmw/obsidian-spaced-repetition
- gh:st3v3nmw/lsfr
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。