mcpField
S
Sourcerer Mcp

Sourcerer Mcp

本地服务
github.com/st3v3nmw开发工具11950 周前更新

关于 Sourcerer Mcp

Sourcerer MCP 是一个用于语义代码搜索与导航的 MCP 服务,面向希望减少 token 消耗的 AI Agent。它基于 Tree-sitter 切分代码块,Agent 无需通读整个文件,即可按概念搜索并直接定位函数、类等代码片段。

主要功能

  1. 01基于 Tree-sitter 的代码解析与分块
  2. 02按概念进行语义搜索
  3. 03通过稳定 ID 获取指定代码块
  4. 04查找相似代码块
  5. 05监听文件变化并自动重新索引
  6. 06遵循 .gitignore 规则

适用场景

  1. 01让 Agent 在大型代码库中定位相关函数而不读取整个文件
  2. 02降低 AI Agent 处理代码时的 token 消耗
  3. 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 无需读取整个文件,只需进行概念搜索, 即可直接跳转到所需的特定函数、类和代码块。

演示

asciicast

要求

  • 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。