← back to the checker

Snapshot · 2026-08-23

State of MCP migration

60.1%

of graded MCP servers still answer only the legacy protocol — the handshake the 2026-07-28 revision removed — with no modern surface responding at all.

Narrowed to the 6,191 servers touched since the revision shipped, the ones that could have migrated and are demonstrably still maintained, 63.8% are legacy-only. That is the number worth arguing about.

The Model Context Protocol revision dated 2026-07-28 removed protocol-level sessions, formalized OAuth 2.1 and deprecated several capabilities. Every entry in the official registry with an HTTP endpoint was probed once and graded by the same rule engine the checker on this site runs. No sampling and no estimate — the whole registry as it stood on 2026-08-23.

Sample

24,365 registry entries, latest version of each. Most of the registry is stdio servers that run on the user's own machine and cannot be probed over the network at all.

RegistryEndpointsShare
Entries scannedlatest version of each24,365
Addressable over HTTPunique endpoints — the population below13,38054.9%
stdio or local onlynot reachable from anywhere, not probed10,98445.1%

Of those 13,380 endpoints, only the graded row is scored. An endpoint that answers but exposes neither MCP protocol behaviour nor an authentication challenge told us nothing, and counting it as clean is how a snapshot like this ends up claiming the opposite of the truth.

OutcomeEndpointsShare
Graded10,89081.4%
Answered, but showed no MCP behaviour1,59711.9%
Unreachable8926.7%
Blocked by the SSRF guard10.0%

Which protocol era each server serves

Accepting the legacy handshake is a compatibility choice, not a compliance failure: the revision says a server MAY implement both behaviours, and maintained servers do exactly that because v1 clients are still out there. Only the legacy-only row has actually been left behind.

EraEndpointsShare
Serves the current revision, no legacy handshake960.9%
Dual-era: current and backwards compatible5945.5%
Legacy only: no modern surface answered6,54160.1%
Answered, but neither era could be confirmed3,65933.6%

7,230 of the 10,890 graded endpoints (66.4%) carry at least one critical finding, counting the OAuth posture rule alongside the era rules.

Maintained, or just still listed?

A dead endpoint that returns 200 is indistinguishable from a maintained one that chose not to migrate — unless you can date it. The registry skews heavily toward servers listed once and never touched again, so a flat percentage charges the whole ecosystem for what is largely a graveyard. Where an entry links a repository, the split below uses that repository's last push; otherwise it falls back to the date the registry entry itself was updated.

Dated by a repository push

74.5%

legacy-only, of 4,325 servers whose linked repository has been pushed to since 2026-07-28. Era undetermined for 18.6%.

Dated by a registry timestamp

39.0%

legacy-only, of 1,866 with no repository date to rest on. Era undetermined for 48.9% — a much weaker signal.

Some of that gap is composition rather than substance: the registry-dated group is far harder to classify at all. But the stronger signal is also the less flattering one, and it is the half to trust — the left-hand figure rests on servers whose maintainers demonstrably committed something after the revision shipped.

What fired

Findings across the 10,890 graded endpoints. A live probe only sees the outside, so the four rules that read a manifest — the TypeScript, Python, Rust and Go SDK versions — cannot appear here at all.

MCP001criticalLegacy-only: answers the removed handshake, serves no modern surface6,541
MCP002criticalSession id minted for a modern request310
MCP006criticalAuth without RFC 9728 protected-resource metadata677
MCP003warningDeprecated logging capability408
MCP004warningDeprecated sampling capability4
MCP005warningDeprecated roots capability2
MCP008warningModern server without server/discover17
MCP101infoDual-era: current and still backwards compatible594
MCP102infoSession ids issued to legacy clients only74

What this snapshot is not

  • Not a conformance suite. A fixed set of rules covers the breaking changes visible from outside. A server can pass every one of them and still be broken.
  • One probe, one moment. Each endpoint was contacted once on 2026-08-23. A server behind a cold start or a transient outage lands in the unreachable row rather than in a category it earned.
  • Not every server could be classified. 33.6% of graded endpoints answered without revealing which era they serve, often from behind auth. They stay in the denominator and are claimed for neither side.
  • An earlier version of this report was wrong. It counted every server that accepted the old handshake as unmigrated, which charged dual-era servers for doing exactly what the revision permits. The postmortem is in the repository.

And your server?

The rule engine behind every number on this page runs against one endpoint in about a second, or over a source tree without leaving your machine. Nothing is stored either way.

Check an endpoint →npx mcp-migration-check --source .