关于 github-repo-mcp
github-repo-mcp 面向评估和探索公开 GitHub 仓库的开发者与 AI Agent,提供仓库健康度、近期提交摘要和新手友好问题筛选。它还可基于 README、文档和热门问题线程进行语义问答。
主要功能
- 01计算仓库健康度评分
- 02按类型汇总近期提交
- 03筛选并评估新手问题
- 04基于文档和问题线程进行语义问答
适用场景
- 01初步评估陌生仓库的维护状况
- 02了解近期变更内容
- 03寻找适合新贡献者的问题
- 04针对仓库文档和问题提问
MCP 相关
该 MCP 服务向兼容客户端提供四种 GitHub 仓库分析工具:健康度、提交摘要、新手问题筛选和语义问答。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @thedhruv07/github-repo-mcpGITHUB_TOKEN密钥GitHub personal access token (classic, no scopes needed for public repos). Raises the rate limit from 60/hr to 5000/hr. https://github.com/settings/tokensVOYAGE_API_KEY密钥Voyage AI API key, required for ask_repo's embeddings. Free tier at https://dashboard.voyageai.com/QDRANT_URLQdrant Cloud cluster URL, required for ask_repo's vector storage. Free tier at https://cloud.qdrant.io/QDRANT_API_KEY密钥API key for your Qdrant Cloud cluster.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| repo | string | 是 | 仓库名称,例如 'anthropic-sdk-python' |
| owner | string | 是 | 仓库所有者或组织,例如 'anthropics' |
详细介绍
github-repo-mcp
一个 MCP(模型上下文协议)服务,让任何 AI Agent(Claude Desktop、Claude Code、Cursor)都能直接分析公开的 GitHub 仓库,无需人工阅读 README、提交记录和问题跟踪器。
为什么要开发这个工具
评估陌生仓库(“这个项目还在积极维护吗?这个问题真的适合新手吗?最近有哪些变化?”)是每位开发者都会反复进行的手动工作。这个服务将其转化为四个可供任何兼容 MCP 的 Agent 调用的工具。
工具
| 工具 | 功能 |
|---|---|
get_repo_health | 根据提交近期情况、问题分流率和贡献者数量,确定性地计算 0–100 的健康评分。立即标记已归档的仓库。 |
summarize_recent_commits | 按类型(功能/修复/文档/重构/杂项)对过去 N 天的提交分组,快速了解“有哪些变化”。 |
find_good_first_issues | 查找标记为适合新手的问题,为每个问题评估其描述是否真正清晰,并标记看似标签错误的问题(例如,尽管带有“good first issue”标签,却涉及核心架构)。 |
ask_repo | 基于嵌入的语义搜索(Voyage AI + Qdrant 余弦相似度),在 README、docs/*.md 和热门问题讨论串中进行自由文本问答。 |
设置
npm install
cp .env.example .env
# Add a GitHub personal access token to .env — raises the rate limit from 60/hr to 5000/hr.
# No special scopes needed for public repo data: https://github.com/settings/tokens
#
# ask_repo also needs, both free tier:
# VOYAGE_API_KEY — https://dashboard.voyageai.com/ (API Keys -> Create new key)
# QDRANT_URL, QDRANT_API_KEY — https://cloud.qdrant.io/ (create a free cluster)
npm run build
使用 Claude Desktop 在本地运行
将以下内容添加到 Claude Desktop MCP 配置文件(claude_desktop_config.json)中:
{
"mcpServers": {
"github-repo-mcp": {
"command": "node",
"args": ["/absolute/path/to/github-repo-mcp/build/index.js"],
"env": { "GITHUB_TOKEN": "your_token_here" }
}
}
}
重启 Claude Desktop,然后试试:“使用 github-repo-mcp 检查 facebook/react 的健康状况,并帮我找一个适合新手的问题。”
架构说明
- 使用 GitHub API,而非抓取网页——接口整洁、文档完善,使用令牌时还有宽裕的速率限制。
- 确定性评分,生成式说明——
get_repo_health的评分采用固定公式(近期情况 + 问题分流 + 贡献者多样性),而非由大模型猜测。这让评分结果可以复现;大模型(位于调用方 Agent 中)可以在此基础上说明原因。 - 在
find_good_first_issues中检测标签错误——真正适合新手的问题标签往往不准确。该工具会检查正文长度、危险关键词(架构、迁移、安全)和评论数量,以发现标签错误的问题,而非仅仅照单全收。
演示
请参阅 docs/demo.md,了解与 facebook/react 进行的真实(非模拟)协议交互,其中基于嵌入的 ask_repo 会针对一个与源文本毫无共同词语的查询检索出正确答案。
ask_repo 检索的工作原理
ask_repo 最初采用基于 README 的关键词窗口检索(参见 git 历史记录),后来升级为基于嵌入的 RAG,实现在 src/rag.ts 中:
- 首次查询某个仓库时,对 README、
docs/*.md(顶层文件,最多 15 个)以及讨论最热烈的 8 个 issue 讨论串(标题 + 正文,约 500 词的文本块,重叠 50 词)进行分块 - 使用 Voyage AI(
voyage-3.5-lite)为每个文本块生成嵌入 - 将向量存储在 Qdrant Cloud 中,每个仓库对应一个 collection(
repo_<owner>_<name>) - 每次查询时:为问题生成嵌入,通过余弦相似度搜索排名前 5 的文本块
- 后续查询同一仓库时会跳过重新索引(通过 collection 的
points_count检查)——只有查询本身会生成嵌入
为什么使用嵌入而不是关键词匹配: 关键词重合要求字面上有相同的词——“how do I install React?” 和标题为 “Getting Started” 的 README 章节没有共同词汇,因此永远不会匹配。无论具体措辞如何,嵌入都会将语义相似的文本放在向量空间中彼此靠近的位置,因此即使改写措辞或使用同义词,检索仍能奏效——这正是关键词搜索在实际使用中遇到的失效模式。
已知的简化之处(在 src/rag.ts 中标记为 ponytail:),每项都注明了升级方案:
- Issue 讨论串仅索引标题和正文,不索引完整的评论讨论(避免每个 issue 多调用一次 API)——如果答案需要反映问题解决过程,而不只是原始报告,可获取
/issues/{n}/comments。 - 分块大小使用词数近似估算 token 数,而非使用真正的分词器。
- 没有过时检查——仓库一旦完成索引,即使文档发生变化,也会一直保留该索引。如果内容过时,可添加 TTL,或将
pushed_at与已存储的索引进行比对。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。