mcpField
C
CONTRI

CONTRI

本地服务
contri-two.vercel.app版本控制43 天前更新

关于 CONTRI

CONTRI 是面向编码 Agent 的只读 MCP 服务,可在开始贡献前分析公开 GitHub Issue 和仓库。它结合认领状态、项目活跃度、维护者响应情况与贡献项目发现,并沿用 CONTRI 浏览器扩展的判断逻辑。

主要功能

  1. 01检查 Issue 的指派、认领和关联 PR
  2. 02批量检查最多 10 个 Issue
  3. 03查看仓库活跃度和维护者响应时间
  4. 04查找适合新手的 Issue 和活跃项目
  5. 05生成带来源链接的贡献简介
  6. 06缓存报告并显示 GitHub 请求额度

适用场景

  1. 01确认某个 Issue 是否已有人处理
  2. 02在活跃项目中挑选适合新手的 Issue
  3. 03评估项目活跃度和维护者响应情况
  4. 04贡献前查看仓库指南

MCP 相关

通过 stdio 向 MCP 客户端提供只读 GitHub 分析工具和提示词。它通过 GitHub 访问公开数据,不会创建评论、认领或 PR。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"alphasafal-contri": {
"command": "npx",
"args": [
"-y",
"contri-mcp"
],
"env": {
"GITHUB_TOKEN": "<GITHUB_TOKEN>"
}
}
}
}
启动命令npx -y contri-mcp
需要配置的环境变量
GITHUB_TOKEN密钥Optional fine-grained token (public repositories, no permissions). Without it, the sign_in tool offers GitHub's device flow.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcontri-mcp0.2.0

工具

9

收录的工具列表 · 更新于 5 天前

参数类型必填说明
forceboolean否绕过缓存(会增加请求数)
issuestring是https://github.com/owner/name/issues/123 或 owner/name#123
detailenum否brief:判定 + URL(约 40 个 token);full:包含证据brief | full
includeThreadboolean否同时返回 issue 正文和近期评论(最多约 14k 个字符)

详细介绍

contri-mcp

面向 AI 编码 Agent 的 CONTRI。 Agent 开始处理 GitHub issue 前,可以查看 CONTRI 在浏览器中展示的信息:是否已经有人在处理、项目是否活跃,以及维护者是否会回复。

  • 避免重复劳动。 Agent 越来越常在已经有人认领的 issue 上提交拉取请求。check_issue 会查找负责人、“我想处理这个”评论(以及后来没了动静的认领),以及引用该 issue 的未合并拉取请求。
  • 数据与扩展一致。 服务会复用 CONTRI 自身的报告和判定逻辑,因此结果与 github.com 上的徽章一致。
  • 只读、本地运行,仅使用公开数据。 它通过标准输入输出在你的机器上运行,只与 api.github.com 通信,绝不会评论、认领或创建拉取请求。

工具

工具可回答的问题请求数(已登录 / 匿名)
check_issue我可以接手这个 issue 吗?看起来无人处理、@x 已认领、认领后没有动静、未合并的拉取请求 #n、已分配……1–2 / ~4
check_issues一次调用最多检查 10 个 issue:默认只返回判定结果,快速筛选成本低每个 issue 的请求数同上
repo_health项目活跃吗?近 90 天合并的拉取请求(排除机器人)、人工作者、合并耗时、发布情况2 / ~7
team_responsiveness有人会回复吗?团队首次回复外部拉取请求和 issue 的时间、哪些请求仍在等待、维护者2–3 / ~35
find_issues没有负责人的入门级 issue;已登录时还会检查是否已有未合并的拉取请求引用该 issue3 / 2
discover_projects按语言或主题查找活跃项目,并根据近期人工合并和适合新手的 issue 排序1 / ~7
contribution_brief附有来源链接的简介,以及 README、贡献指南、行为准则和模板2–3 / ~5

提示词:find_first_issue(寻找一个活跃项目和一个无人处理的 issue)和 can_i_take_this(检查一个 issue,并说明应该开始处理、先询问,还是另选一个)。

每个结果都包含 github 字段,其中记录登录状态和 GitHub 报告的剩余请求数,方便 Agent 规划用量并判断何时提示用户登录。报告会按照与扩展相同的时长缓存在内存中(issue 检查 10 分钟,概览 30 分钟,团队响应情况 6 小时)。

Token 用量。 结果是精简的 JSON,不含填充内容:完整的 check_issue 约为 200–300 个 token,detail: "brief"(判定结果和 URL)约为 40 个 token,thread: "digest" 会附上 issue 标题和最近三条评论,约为 400 个 token(完整讨论串可能约为 3,500 个 token);check_issues 对整个批次只返回一个摘要。数字四舍五入到小数点后一位,并省略空白部分,因此 Agent 若只需判断是否继续,几乎只需为判定结果付出少量用量。

设置

此服务需要 Node.js 20.3 或更高版本,并已发布到 npm,包名为 contri-mcp,因此无需克隆或构建。

Claude Code

claude mcp add --transport stdio contri -- npx -y contri-mcp

Claude Desktop、Cursor、Windsurf 和其他使用 mcpServers 配置文件的客户端

{
  "mcpServers": {
    "contri": {
      "command": "npx",
      "args": ["-y", "contri-mcp"]
    }
  }
}

如果客户端找不到 npx(它不会读取你的 shell 配置),请使用 which npx 获取完整路径。

从源码安装(用于试用尚未发布的更改;构建需要 Node.js 22.12 或更高版本,推荐使用 24):

git clone https://github.com/alphasafal/contri ~/contri
cd ~/contri && npm ci && npm run build:mcp      # writes mcp/dist/contri-mcp.js
claude mcp add --transport stdio contri -- node ~/contri/mcp/dist/contri-mcp.js

更新源码安装:运行 cd ~/contri && git pull && npm ci && npm run build:mcp,然后重启 MCP 客户端。

使用 GitHub 登录

未登录时,GitHub 每小时允许 60 次请求,Agent 很快就会用完。登录后,限额会提高到 5,000 次,并且 CONTRI 可以使用一个 GraphQL 请求,而不是几十个请求。你无需复制令牌:

  1. 让你的 Agent “登录 GitHub”,或者直接开始使用 CONTRI:如果尚未登录,它会提示你。
  2. Agent 会显示一段简短代码和一个指向 github.com/login/device 的链接。打开链接,输入代码并授权 CONTRI。
  3. 就这么简单。CONTRI 会自动检测到授权,之后的每次调用都会使用该授权。

这与扩展程序使用的是同一种登录方式:通过 CONTRI OAuth App 使用 GitHub 的设备授权流程,不申请任何权限范围(公开、只读访问),也不会通过 CONTRI 传输密码。登录信息会保存到 ~/.config/contri/mcp-credentials.json,供下次使用,且只有你能读取(设置 CONTRI_MCP_CREDENTIALS 可使用其他路径;也可以让 Agent 使用 remember: false 登录,仅在本次会话中保留)。sign_out 会清除登录信息;你也可以随时在 github.com/settings/applications 撤销授权。

更偏好使用令牌? 在服务的 env 中设置 GITHUB_TOKEN(或 GH_TOKEN),并使用一个具有 Public repositories 权限、且所有权限均设为 No access 的细粒度令牌。如果 GitHub 拒绝该令牌,或者它仍是 PASTE_YOUR_TOKEN_HERE 这样的占位符,CONTRI 会继续以匿名方式运行,并提示你登录,而不是直接失败。

试用

向你的 Agent 提出类似的问题:

  • “我可以接手 https://github.com/owner/repo/issues/123 吗?”
  • “帮我在一个活跃的 TypeScript 项目中找一个适合新手的 issue,要求维护者能在几天内回复。”
  • “开始处理这个 issue 前,先确认没人正在处理它。”

隐私

没有后端,也没有分析功能。服务只会向 GitHub(api.github.com,以及用于登录的 github.com)发送请求,你的登录信息也只会发送到 GitHub。只分析公开仓库。报告保存在内存中,进程退出后即会消失;唯一会写入的文件是保存的登录信息(如果你登录了)。只有在 Agent 请求时,issue 文本才会发送给它(使用 check_issue 并设置 includeThread)。请参阅 PRIVACY.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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