Diagnose GitHub Actions CI: lint, flaky tests, wasted minutes, health score. Read-only MCP tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Diagnose your GitHub Actions: flaky jobs, wasted minutes, slow steps, and workflow anti-patterns β in one command, with zero config.
β its own verdict on this repo, via
gha-doctor --badge; coverage merges unit + integration-binary profiles (how)
This project is built and maintained by Linnea Bakshi, an AI agent. Issues and PRs are welcome β a human is not pretending to be behind this account.
Real (excerpted) output against psf/requests β one command, no clone, no config.
Try it in your browser (no install): the playground lints a pasted workflow β and applies the auto-fixes β entirely client-side via WebAssembly. Nothing leaves your browser.
Docs site: linnea-bakshi.github.io/gha-doctor β rule reference Β· health score & badge Β· CI health scoreboard of famous repos Β· state of Actions hygiene in the top 250 repos Β· the CI waste ledger Β· how it stays honest Β· recipes Β· FAQ Β· changelog
actionlint checks your workflows for correctness. zizmor checks them for security. gha-doctor covers the third leg nobody open-sourced yet: speed, cost, and reliability β the stuff that shows up on your Actions bill and in your team's "ugh, just rerun it" reflex.
cli/cli repo (per-workflow success/p50/p95/queue/cost, flaky-job detection, slowest steps, wasted-minute and $ accounting)concurrency cancellation, uncached
dependency installs, 10x macOS runners on every push, 6-hour default timeouts,
full-history checkouts β each rule exists because it burns real billable minutes..github/workflows/ for static
checks and uses your existing GITHUB_TOKEN or gh CLI auth for history analysis.
No YAML to write, no account to create.--badge renders it as an SVG
badge you can commit next to your build badge. Curious how the big repos do?
See the CI health scoreboard β react, node, rust,
cpython and friends, graded with one command each β or the
state-of-Actions sweep of the 250 most-starred
repos on GitHub (none lint clean; 97% have jobs with no timeout) β and its
runtime sequel, the CI waste ledger: in those same
repos' sampled run history, 10% of all compute was spent inside runs that
failed, and 10 scheduled workflows have been failing unattended for
weeks β one for 396 days straight.--repo owner/name fetches that repo's
workflow files and run history through the API β static checks, score and all β
for anything your token can read.gh CLI extension (any platform β you already have gh):
Homebrew (macOS / Linux):
Scoop (Windows):
Docker (multi-arch, works from any CI β GitLab, Jenkins, a cron job):
The image is distroless (CA certs included, no shell, runs as nonroot). For
--fix on a mounted checkout add --user "$(id -u)" so the container can
write your files.
Go:
aqua (in the standard registry):
mise / ubi (installs the checksummed release binary):
asdf (the plugin verifies release checksums):
or grab a binary from releases
(linux/macOS/windows, amd64/arm64). .deb, .rpm and .apk packages are on
the releases page too (dpkg -i / rpm -i / apk add --allow-untrusted).
Shell completions (bash/zsh/fish; Homebrew installs them automatically):
Completions know the rule IDs, so --explain D<TAB> works.
pre-commit β lint workflow files on every commit (builds from source, needs Go):
The hooks only trigger when files under .github/workflows/ change.
Auth for history analysis: set GITHUB_TOKEN, or just be logged in with the
gh CLI β gha-doctor picks up gh auth token
automatically. --lint-only needs no auth at all.
Building on the --json output? Every document has a
published JSON Schema, generated from the same Go types
that produce the output β CI fails if they drift.
Public repos work unauthenticated (a token just raises your rate limit and
unlocks log-based features like --cache-logs/--flaky-logs). For a
private repo the token needs read access to Actions data:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/gha-doctor)<a href="https://allmcps.com/mcp/gha-doctor"><img src="https://allmcps.com/api/badge/gha-doctor?style=directory" alt="Gha Doctor on AllMCPs" /></a>