Inputs an agent can validate before calling.
Independent infrastructure intelligence
The MCP ecosystem,
measured.
Every npm-installable server in the official MCP registry, booted over stdio and evaluated against the same ten agent-readiness checks. No popularity proxy. No paid ranking. Just reproducible evidence.
The current
frontier.
Five servers currently set the benchmark. Equal scores are ordered by npm package name, never by editorial preference.
See all scorecards →| Rank | Package | Score | Primary gap |
|---|---|---|---|
| 1 | apple-health-mcp-unofficial | 97 | Smoke test |
| 2 | delx-living-body | 97 | Smoke test |
| 3 | eight-sleep-mcp-unofficial | 97 | Smoke test |
| 4 | garmin-mcp-unofficial | 97 | Smoke test |
| 5 | google-health-fitbit-mcp | 97 | Smoke test |
A baseline the ecosystem can actually compare against.
The weekly edition separates methodology changes, package releases, reachability shifts and verified score movement. Directional claims only appear when both runs are comparable.
The live ranking
Find any server.
Inspect every point.
Search all 4246 scored packages, or browse the top 100 below. Every result opens a permanent scorecard with check-level evidence.
Type at least two characters. Results come from the same public leaderboard.json dataset.
| # | MCP server / npm | Score | Readiness | Key evidence |
|---|---|---|---|---|
| 1 | apple-health-mcp-unofficialserver: apple-health-mcp-server | 97 | ||
| 2 | delx-living-bodyserver: living-body-mcp-server | 97 | ||
| 3 | eight-sleep-mcp-unofficialserver: eight-sleep-mcp-server | 97 | ||
| 4 | garmin-mcp-unofficialserver: garmin-mcp-server | 97 | ||
| 5 | google-health-fitbit-mcpserver: google-health-fitbit-mcp-server | 97 | ||
| 6 | oura-mcp-unofficialserver: oura-mcp-server | 97 | ||
| 7 | samsung-health-mcp-unofficialserver: samsung-health-mcp-server | 97 | ||
| 8 | wellness-airserver: wellness-air-mcp | 97 | ||
| 9 | wellness-cgm-mcpserver: wellness-cgm-mcp | 97 | ||
| 10 | wellness-cycle-coachserver: wellness-cycle-coach-mcp | 97 | ||
| 11 | wellness-nourishserver: nourish-mcp | 97 | ||
| 12 | whoop-mcp-unofficialserver: whoop-mcp-server | 97 | ||
| 13 | withings-mcp-unofficialserver: withings-mcp-server | 97 | ||
| 14 | fitbit-mcp-unofficialserver: fitbit-mcp-server | 93 | ||
| 15 | strava-mcp-unofficialserver: strava-mcp-server | 93 | ||
| 16 | astral-mcpserver: astral-mcp-server | 88 | ||
| 17 | delx-memoryserver: delx-memory | 88 | ||
| 18 | google-health-mcp-unofficialserver: google-health-mcp-server | 88 | ||
| 19 | polar-mcp-unofficialserver: polar-mcp-server | 88 | ||
| 20 | google-ads-mcp-unofficialserver: google-ads-mcp-server | 82 | ||
| 21 | circuitarium-mcpserver: circuitarium-mcp | 78 | ||
| 22 | timeline-pulseserver: timeline-pulse | 77 | ||
| 23 | @pseolint/mcpserver: pseolint | 76 | ||
| 24 | oilpriceapi-mcpserver: oilpriceapi | 76 | ||
| 25 | partner-center-mcpserver: partner-center-mcp | 76 | ||
| 26 | @droidagentkit/launcherserver: droidagentkit | 75 | ||
| 27 | @ios-web-bluetooth/mcpserver: @ios-web-bluetooth/mcp | 74 | ||
| 28 | @quantustik/mcp-serverserver: Quantustik | 74 | ||
| 29 | @smarterweather/mcp-weatherserver: sw-mcp | 74 | ||
| 30 | agent-ready-mcpserver: agent-ready | 74 | ||
| 31 | agent-search-mcpserver: agent-search-mcp | 74 | ||
| 32 | fdic-mcp-serverserver: fdic-mcp-server | 74 | ||
| 33 | noto-crm-mcp-serverserver: noto-crm-mcp-server | 74 | ||
| 34 | @blueprint-chart/mcpserver: @blueprint-chart/mcp | 73 | ||
| 35 | @apexfdn/copilot-mcpserver: copilot-mcp | 72 | ||
| 36 | @cyanheads/noaa-climate-mcp-serverserver: noaa-climate-mcp-server | 72 | ||
| 37 | @signaledi/mcp-serverserver: signaledi | 72 | ||
| 38 | avito-mcpserver: avito-mcp | 72 | ||
| 39 | mistral-mcpserver: mistral-mcp | 72 | ||
| 40 | @aioproductoscom/mcpserver: AIOProductOS Demo | 71 | ||
| 41 | @ansvar/us-regulations-mcpserver: us-regulations-mcp | 71 | ||
| 42 | @hermitsh/texts-mcpserver: hermitsh-texts | 71 | ||
| 43 | @mapbox/mcp-serverserver: Mapbox MCP server | 71 | ||
| 44 | @mfdaves/okf-mcpserver: okf-mcp | 71 | ||
| 45 | @ryancardin/noaa-tides-currents-mcp-serverserver: noaa-tides-currents-mcp-server | 71 | ||
| 46 | @sugukuru/japan-real-estate-intel-mcpserver: japan-real-estate-intel-mcp | 71 | ||
| 47 | @whisper-security/whisper-graph-mcpserver: whisper-graph | 71 | ||
| 48 | japan-seasons-mcpserver: japan-seasons-mcp | 71 | ||
| 49 | manoma-mcpserver: manoma-mcp | 71 | ||
| 50 | medical-terminologies-mcpserver: medical-terminologies-mcp | 71 | ||
| 51 | @agentrysh/mcpserver: agentry-mcp | 70 | ||
| 52 | @constellationdev/mcpserver: @constellationdev/mcp | 70 | ||
| 53 | @cyanheads/cdc-health-mcp-serverserver: @cyanheads/cdc-health-mcp-server | 70 | ||
| 54 | @cyanheads/earthquake-mcp-serverserver: earthquake-mcp-server | 70 | ||
| 55 | @orygn/opa-mcpserver: orygn-opa-mcp | 70 | ||
| 56 | @seasonkoh/webazserver: webaz | 70 | ||
| 57 | @stocktrends-publications/stocktrends-mcp-serverserver: stocktrends-mcp-server | 70 | ||
| 58 | purmemo-mcpserver: purmemo-mcp | 70 | ||
| 59 | @automatelab/ai-seo-mcpserver: @automatelab/ai-seo-mcp | 69 | ||
| 60 | @cyanheads/fcc-broadband-mcp-serverserver: fcc-broadband-mcp-server | 69 | ||
| 61 | @cyanheads/noaa-cdo-mcp-serverserver: noaa-cdo-mcp-server | 69 | ||
| 62 | @cyanheads/pubmed-mcp-serverserver: @cyanheads/pubmed-mcp-server | 69 | ||
| 63 | @cyanheads/usda-mcp-serverserver: usda-mcp-server | 69 | ||
| 64 | @groundtruth-mcp/gt-mcpserver: GroundTruth | 69 | ||
| 65 | @kundlit/mcpserver: kundlit-astro | 69 | ||
| 66 | mcp-server-digserver: dig | 69 | ||
| 67 | mcp-server-madeonsolserver: madeonsol | 69 | ||
| 68 | mcp-sports-hubserver: sports-hub | 69 | ||
| 69 | shipcheck-mcpserver: shipcheck-mcp | 69 | ||
| 70 | shopops-mcp-serverserver: shopops-mcp | 69 | ||
| 71 | @metalift/mcpserver: metalift | 68 | ||
| 72 | agoragentic-mcpserver: agoragentic | 68 | ||
| 73 | copilot-money-mcpserver: copilot-money-mcp | 68 | ||
| 74 | @blockrun/mcpserver: blockrun-mcp | 67 | ||
| 75 | @chrischall/flightaware-mcpserver: flightaware-mcp | 67 | ||
| 76 | @cyanheads/aviation-weather-mcp-serverserver: aviation-weather-mcp-server | 67 | ||
| 77 | @cyanheads/census-mcp-serverserver: census-mcp-server | 67 | ||
| 78 | @emilia-protocol/mcp-serverserver: emilia-protocol | 67 | ||
| 79 | @gitdealflow/mcp-signalserver: vc-deal-flow-signal | 67 | ||
| 80 | @j0hanz/code-assistantserver: code-assistant | 67 | ||
| 81 | @j0hanz/code-lens-mcpserver: code-lens | 67 | ||
| 82 | @mapbox/mcp-docs-serverserver: Mapbox Documentation MCP Server | 67 | ||
| 83 | @parse-gl/mcpserver: parse | 67 | ||
| 84 | @withinfocus/statbotics-mcp-serverserver: Statbotics MCP Server | 67 | ||
| 85 | admob-mcp-serverserver: admob-mcp-server | 67 | ||
| 86 | agentic-os-mcpserver: agentic-os | 67 | ||
| 87 | bestproxy4agents-mcpserver: proxy4agents-mcp | 67 | ||
| 88 | boondmanager-mcp-serverserver: boondmanager-mcp-server | 67 | ||
| 89 | intelthreadlinqs-mcpserver: threadlinqs-intelligence | 67 | ||
| 90 | japan-ux-mcpserver: japan-ux-mcp | 67 | ||
| 91 | koko-call-mcpserver: KokoCallMCP | 67 | ||
| 92 | kolada-mcp-serverserver: kolada-mcp-server | 67 | ||
| 93 | nankai-trough-mcpserver: nankai-trough-mcp | 67 | ||
| 94 | obyte-mcpserver: obyte-mcp | 67 | ||
| 95 | scholar-sidekick-mcpserver: scholar-sidekick | 67 | ||
| 96 | vr-org-mcpserver: vr-org-mcp | 67 | ||
| 97 | xendit-mcpserver: xendit-mcp | 67 | ||
| 98 | @brandsystem/mcpserver: brandsystem | 66 | ||
| 99 | @chrischall/freshbooks-mcpserver: freshbooks-mcp | 66 | ||
| 100 | @cross-deck/aiserver: crossdeck-ai | 66 |
3105 servers were unreachable this run and are intentionally not scored. Auth requirements, startup errors and timeouts are reported as unreachable rather than converted into a fake low score.
Method / fairness
Booted,
not guessed.
The scoring engine observes what an agent can actually discover and safely understand. The pipeline fails closed: incomplete runs never publish.
- 01Build the corpus
Pull the official MCP registry, keep npm-installable active versions and deduplicate package identities.
- 02Run in isolation
Boot each package over stdio in a clean process with hard timeouts and no production credentials.
- 03Score visible evidence
Grade schemas, naming, descriptions, safety annotations, mutation gates, privacy, resources, discovery and smoke tests.
- 04Publish or stop
Verify complete coverage, deterministic output and methodology compatibility before committing the static dataset.
What the index can see.
Predictable, namespaced operations.
Purpose, inputs and side effects made explicit.
Read-only, destructive and idempotent cues.
Writes separated from accidental execution.
Sensitive output opt-in and documented.
Useful context beyond callable tools.
A standard entry point before source reading.
Self-describing capabilities and constraints.
A safe proof that the server is alive.
Evidence boundary
A score is a map,
not a certificate.
The index measures agent-readiness shape and metadata. It does not certify correctness, security, uptime or business quality.
- A score can be reproduced from the open-source engine.
- Unreachable is a separate state, never a disguised zero.
- Rank cannot be bought; the editorial surface contains no commercial placement.
For agents / researchers
Every surface has a machine-readable twin.
Use the exhaustive JSON dataset for analysis, llms.txt for a compact orientation, or the weekly feed for changes. The human pages and machine surfaces are generated from one committed source.
npx -y mcp-scorecard \
<package-or-repository> \
--jsonReturns the 0–100 score, all ten checks and actionable gaps. It never invents a score when the package cannot be graded.
Read the caveats first.
01How often does the index refresh?
A weekly Grok Cloud routine runs the complete corpus in a fresh ephemeral VM. It publishes only after coverage, metadata, weekly-edition and SEO gates pass. This Mac is not part of the scheduled pipeline.
02Why are some packages unreachable?
Auth gates, startup errors or timeouts can prevent fair inspection. Those packages remain visible in the dataset with an unreachable status rather than receiving a misleading low score.
03Can a maintainer influence the ranking?
Only by changing the public package and improving reproducible evidence. There is no manual score override, paid placement or private credential path.
Open evidence / open source