Remote MCP endpoints: a seeded sample
Snapshot 2026-10-29 07:34 UTC · probe run 07:46–07:52 UTC · read-only, no credentials
What was measured
| Frame | Official MCP Registry, version=latest, status active, at least one remote URL. 34,190 servers on 2026-10-29. |
|---|---|
| Frame SHA-256 | 519cd54b22a76e5f2d9d15ffc354e604ffa6c06cf30111873f6f3c480361ac79 |
| Sample | 500 servers, seed 20261029, canonical sort by registry name, partial Fisher–Yates with mulberry32, first listed remote URL per server. |
| Sample SHA-256 | ecdd2b1a596fb520203d2a029bb9389154c6c6585ac18133275ba0159738238c |
| Instrument | @eidonze/mcpreflight@0.5.0, local copy 0.5.0+audit.1: passes Mcp-Session-Id to tools/list, body cap 1 MiB → 8 MiB, keeps 401/403 AUTH_GATED classification. |
| Requests | Exactly two JSON-RPC calls per endpoint: initialize, tools/list. 10 s timeout, no retry, redirects not followed, no credentials, no tool calls, no payment. |
Results
| Status | Count | Share | 95% Wilson CI | Meaning |
|---|---|---|---|---|
| PASS | 316 | 63.2% | 58.9–67.3% | valid initialize result and tools/list array |
| AUTH_GATED | 123 | 24.6% | 21.0–28.6% | 401/403 with Bearer challenge; 108 had live RFC 9728 metadata |
| UNKNOWN / TIMEOUT | 58 | 11.6% | — | DNS/TLS failure, refused connection, or placeholder URL in the registry row |
| FAIL | 3 | 0.6% | — | 2xx response without a valid initialize result or tools/list array |
AUTH_GATED is not a failure. In the 2026-10-11 page these endpoints were folded into a single “no anonymous handshake” bucket, which made the number look worse and hid the reason.
Sensitivity check
The 58 unobservable endpoints were re-probed once about ten minutes later with the same instrument: 1 passed, 57 stayed unobservable. Including it would move 316/500 to 317/500 (63.4%). The primary result stays 316/500; the retry is reported separately, not merged.
What this number is not
- Not a registry-wide rate. It is a rate over 500 servers sampled from the frame above.
- Not comparable to mcp-probe’s 48.8% / 49.0%. That study samples npm/stdio-launchable servers and probes over stdio; this samples remote endpoints and probes over HTTP.
- Not a security, payment, or behavior claim. No tool was called and no credential was used.
- The 11.6% unobservable bucket is unresolved. Treating it as failure lowers the rate; dropping it changes the denominator. Both readings should be shown, not chosen silently.
Why the previous claim is withdrawn
The 2026-10-11 page said “every active server with a remote (HTTP) transport in the official MCP Registry, 9,991”. On the same date an independent census of the same registry reports 41,510 active servers, 26,692 of them remote-capable; on 2026-10-29 the registry has 34,190 remote-capable active servers. No dedupe rule approaches 9,991 (exact URL 34,937, normalized 34,151, host 25,507). The figure cannot be reproduced from public data, so it is treated as an undocumented subset, not a population.
Data
- sample.json — 500 sampled servers, seed, frame hash, sample hash
- results.jsonl — one JSON row per probed endpoint
- summary.json — counts and Wilson intervals
- retry-summary.json — the separate sensitivity pass
Limitations
- One snapshot, one URL per server. Servers listing several remote URLs were probed on the first one only.
- Registry rows include placeholder URLs such as
https://{AGENT_ATLAS_HOST}/mcp; these land in UNKNOWN instead of being dropped. - No retry in the primary pass.
- No credentials: endpoints behind OAuth cannot be evaluated beyond their 401 shape.
- The 10 s timeout is a judgement call, not a protocol requirement.
Reproduce
Inputs and outputs are deterministic from the same registry snapshot and the same seed. The three scripts used were local copies; they are not published here yet because the source repository is temporarily unavailable.