mcpField
G
github-repo-mcp

github-repo-mcp

本地服务
github.com/thedhruv-07版本控制16 周前更新

关于 github-repo-mcp

github-repo-mcp 面向评估和探索公开 GitHub 仓库的开发者与 AI Agent,提供仓库健康度、近期提交摘要和新手友好问题筛选。它还可基于 README、文档和热门问题线程进行语义问答。

主要功能

  1. 01计算仓库健康度评分
  2. 02按类型汇总近期提交
  3. 03筛选并评估新手问题
  4. 04基于文档和问题线程进行语义问答

适用场景

  1. 01初步评估陌生仓库的维护状况
  2. 02了解近期变更内容
  3. 03寻找适合新贡献者的问题
  4. 04针对仓库文档和问题提问

MCP 相关

该 MCP 服务向兼容客户端提供四种 GitHub 仓库分析工具:健康度、提交摘要、新手问题筛选和语义问答。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"thedhruv-07-github-repo": {
"command": "npx",
"args": [
"-y",
"@thedhruv07/github-repo-mcp"
],
"env": {
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"VOYAGE_API_KEY": "<VOYAGE_API_KEY>",
"QDRANT_URL": "<QDRANT_URL>",
"QDRANT_API_KEY": "<QDRANT_API_KEY>"
}
}
}
}
启动命令npx -y @thedhruv07/github-repo-mcp
需要配置的环境变量
GITHUB_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/tokens
VOYAGE_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@thedhruv07/github-repo-mcp0.1.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
repostring是仓库名称,例如 'anthropic-sdk-python'
ownerstring是仓库所有者或组织,例如 '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 中:

  1. 首次查询某个仓库时,对 README、docs/*.md(顶层文件,最多 15 个)以及讨论最热烈的 8 个 issue 讨论串(标题 + 正文,约 500 词的文本块,重叠 50 词)进行分块
  2. 使用 Voyage AI(voyage-3.5-lite)为每个文本块生成嵌入
  3. 将向量存储在 Qdrant Cloud 中,每个仓库对应一个 collection(repo_<owner>_<name>)
  4. 每次查询时:为问题生成嵌入,通过余弦相似度搜索排名前 5 的文本块
  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

评论

支持 Markdown

第一次接触 MCP?

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

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