Token导航 LogoToken导航TokenDH.com
srag (Wrxck) logo
开发工具stdio官方级别未说明来源级核验

srag (Wrxck)

MCP Server

@modelcontextprotocol/inspector

srag是一款跨仓库的语义代码搜索工具,通过索引项目代码并支持AI编程助手查询,帮助开发者快速复用现有实现、保持代码风格一致并提升开发效率。

工具数

9

提示词数

0

GitHub Stars

22

资源数

0
代码搜索RustClaudeClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

wrxck

提供方

wrxck

最后核验

2026/5/17 20:23

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @modelcontextprotocol/inspector srag mcp

详细介绍

srag

在所有存储库中进行语义代码搜索。索引你的项目一次,然后通过MCP查询它们——你的AI编码助手可以即时访问你写过的每一个模式、实现和约定。

为什么?

AI编码助手擅长编写代码,但他们不知道 *你的* 代码。当你已经有一个身份验证流时,他们会建议一个新的身份验证流。当你的日志模式就在那里时,他们会发明一种日志模式。他们会问你在另一个项目中已经回答过的问题。

srag解决了这个问题。对存储库进行索引,您的助手可以在语义上搜索所有存储库,找到相关的实现、模式和约定,而无需解释任何内容。

用例

重用自己的实现

“添加OAuth令牌刷新”→ Agent跨项目查找您的现有实现,复制模式,包括您已经处理的边缘情况

一致的代码风格

代理查询 get_project_patterns 在编写代码之前,请查看您使用的 snake_case 对于功能和 PascalCase 对于类型,会自动跟随

找到你写的东西

“我是如何处理限速的?”→ 语义搜索可以找到相关的代码,即使你不记得是哪个项目或你叫它什么

跨项目知识

在项目A中工作,需要与您以前在项目B中使用过的API集成→ 代理找到您之前的集成,重用错误处理和重试逻辑

使用上下文进行调试

“为什么会失败?”→ Agent在代码库中搜索类似的错误处理模式,查找您之前是如何解决同类问题的

上车吧

回到旧项目?查询索引以了解架构,查找定义内容的位置,查看使用的模式

代码审查上下文

“这就是我们通常的做法吗?”→ 搜索类似的实现,以检查与既定模式的一致性

查找重复项

将代码片段传递给 find_similar_code → 发现代码库中几乎可以重构的重复项

实际价值会随着时间的推移而复合。你索引的项目越多,你的助手可以从中提取的模式就越多。质量随模型而变化——更好的模型可以更好地利用检索到的上下文。

安装

你需要先安装Rust和Python 3.10+。

Linux

./install.sh

这将二进制文件构建为 ~/.local/bin/srag 并设置Python ML后端。

如果 ~/.local/bin 不在您的路径中:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc

macOS

./install.sh

该脚本将请求sudo将二进制文件安装到 /usr/local/bin。数据转到 ~/Library/Application Support/srag.

如果你还没有Rust/Python:

brew install rust python@3.12

Windows

使用WSL(Windows Linux子系统)并按照Linux说明进行操作。原生Windows支持尚未到位,但WSL工作正常。

用法

# index a project
srag index /path/to/repo

# re-index all projects (incremental, skips unchanged files)
srag sync

# start file watcher for auto-reindexing
srag watch

# interactive chat
srag chat

# one-shot query
srag query -p myproject -q "what was that authentication we implemented in {project_name}?"

# show index stats
srag status --detailed

MCP服务器

srag mcp 通过stdio启动MCP服务器,以便与AI工具(Claude Code、Cursor等)集成。

直接运行时,它不会产生任何终端输出,而是通过stdin/stdout上的JSON-RPC进行通信。

与Claude Code有内置集成,它将找到您的MCP配置(如果没有,则创建一个),下次使用它时,您可以要求您的代理从srag检查MCP工具——它应该能找到它们。这是安装脚本的一部分。

现在,这就是它成为一个非常强大的工具的地方,因为不仅你的代理能够通过查询嵌入更快地找到代码,而且你在这样做的时候可能会使用更少的令牌,因为这种格式对LLM来说更方便。

我还发现,当代理可以引用您现有的模式时,他们倾向于编写更一致的代码,而不是每次都发明新的模式。

可用的MCP工具

工具说明
list_projects列出所有索引项目及其路径
search_code基于向量相似度的语义搜索
find_similar_code查找与代码段类似的代码
search_symbols按名称模式搜索函数、类或符号
get_file获取文件内容或特定行范围
get_project_patterns分析项目约定(命名、结构、语言)
text_search全文关键字搜索精确术语
find_callers查找调用特定函数的所有函数
find_callees查找特定函数调用的所有函数

测试MCP服务器

npx @modelcontextprotocol/inspector srag mcp

配置

Config住在 ~/.config/srag/config.toml 在Linux或 ~/Library/Application Support/srag/config.toml 在macOS上。您可以调整要使用的LLM提供程序、上下文大小和文件忽略模式。有一个 config.example.toml 如果你想看看有什么可用的,可以在repo中查看。

对于外部LLM提供商(Anthropic、OpenAI),只需将API键放在配置目录中 api_key.txt 或者设置适当的环境变量。

运作原理

Rust CLI处理文件发现、基于树的代码分块和SQLite+HNSW向量索引。Python sidecar进程管理ML位——嵌入、重新排序和LLM推理。

当您查询时,它会使用互惠排名融合进行混合搜索(向量相似性+全文),然后在将结果传递给LLM之前对其进行重新排名。分块是语言感知的,因此它提取函数、类和其他有意义的单元,而不仅仅是按行数拆分。

还内置了提示注入检测和秘密编校,因此您不会意外地将API密钥泄漏到查询中。

卸载

./uninstall.sh

这删除了二进制Python环境,并提供了清理Claude MCP配置的功能。它会在做任何事情之前准确地显示要删除的内容。

发展

./test.sh    # run all tests (rust + python)
./lint.sh    # run linters (clippy, rustfmt, ruff)
./format.sh  # auto-format code

贡献

欢迎投稿-请参阅 贡献.md 了解详情。

替代方案

还有其他几个语义代码搜索工具值得考虑。以下是srag的比较:

|---------|------|--------|----------|-------------| | 搜索 | |语义向量搜索|是|是|有|有| |全文关键字搜索|是|是|否|是(BM25)| |混合搜索(向量+FTS)|是,RRF融合|是|否|是| |重新排名|是|否|否|是(Jina)| | 索引 | |AST感知组块|是的,树保姆|是的|树保姆|树保姆| |增量(基于哈希)|是,blake3|是|是,mtime|是,SHA-256| |文件监视器|是|是|否|否| |第一次查询时自动索引|是|否|否|不| | 语言 |9(AST)+基于行的|12+|9|2| | 安全 | |快速注射检测|是|否|否|不| |秘密编辑|是|否|否|不| | 整合 | |MCP服务器|是|是|有|有| |多项目支持|是|是,工作区|否|否| |跨项目搜索|是|是|否|否| | 隐私 | |完全本地选项|是|是(Ollama)|是|否(需要Jina API)| | 其他 | |模式分析|是|否|否|不| |类似代码查找器|是|否|否|不| |互动聊天|是|否|否|不| |调用图跟踪|是|是|否|否|

何时使用什么

如果您有以下情况,请选择srag:

  • 需要安全功能(快速注射检测、秘密编辑)
  • 想要混合搜索和重新排序,以获得更好的准确性
  • 有多个项目,需要跨项目搜索
  • 更喜欢无需手动设置的自动索引
  • 想要分析整个代码库中的编码模式
  • 需要调用图跟踪(查找函数的调用者/被调用者)

选择 希腊 如果你:

  • 想要一个不依赖Python的二进制文件
  • 需要最广泛的语言支持(12+)
  • 想要预先构建的AI代理技能

选择 CodeGrok 如果你:

  • 希望GPU加速嵌入生成
  • 需要详细的符号元数据(签名、文档字符串)
  • 更喜欢更简单、更专注的工具

选择 DeepContext 如果你:

  • 想要Jina的嵌入模型
  • 需要自动测试/生成文件排除
  • 主要使用Types/Python

支持的语言

srag使用tree sitter进行AST感知代码分块:

语言扩展
生锈.rs
python .py
JavaScript.js, .jsx, .mjs
TypeScript.ts, .tsx
去吧.go
C .c, .h
C .cpp, .hpp, .cc, .cxx
Java .java
红宝石.rb

基于线条的组块 用于配置和文档文件:Markdown、JSON、YAML、TOML、Shell脚本、SQL、HTML、CSS和环境文件。

许可证

GPL-3.0-见 许可证 了解详情。

目录标签

目录标签

代码搜索RustClaude本地部署AI编程助手代码复用代码风格分析跨项目查询

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@modelcontextprotocol/inspector

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP