How we rank public MCP servers from the outside.

A published Score for production MCP URLs: did we reach the server, negotiate the protocol, list tools, complete a call, and get a result that looks like the job. See the live scores. Named-host comparison is on MCP validation, not this leaderboard.

What the Score measures

The path after the URL, not the URL alone.

The Public MCP Score measures a production MCP endpoint the way a client must: reach it, negotiate the dialect, discover the catalog, invoke a safe tool, and record whether the result looked like work got done.

Listed is not called. Called is not the job. A 200 on the address is one input, not the Score. This is not a popularity list and not a lab capability benchmark.

Honest limit: the public Index is one outside-in client path per server. It does not rank Cursor against Claude against VS Code. That record is the product monitor.

01

Reach the MCP URL

Confirm the endpoint answers. Reach is the first artifact, not the product.

02

Negotiate the dialect

Modern 2026-07-28 path first (server/discover + per-request meta). Legacy initialize/session if required.

03

Read the catalog

tools/list, plus resources and prompts when the server exposes them.

04

Call a tool and score the job

Safe read tools (and schema-linked paths when the catalog supports them). Invocation and functional outcome are scored separately.

05

Roll 30 days into the Score

Per-run evidence becomes Reach, P95, Invoke, Functional, Spec, protocol-era badges, and Rank Score.

What a URL check misses

Green address, dead path.

Most MCP “uptime” is a ping on the URL. Hosts fail later: the catalog is empty, the call errors inside a 200, the job never lands, or only one protocol era works. Those are the failures the Score is built to surface.

List

Listed is not called

tools/list can return a healthy catalog while tools/call fails, hangs, or returns isError wrapped as success.
Job

Called is not the job

A well-formed JSON-RPC result can still be empty, auth-gated, or unrelated to what the tool claims to do.
Era

Protocol-era split

One instance speaks modern MCP. Another still requires a legacy session. Half the client ecosystem breaks while the URL stays up.
½

Half a session

Negotiate succeeds and discovery fails, or discovery succeeds and invocation never completes. Half a protocol session is still a failed client.
n

Thin sample luck

Two lucky runs should not beat a month of evidence. Rank Score shrinks rate components until the sample is real.

How probes run: distributed nodes execute the workload. The backend only schedules and scores. Residential origin is the execution path, not the claim of the Score.

Protocol eras

Modern, legacy, dual, and Spec readiness.

MCP clients are mid-migration. A server that only answers legacy initialize + Mcp-Session-Id will fail modern clients. A server that only answers the stateless 2026-07-28 path will fail older SDKs. We negotiate both and publish which dialect worked.

M

Modern (2026-07-28)

Stateless path: server/discover and per-request metadata without a sticky session handshake.
L

Legacy (session)

Classic initialize handshake and optional session sticky routing. Still required by many production servers.
D

Dual-era

Both dialects succeed on the same endpoint. Safest during the migration window.
×

Broken / split

Neither dialect completes, or geos disagree (for example US modern, DE legacy). Labeled on the Index Status chip.

Spec readiness is a separate 0-100 migration score from the dual-era probe (modern path, server/discover, header routing, list-cache hints). Filter the Index by protocol era.

Paid monitors can probe both eras every cycle (Growth+) to catch asymmetric deploys. The public Index always negotiates modern-first with legacy fallback so every listed server is measured on a comparable path.

Signals

What each column answers.

Each public column answers one question, and has an explicit non-claim:

Reach (30d)

What share of MCP validation runs reached the server?

Non-claimDoes not prove tools returned a useful result.

Latency P95

How slow were the slowest successful probes?

Non-claimDoes not capture every client region equally on every run.

Invoke

Did tools/call complete with a well-formed MCP result?

Non-claimNot every tool on every server is exercised every run.

Functional

Did the result look like the tool did its job?

Non-claimDefault public path uses safe read tools, not a full contract suite.

Spec

After dual-era negotiate, did transport, discovery, and invocation look like MCP?

Non-claimDoes not certify every optional MCP extension. Spec readiness is the migration companion.

Runs

How many scored validation runs sit in the 30-day window?

Non-claimUnder 7 runs the row is Low sample. Rank Score is pulled toward a 50% prior.

Score

Score calculation.

The Score is a composite from 0 to 100:

Score = weighted(reach, latency, tool_success, conformance) + verdict_bonus
Reach35%

reachable_runs / total_mcp_runs over the last 30 days. Run-based reachability, not a continuous synthetic heartbeat.

Latency25%

P95 response time mapped to 0-100. Perfect score at ≤200 ms. Linear decay to 0 at ≥2000 ms.

Tool success25%

invocation_rate × 0.6 + functional_rate × 0.4. Falls back to whichever rate exists if only one is present.

Protocol conformance15%

Average per-run score after dual-era negotiate: reachable 30% + transport 25% + discovery 25% + invocation 20%. Missing invocation evidence renormalizes the rest.

Verdict bonus (ranking math)

+5

Operational

Current status healthy. Small bonus for an actively good surface.
+2

Impaired

Partial impairment for scoring. Status chip still names the cause when known.
+0

Down

No status bonus. Reach and other signals still contribute to the base score.

If a component is missing, remaining weights renormalize. The verdict bonus is still applied. Final score is capped at 100. Spec readiness sits beside the Score and is not folded into these weights.

Displayed vs Rank

Why the drawer and the table can disagree.

The Index shows two scores for the same server. Thin evidence is not allowed to dominate the leaderboard.

Displayed Score

Drawer hero. Raw composite from measured rates plus verdict bonus. Answers: what do the runs we have say?

Rank Score

Table Score column and sort order. Same formula after confidence shrinkage on rate components. Answers: how should this rank against servers with more evidence?

Confidence shrinkage (rate components only)

For reach, tool success, and protocol conformance (each as a 0-1 rate p with n runs), Rank Score first replaces p with a blend toward a neutral prior. Latency P95 is not shrunk. The measured curve stays.

p_rank = (n / (n + 7)) × p + (7 / (n + 7)) × 0.5
n₀ = 7  ·  prior p₀ = 0.5 (50%)  ·  Low sample when n < 7

Then Rank Score = weighted(p_rank rates, unchanged latency score) + same verdict bonus. As n grows, p_rank → p and the two scores converge.

Worked example (n = 2 runs)

Suppose Reach, Tool, and Spec are all 100%, P95 latency is 1575 ms (latency score ≈ 23.6), and status is Operational (+5).

StepMathResult
Displayed base0.35×100 + 0.25×23.6 + 0.25×100 + 0.15×10080.9
Shrink each 100% rate(2/9)×1.0 + (7/9)×0.561.1%
Rank base0.35×61.1 + 0.25×23.6 + 0.25×61.1 + 0.15×61.151.7
Rank Score51.7 + 5 (Operational)56.7

The drawer can show about 80.9 while the table sorts on 56.7. That gap is the point.

Ranking rules

Eligibility, ranking, and sample size.

Indexed

Servers explicitly opted into the public MCP index and actively monitored.

Hidden

Paused monitors are excluded from the public leaderboard.

Ranked

Any server with at least 1 scored validation run. Sort order uses Rank Score, never Displayed Score alone.

Displayed Score

Raw composite. Drawer hero. Measured rates plus verdict bonus.

Rank Score

Table Score column and all leaderboard sorts. Rate components shrunk toward 50% with strength 7. Latency unchanged. Then the same weights plus verdict bonus.

Low sample

Fewer than 7 runs. Badge on the row. Still ranked via Rank Score so thin evidence cannot dominate.

Unrated

Zero scored runs in the window.

Identity

Public rows use slug and display name only.

Status chip

When classified: Modern only, Legacy only, Multi-edge protocol split, Auth required, Unreachable, Negotiation broken. Not a bare Degraded label.

Protocol era filter

Index filter for modern / legacy / dual / broken / unknown Spec readiness cuts.

Freshness

Cadence and data freshness.

SurfaceFreshness
Validation runsPer monitor schedule (public MCP fleet commonly about 6h; configurable down to 5 min)
Live leaderboardComputed from the latest 30-day window of MCP validation results
Trend deltaVs yesterday’s daily Score snapshot (00:15 UTC). Null until day 2 of snapshots
Validation runs counterReal 30-day run count for indexed servers

The split

What we are, and are not.

We are not

  • A paid placement directory
  • A full MCP spec certification body
  • A named-host matrix for every public row
  • An inside-out APM or tracing product

We are

  • An independent outside-in validator of public MCP URLs
  • A public reliability ranking with published math
  • A dual-era client: modern MCP first, legacy when required
  • Honest about listed vs called vs the job

FAQ

Common questions.

QuestionAnswer
Is this a lab benchmark of MCP servers?No. We probe production MCP URLs on a schedule and score whether the path held: reach, negotiate, list tools, call a safe tool, and whether the result looked like the job. It is reliability in the wild, not a capability bake-off in a lab.
Do you rank Cursor vs Claude vs VS Code on this page?No. The public Index is one outside-in client path per server. Named-host comparison lives on the product monitor. See MCP validation. This page documents the public Score only.
What goes into the Score?Four weighted signals plus a small verdict bonus: reach (35%), latency (25%), tool success (25%), and protocol conformance (15%). Missing components renormalize the remaining weights. The formula is public.
What is dual-era negotiation?MCP clients are mid-migration. We try the modern 2026-07-28 path first (stateless server/discover + per-request meta, no sticky Mcp-Session-Id), then fall back to legacy initialize/session when required. Spec readiness and protocol-era badges report which dialect actually worked.
What is Spec readiness?A 0-100 migration score from the dual-era probe: modern path, server/discover, header routing, and list-cache hints. Separate from the composite Score. It answers how ready this server is for modern MCP clients.
Why does status say “Modern only, legacy fails” instead of Degraded?When we know the cause, the public Status chip names it: modern-only, legacy-only, multi-edge protocol split, auth required, unreachable, and similar. Internal severity can still be degraded for ranking math. The label is never opaque when the probe classified the failure.
How is reach measured?Run-based reachability over the last 30 days: reachable MCP validation runs divided by total MCP validation runs for that server. This matches the monitor schedule (public MCP monitors are commonly about every 6 hours; paid agents can schedule down to 5 minutes), not a fake continuous heartbeat.
What does tool success mean?A blend of invocation (did tools/call complete with a well-formed MCP result?) at 60% and functional (did the result look correct for the tool's purpose?) at 40%. If only one signal exists, we use that one. The default public path exercises safe read tools with synthesized arguments, not a full contract suite unless a monitor is configured for deeper jobs.
What is protocol conformance?Per-run adherence to the MCP surface we exercise after dual-era negotiation: reachability, transport support, tool discovery, and invocation. Those pieces are weighted 30% / 25% / 25% / 20% and averaged across runs. It is not a full optional-feature certification of every MCP extension.
Why does the drawer show one Score and the table another?Two intentional numbers. Displayed Score (drawer) is the raw composite from measured rates. The table Score, and sort order, use Rank Score: the same formula after confidence shrinkage on rate components (reach, tool success, protocol conformance) toward a 50% prior with strength 7. Latency is never shrunk. Under 7 runs the gap is large on purpose. At high sample the two converge.
Why are some servers marked Low sample?Fewer than 7 validation runs in the scoring window. They still get a Displayed Score. Leaderboard position uses Rank Score so a lucky 2-run streak cannot outrank a proven fleet. Worked math is in Displayed vs Rank. Unrated means zero scored runs.
Can a server pay for a better rank?No. Rankings come from measured results only. Paused monitors are hidden from the public index entirely.
Do you publish internal IDs?No. The public index uses display names and stable slugs only.

Independence

Trust is measured, not purchased.

The Public MCP Score is operated by Carmel Labs / AgentStatus as an independent validator. Rankings are determined by measured validation results. Server operators cannot pay for a better score.

The only way to move up is to improve reach, latency, invocation, functional result, protocol conformance, and dual-era readiness under the same outside-in path.

Get listed.

Public MCP servers are indexed and monitored for free. Submit yours. We create a pilot dashboard and email you access.