State of MCP, 2026-09-13 census

Most MCP servers are not dead. We checked all 31,538.

A census of the entire official MCP registry, checked with the same zero-key probes anyone can run themselves. About 80.6% are healthy, roughly 1 in 5 is dead or broken, and only about 1 in 27 is fully dead. A verdict here is a measurement, not a rating.

Census date
2026-09-13
Servers checked
31,538
License
CC BY 4.0
Probe engine
akashi v0.3.0-11-g69de215

The verdict distribution

Dead-or-broken (degraded plus dead) is 5,851 servers, roughly 1 in 5. Fully dead is 1,184, roughly 1 in 27. Both counts are over the full 31,538, the more conservative and complete denominator.

Browse the archive: healthy, degraded, dead, unknown, or all 31,532 servers.

Honest denominator note: 276 servers declared only entrypoints we cannot probe without a key, so they are reported as unknown rather than folded into a rate. Excluding them narrows the base to 31,262 servers; over that smaller base healthy rises to 81.3% and dead-or-broken to 18.7%. We lead with the full 31,538 above because it is the more conservative, complete denominator.

Failure concentrates differently per layer

A single verdict hides where things actually break. Every server can fail at up to four independent layers, and they do not fail at the same rate.

Packages: the most reliable layer

Of 14,772 package entrypoints we could probe across npm, PyPI, and OCI, only 121 are broken, about 1%. A further 2,084 are OCI or private images we cannot probe without a key; they are reported separately, not counted as broken.

Repositories: the rot layer

Of 24,383 declared GitHub repositories, 3,370 return HTTP 404 or are gone and 217 are archived. Combined, 3,587 repositories have rotted, 14.7% of repository-bearing servers. A further 2,582 repository checks came back an ambiguous error, possibly transient or rate-limit related. We exclude those from the rotted figure instead of inflating it.

Hosted remotes: the fragile layer

Of 19,661 declared remote endpoints, 1,924 are down, 9.8%: unreachable, a server error, or not found. Remote-bearing servers (19,150 of them) are the sickest cohort: 22.5% dead-or-broken and 5.4% fully dead, versus 3.8% fully dead overall. 4,422 endpoints are auth-gated: alive, but not verifiable without a key. 366 answer HTTP 200 but are not real MCP servers, caught by an impostor guard before they ever count as healthy.

server.json validity

387 servers, 1.2% of the 31,538 that declare one, publish a server.json that fails validation against its own declared JSON Schema.

Conformance, not just uptime

12,003 remotes complete a full MCP initialize handshake. Of those, 10,641 go on to resolve tools/list over the official go-sdk client, the strongest keyless proof a server actually works.

Ready for the 2026-07-28 spec?

Health answers whether a server works today. The 2026-07-28 revision removes protocol sessions and the initialize handshake, so it also matters whether a server will still work afterwards. Of the 11,929 servers reachable through a conformant keyless initialize, 31 pass all four required-conformance signals, against 29 in the previous census. 63.3% already accept handshake-free calls, the heart of the change.

Read the spec-readiness report

Keyless and reproducible

Keyless

Every probe touches only public endpoints: the registry, the public GitHub API, npm, PyPI, anonymous Docker Hub, and a capability-only MCP initialize / tools-list handshake. Akashi authenticates to no probed server and runs none of its tools. A GitHub token, if present, only raises the public API rate limit.

Reproducible

Same registry, same probe set, same documented criteria, akashi v0.3.0-11-g69de215. Any row is re-checkable with akashi check <server>, any time.

Data access

Open data, CC BY 4.0, dated 2026-09-13.

Cite this data

CC BY 4.0 asks for attribution. Cite the dated census so your snapshot is reproducible: the registry moves, and each census supersedes the last without deleting it.

RoninForge.org, "State of MCP: a dated census of the official Model Context Protocol registry", 2026-09-13. CC BY 4.0. https://roninforge.org/data/state-of-mcp/

BibTeX

@misc{roninforge_state_of_mcp,
  author       = {{RoninForge}},
  title        = {{State of MCP: a dated census of the official Model Context Protocol registry}},
  year         = {2026},
  howpublished = {\url{https://roninforge.org/data/state-of-mcp/}},
  note         = {Census 2026-09-13. 31,538 servers. Data licensed CC BY 4.0.}
}

The same attribution string ships inside every JSON payload, on the cite field, so it survives a copy of the raw data. Source, methodology and a machine-readable CITATION.cff: the state-of-mcp repository.

Check it yourself

$ akashi check io.github.owner/name

Install Akashi - single Go binary, zero keys, MIT licensed.