赋予 Claude 发现 GitHub 工具的能力,具有亚线性智能。
RuvScan 是一个 模型上下文协议 (MCP) 服务器,连接到 Claude Code CLI、Codex 和 Claude Desktop。它将 GitHub 转变为你的 AI 的个人创新侦察员——寻找工具、框架和解决方案,这些是你从未想过要搜索的。
哦,这是一个正在进行的工作——所以提出更改建议以使其更好。
它附带了 RUVNET 仓库,但你可以添加任何其他仓库,如 Andrej Karpathy 的或其他在你工作领域前沿的人的仓库。
一个真正理解你想构建什么的 GitHub 搜索。
你在构建一些新的东西(应用程序或功能)。你知道可能有一个库、框架或算法可以让你的项目提升十倍。但是:
RuvScan 像一个有创意的开发者一样思考,而不是搜索引擎:
你:我在构建一个 AI 应用程序。上下文检索太慢了。
RuvScan:这里有一个亚线性时间求解器,可以替换你的向量数据库查询。它来自科学计算,但 O(log n) 算法完美地适用于语义搜索。这里是集成方法……
它找到:
如何表述你的请求有助于该工具提供直接的帮助或边缘解决方案。这里有一些更多的例子,展示如何表述以显示不同的解决方案。(更多示例稍后)
实际响应将以易于理解的纯英语给出,并建议最先进的内容。
RuvScan 与 Claude Code CLI、Codex CLI 和 Claude Desktop 兼容。选择你的平台:
注意:为了使它正常工作,必须发生两件事。
/MCP 并检查是否正确安装(你会看到一个 x 或更糟的情况,没有工具显示)。如果是这种情况,请问 Claude - 你好,修复我的 RuvScan MCP 服务器。# 1. 启动 RuvScan 后端
git clone https://github.com/ruvnet/ruvscan.git && cd ruvscan
docker compose up -d
# 2. 将 MCP 服务器添加到 Claude
claude mcp add ruvscan --scope user --env GITHUB_TOKEN=ghp_your_token -- uvx ruvscan-mcp
# 3. 开始使用!
claude
# 1. 启动 RuvScan 后端
git clone https://github.com/ruvnet/ruvscan.git && cd ruvscan
docker compose up -d
# 2. 使用 pipx 全局安装
pipx install -e .
# 3. 配置 ~/.codex/config.toml
# 请参阅下面的“对于 Codex CLI”部分以获取配置详情
# 4. 开始使用!
codex
ℹ️ 需要 GitHub 个人访问令牌。 RuvScan 会大量调用 GitHub API;如果没有令牌,你将立即达到匿名速率限制,扫描将失败。创建一个具有
repo(读取)和read:org范围的细粒度或经典令牌,然后在运行 MCP 客户端和后端的所有地方暴露它为GITHUB_TOKEN。
1. 启动后端:
git clone https://github.com/ruvnet/ruvscan.git && cd ruvscan
docker compose up -d
2. 添加到配置(macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ruvscan": {
"command": "uvx",
"args": ["ruvscan-mcp"],
"env": {
"GITHUB_TOKEN": "ghp_your_github_token_here"
}
}
}
}
3. 重启 Claude Desktop(Cmd+Q 并重新打开)
Codex CLI 使用相同的 MCP 协议。启动 Docker 后端之后:
步骤 1:全局安装 RuvScan
cd ruvscan
pipx install -e .
步骤 2:配置 Codex
编辑 ~/.codex/config.toml 并添加:
[mcp_servers.ruvscan]
command = "ruvscan-mcp"
[mcp_servers.ruvscan.env]
GITHUB_TOKEN = "ghp_your_github_token_here"
RUVSCAN_API_URL = "http://localhost:8000"
步骤 3:测试是否工作
# 从任何目录
cd /tmp
codex mcp list | grep ruvscan
# 应该显示:ruvscan ruvscan-mcp - GITHUB_TOKEN=*****, RUVSCAN_API_URL=***** - enabled
# 开始对话
codex
> 你能扫描 Anthropic 的 GitHub 组织吗?
✅ 全局安装:RuvScan 现在在所有项目和目录中都可以使用!
如果你的 Codex 构建包括 mcp add 命令:
codex mcp add --env GITHUB_TOKEN=ghp_your_token --env RUVSCAN_API_URL=http://localhost:8000 -- ruvscan-mcp ruvscan
🧪 当实验
mcp dev时,运行mcp dev --transport sse src/ruvscan_mcp/mcp_stdio_server.py。 服务器现在会执行健康检查,并且如果五分钟后没有客户端完成握手,则会关闭并给出明确的解释(例如,当传输不匹配时)。
检查 MCP 服务器状态:
codex mcp list
验证命令是否存在:
which ruvscan-mcp
# 应输出:/home/your-user/.local/bin/ruvscan-mcp
直接测试命令:
ruvscan-mcp --help
查看 Codex 日志:
tail -f ~/.codex/log/codex-tui.log
📚 详细的 Codex 设置指南:docs/CODEX_CLI_SETUP.md
read:org。GitHub 的操作指南在这里:https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classicdocker compose、uvicorn 或 codex/claude mcp add 之前,在你的 shell 中导出它(export GITHUB_TOKEN=ghp_...),以便后端可以认证 API 调用。.env.example 到 .env 并在那里放置令牌,以便容器继承它。.env.local;scripts/seed_database.py 在播种时会自动拾取它。docker compose up 运行的内容mcp-server(Python/FastAPI) - 在端口 8000 上托管 MCP HTTP API,读取 GITHUB_TOKEN,将数据写入 ./data/ruvscan.db,并公开 /scan、/query、/compare 和 /analyze 端点。scanner(Go) - 后台工作者(主机上的端口 8081 ↔ 容器内的端口 8080)调用 GitHub REST API,获取 README/主题元数据,并将结果 POST 回 MCP 服务器的 /ingest。rust-engine(Rust) - 用于 Johnson–Lindenstrauss O(log n) 相似性的可选 gRPC 服务,默认情况下禁用,只有当你运行 docker compose --profile rust-debug up 时才会启动。./data 和 ./logs 绑定挂载,因此你的 SQLite 数据库和日志在容器重启之间持久存在。📖 完整安装指南:docs/MCP_INSTALL.md
开箱即用,RuvScan 已经包含了一个 data/ruvscan.db 文件,其中填充了大约 100 个来自 ruvnet 组织的公共仓库。这意味着新鲜克隆的 MCP 服务器启动后可以立即回答诸如“我们有什么实时流媒体工具?”等问题——无需额外步骤。
data/ruvscan.db 后。# 刷新捆绑的 ruvnet 数据集
python3 scripts/seed_database.py --org ruvnet
# 添加不同的组织或用户(例如 OpenAI)
python3 scripts/seed_database.py --org openai --limit 30
# 跳过 README 下载,进行快速元数据传递
python3 scripts/seed_database.py --no-readmes
更喜欢点击而不是脚本?告诉你的 MCP 客户端:
./scripts/ruvscan scan org anthropics --limit 25任一途径都会将新仓库存储在预加载的 ruvnet 条目旁边,因此每次未来的查询都可以参考它们。
检查里面有什么:
sqlite3 data/ruvscan.db "SELECT COUNT(*), MIN(org), MAX(org) FROM repos;"
data/ruvscan.db SQLite 文件中。每一行捕获仓库的所有者、名称、描述、主题、README 文本、星数、主要语言以及 last_scan 时间戳,以便我们知道何时获取它。scan_github 命令(无论是通过 CLI 还是 Claude)。# 显示当前目录中的每个组织/用户
sqlite3 data/ruvscan.db "
SELECT org, COUNT(*) AS repos
FROM repos
GROUP BY org
ORDER BY repos DESC;"
# 查看最新的条目以确认哪些是最新的
sqlite3 data/ruvscan.db "
SELECT full_name, stars, datetime(last_scan) AS last_seen
FROM repos
ORDER BY last_scan DESC
LIMIT 10;"
更喜欢友好的视图?运行 ./scripts/ruvscan cards --limit 20 列出顶级缓存的仓库及其摘要。
docker compose down 或 Ctrl-C 开发服务器)。cp data/ruvscan.db data/ruvscan.db.bak。rm -f data/ruvscan.db。python3 scripts/seed_database.py --org ruvnet --limit 100
# 或
./scripts/ruvscan scan org my-company --limit 50
重新启动 MCP 服务器,它只会知道你刚刚播种或扫描的仓库。
⚠️ 提醒:数据库保留 last_scan 时间戳。更新同一个组织只是刷新行,而不是复制它们。如果你依赖捆绑的样本数据,请考虑每月重新运行刷新,以确保目录保持最新。
📚 完整指南:Database Seeding Documentation
RuvScan 使用三个简单的信号对每个缓存的仓库进行评分,以匹配你的意图:
目标是突出显然有用的仓库,而不让你过度拉伸。
freeCodeCamp/mail-for-good、DusanKasan/parsemail、ruvnet/FACT 等。这些仓库讨论了 电子邮件解析、活动管道 和 确定性摘要——关键词几乎完美地匹配请求。ruvnet/sublinear-time-solver(其中包括一个可以咀嚼大型 HTML 存档