Sourcerer Mcp

Sourcerer Mcp

🚀 Sourcerer MCP 🧙

Sourcerer MCP是一个用于语义代码搜索和导航的MCP服务器,它能帮助AI代理高效工作,避免消耗大量昂贵的令牌。借助它,AI代理无需读取整个文件,就能进行概念性搜索,并直接跳转到所需的特定函数、类和代码块。

🚀 快速开始

若想快速体验Sourcerer MCP的功能,可参考以下各部分的操作说明。

✨ 主要特性

  • 语义代码搜索与导航,帮助AI代理高效工作,减少令牌消耗。
  • 支持概念性搜索,可直接跳转到特定代码块。
  • 支持文件系统监控,自动重新索引更改的文件。
  • 提供多种MCP工具,如语义搜索、获取源代码等。

📦 安装指南

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::TypeName::methodName 的模式。

2. 文件系统集成

  • 使用 fsnotify 监控文件更改。
  • 通过 git check-ignore 遵循 .gitignore 文件规则。
  • 自动重新索引更改的文件。
  • 存储元数据以跟踪修改时间。

3. 向量数据库

  • 使用 chromem-go.sourcerer/db/ 中进行持久化向量存储。
  • 通过OpenAI的API生成嵌入向量,以实现语义相似度搜索。
  • 支持概念性搜索,而非仅文本匹配。
  • 维护代码块、其嵌入向量和元数据。

4. MCP工具

  • semantic_search:按概念/功能查找代码。
  • get_source_code:按ID检索特定代码块。
  • index_workspace:手动触发重新索引。
  • get_index_status:检查索引进度。

这种方式使AI代理无需读取整个文件就能找到相关代码,显著减少了令牌使用和认知负担。

支持的语言

语言支持需要编写 Tree-sitter查询 来识别每种语言的函数、类、接口和其他代码结构。

  • 已支持:Go
  • 计划支持:Python、TypeScript、JavaScript

🤝 贡献代码

欢迎所有形式的贡献!

📺 演示

点击下面的链接查看演示: asciicast

⚙️ 系统要求

  • OpenAI API密钥:生成嵌入向量时必需(计划支持本地嵌入)。
  • Git:必须是git仓库(遵循 .gitignore 文件规则)。
  • .sourcerer/ 添加到 .gitignore:该目录用于存储嵌入向量数据库。
  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-22 15:54

相似服务问题