mcpaudit
Point it at any MCP server. Get a score, and the receipts.
The MCP Registry is filling up with servers nobody has ever audited. A server can list tools with no descriptions (so models never call them correctly), schemas that contradict themselves (required fields that don't exist), or — the dangerous one — cheerfully return success when you call a tool that doesn't exist. None of that shows up until a user's agent does something weird in production.
mcpaudit launches the server the way a real client does, runs the full handshake, inspects every tool, deliberately makes a bad call, and prints one scored report with named, evidence-backed issues. No LLM anywhere in the audit: every check is deterministic and repeatable.
What it checks
Scoring: start at 100, each error costs 8, each warning costs 3. Verdicts: PASS (clean), WARN (works, but the issues will cost it users or correctness), FAIL (error-severity issues), UNREACHABLE (the handshake never completed — reported with the launch error, never a guessed score).
mcpaudit audits stdio servers. Remote (HTTP) servers — config entries with a url, or a URL passed as the command — are reported as UNREACHABLE with that explanation, never silently skipped and never spawned.
New in 0.1.1, from the first real-production validation battery (25+ external servers, three runs each, findings hand-checked against raw ground truth): server arguments starting with -- pass through verbatim (see Usage), prompt/resource-only servers pass, the default per-step timeout is 60s so npx/uvx cold starts are not mistaken for dead servers, and --json always emits one parseable document.
Usage
CLI
Example output:
(That is a real run, from the first MCP Server Index seed, 2026-10-22.
Initialize time is measured from spawn and includes npx cold-start
overhead, and the report says so. A slow initialize is only scored when
the server itself is slow once running: if tools/list answers within
5s, a 30s+ initialize is reported as unscored launch path evidence,
because that time went to the launcher or to first-run downloads.)
Exit codes: 0 for PASS/WARN, 1 for FAIL/UNREACHABLE, 2 for usage errors — CI-ready.
MCP server
Add to your MCP client config:
Tools:
audit_server: launch and audit one server from a command + args (+ optional env, timeout).
audit_config: audit every server in a config file, or one named entry.
audit_tools: offline validation of a tools/list array.
Docker
The MCP Server Index
mcpaudit is the engine behind a growing public dataset, the MCP Server Index: scored audits of real, published MCP servers, run with the published binary and refreshed as servers ship. The seed — the author's own tool family, audited first because you audit yourself before you audit anyone else — lives in the 100-packages workspace and grows with every wave.
The toolkit
mcpaudit is Wave 1, package 4 of a planned family of small, single-purpose developer tools by the same author, all built the same way: one bin that serves a CLI and an MCP server, deterministic checks with evidence, no invented answers.
- greenlight: pre-flight checks for open-source contributions: is this issue actually landable?
- shipcheck: release verification — git tag, GitHub release, npm, MCP Registry, and GHCR must all agree, or NO-GO.
- cidiff: base-vs-head CI differ for PRs.
- reprocheck: red-first repro verifier.
- prwatch: attention report for your open PRs.
- claimcheck: stale-claim states and parked fixes on forks.
- gatefile: extract hidden contribution gates into machine-readable contribution-gates.json.
- pkgverdict: pre-install verdicts for npm packages: GO, RISKY, FAKE, or MISSING.
Development
License
MIT