GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
GitHub repo maintainability verdicts—maintained, slowing, at-risk, abandoned—via MCP.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://joeslade--github-repo-intelligence-mcp.apify.actor/mcp在终端中运行这条命令
claude mcp add --transport http github-repo-intelligence https://joeslade--github-repo-intelligence-mcp.apify.actor/mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"github-repo-intelligence": {
"url": "https://joeslade--github-repo-intelligence-mcp.apify.actor/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"github-repo-intelligence": {
"type": "http",
"url": "https://joeslade--github-repo-intelligence-mcp.apify.actor/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://joeslade--github-repo-intelligence-mcp.apify.actor/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 digitalgremlin 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(0.1.0)于5个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
_A maintainability verdict, not another dashboard._
GitHub Repo Health Check is an MCP server that answers the one question your dependency list can't: is this repo still maintained, or am I building on sand? Last-commit date lies. Star count lies. One signal isn't a verdict. So it returns a four-way read — *Actively maintained*, *Slowing*, *At-risk*, or *Likely abandoned* — synthesized across four dimensions (activity, issues, PRs, contributors), backed by the transparent, inspectable thresholds that produced it. Point it at any owner/name (or GitHub URL) and your agent gets a verdict it can act on, plus the raw numbers so it can see exactly why. Same repo state + config → the same verdict, every time.
It runs as a Standby Actor on the Apify platform — always warm, reachable over the Streamable HTTP transport at the /mcp path, with API access, scheduling, and monitoring included.
Two repos, two very different verdicts — then a drill-down into the metrics behind them, all over MCP:
If you've ever asked "is this repo abandoned?" or run a GitHub repo health check by hand, this server does it programmatically at any scale.
Most GitHub tools hand an agent raw API access and leave the judgment to the model — inconsistent, hand-rolled heuristics on every call. This server does the synthesis for you.
The differentiator is judgment, not raw access: every verdict ships alongside the pinned thresholds and raw metrics that produced it, so the agent (and you) can audit the reasoning. Same repo state + same config always yields the same verdict.
One GitHub fetch per repository is cached and shared across all five tools. Drilling from the headline verdict into a specific dimension costs no extra upstream calls.
https:// /mcp) using the Streamable HTTP transport.repo argument ("owner/name" or any https://github.com/owner/name URL) to get the headline verdict.get_activity_metrics, get_issue_health, get_pr_health, or get_contributor_insights when you need detail beyond the headline. All five tools read from the same cached payload.All tools take a single repo argument — either "owner/name" or any https://github.com/owner/name[/...] URL (case-insensitive).
get_repo_health — headline verdictReturns the overall verdict, a per-dimension breakdown, and a rationale string explaining the worst dimension.
{
"repo": "honojs/hono", "overallVerdict": "Actively maintained", "dimensions": { "activity": { "verdict": "Healthy", "lastCommitDaysAgo": 1, "commits90d": 412 }, "issues": { "verdict": "Healthy", "medianFirstResponseDays": 2.4, "staleOpenRatio": 0.12 }, "pullRequests": { "verdict": "Healthy", "mergeRate": 0.88, "oldestOpenPrDaysAgo": 14 }, "contributors": { "verdict": "Healthy", "totalContributors": 312, "busFactorFlag": false } }, "rationale": "Overall: activity is Healthy; weakest dimension is issues (Healthy).", "stars": 21000, "forks": 640, "fetchedAt": "2026-06-01T00:00:00.000Z", "authenticated": true }
get_activity_metrics — commit cadence and momentumCommit volumes over trailing windows, release frequency, and a momentum trend.
{
"repo": "honojs/hono", "verdict": "Healthy", "lastCommitDaysAgo": 1, "commits30d": 140, "commits90d": 412, "commits365d": 1680, "releaseCount365d": 48, "lastReleaseDaysAgo": 3, "momentumTrend": "steady", "fetchedAt": "2026-06-01T00:00:00.000Z" }
momentumTrend is accelerating / steady / declining, derived from the 30-day commit rate vs the 90-day rate. Repos that tag rather than cutting GitHub Releases will show releaseCount365d: 0 and lastReleaseDaysAgo: null — this does not by itself degrade the verdict.
get_issue_health — responsiveness and backlog hygieneHow quickly maintainers respond to issues and how much of the backlog has gone stale.
{
"repo": "honojs/hono", "verdict": "Healthy", "openIssues": 32, "closedIssues": 1840, "openClosedRatio": 0.017, "medianFirstResponseDays": 2.4, "medianTimeToCloseDays": 5.1, "staleOpenIssues": 4, "staleOpenRatio": 0.12, "fetchedAt": "2026-06-01T00:00:00.000Z" }
An issue is stale if untouched for more than 90 days. Medians are null when no qualifying events exist in the analysis window — absence is not the same as zero.
get_pr_health — PR throughput and queue ageHow effectively the project merges or closes contributions, and how old the oldest open PR is.
{
"repo": "honojs/hono", "verdict": "Healthy", "openPrs": 6, "mergedPrs": 220, "closedUnmergedPrs": 30, "mergeRate": 0.88, "medianTimeToMergeDays": 1.2, "oldestOpenPrDaysAgo": 14, "fetchedAt": "2026-06-01T00:00:00.000Z" }
mergeRate excludes still-open PRs from the denominator. It is null when no PRs have been decided in the analysis window.
get_contributor_insights — concentration and bus-factor riskHow many contributors the project has and whether commit activity is dangerously concentrated.
{
"repo": "honojs/hono", "verdict": "Healthy", "totalContributors": 312, "topContributorShare": 0.28, "topTwoContributorShare": 0.41, "busFactorFlag": false, "fetchedAt": "2026-06-01T00:00:00.000Z" }
busFactorFlag is true when the top contributor owns more than 50% of commits, or the top two together own more than 80%. totalContributors is the repository's all-time contributor count (sourced from GitHub's stable /contributors list endpoint) — it is not a 90-day-active count.
Verdicts come from pinned, transparent thresholds — same repo state plus same config always yields the same verdict.
| Dimension | Healthy | Moderate | At-Risk | Notes |
|---|---|---|---|---|
| Activity | last commit ≤ 30d | 30–180d | 180–365d | Likely abandoned if > 365d |
| Issues | median first response ≤ 7d and staleOpenRatio ≤ 0.40 | ≤ 30d and ≤ 0.60 | otherwise | null median → judged on staleOpenRatio alone |
| Pull requests | mergeRate ≥ 0.60 and oldestOpenPr ≤ 30d | mergeRate ≥ 0.30 or oldestOpenPr ≤ 90d | otherwise | null mergeRate → judged on oldestOpenPr alone |
| Contributors | totalContributors ≥ 3 and not bus-factor | 1–2 contributors, or ≥ 3 with bus-factor | 0 contributors | solo active maintainer → at most Moderate |
Overall verdict is activity-dominant, evaluated top-down (first match wins):
Likely abandoned (no commits in > 365 days).At-Risk, or any two of {issues, PRs, contributors} are At-Risk.Healthy and no dimension is At-Risk.Moderate, or Healthy activity with one At-Risk dimension).The server boots with no input required (a Standby constraint — all fields are optional in the schema so the container never crash-loops on startup). In practice, you must provide a GitHub token for the Actor to return verdicts rather than rate-limit errors.
| Field | Type | Default | Description |
|---|---|---|---|
githubToken | string (secret) | — | Effectively required. GitHub's GraphQL API (this Actor's primary data source) rejects unauthenticated requests, and on Apify's shared IPs the anonymous REST quota (~60 req/hour per IP) is typically already exhausted by other traffic. A token gives 5,000 req/hour and enables private-repo analysis. |
cacheTtlMinutes | integer | 20 | How long a repo's fetched payload is reused before refetching. Lower = fresher data; higher = fewer GitHub API calls. |
analysisWindowDays | integer | 90 | Trailing window (30–365 days) over which issue and PR activity is measured. |
GitHub token setup. A classic token with no scopes is sufficient for public repositories. A fine-grained token scoped to specific repos works for private-repo analysis. For Standby deployments the recommended approach is to set a
GITHUB_TOKENenvironment variable on the Actor (stored as a secret) rather than pasting the token into the input field — it persists across restarts. Both paths work; both are stored as secrets and never exposed in logs.
Each tool returns a single structured JSON object (shown above in each tool's section). Responses are deterministic — same repo state plus same config always produces the same verdict. Each response includes a fetchedAt timestamp reflecting when the underlying GitHub payload was pulled. A cached read returns the same timestamp as the original fetch for that TTL window.
| Field | What it tells you |
|---|---|
overallVerdict | The headline: Actively maintained / Slowing / At-risk / Likely abandoned |
lastCommitDaysAgo | Days since the most recent commit; null if no commits found |
commits30d / commits90d / commits365d | Commit counts over trailing 30, 90, and 365-day windows |
momentumTrend | Whether commit rate is accelerating, steady, or declining (30d vs 90d rate) |
medianFirstResponseDays | Median time (days) until a maintainer first responds to a new issue |
staleOpenRatio | Fraction of open issues that have had no activity in 90+ days |
mergeRate | Merged PRs ÷ (merged + closed-unmerged) — excludes still-open PRs |
oldestOpenPrDaysAgo | Age of the oldest PR that is still open |
totalContributors | All-time contributor count (not a 90-day-active figure — see FAQ) |
busFactorFlag | true when commit activity is dangerously concentrated on 1–2 people |
This Actor runs in Standby mode and is billed for the compute used while warm and serving requests. Health reads are lightweight — each repo's GitHub data is fetched once, cached (default 20 minutes), and shared across all five tools. Drilling into multiple dimensions for the same repo costs a single upstream fetch.
A GitHub token is required in practice (see Input) and adds no extra Apify cost.
GITHUB_TOKEN as an environment只显示了开头部分;其余内容请在仓库中阅读