State of MCP readiness, November 2026
Fewer than three in ten remote MCP servers are ready for every store. We checked 34,728 of the 35,158 unique remote URLs in the official MCP Registry on 2 November 2026. Of the 33,003 that responded over HTTPS, 9,541 (28.9%) passed every blocking check for Claude, ChatGPT, Gemini and the MCP Registry.
The biggest gap isn't auth or transport. It's tool metadata. The three most common blockers are all missing tool hints or titles, and each takes a few lines of JSON to fix.
Headline numbers
- of checked URLs responded over HTTPS33,003 of 34,728
- 95.0%
- ready for all four stores9,541 servers
- 28.9%
- blocked by missing ChatGPT tool hints10,372 servers
- 31.4%
- set readOnlyHint or destructiveHint on every tool13,805 of 21,163
- 65.2%
- use OAuth13,558 servers
- 41.1%
- of OAuth servers offer refresh tokens12,514 of 13,558
- 92.3%
- fail the Gemini metadata discovery orderof 13,435 OAuth servers
- 356
- average score out of 100grade A for 12,738
- 83.1
The eight numbers
-
Most registry servers answer
33,003 of 34,728 checked URLs responded over HTTPS (95.0%). 30,351 of them (92.0% of responders) passed the MCP initialize check. 21,341 returned an initialize result and 9,010 returned a valid OAuth sign-in challenge. The registry lists 54,786 servers (latest versions), 35,817 of them list a Streamable HTTP remote, and that comes to 35,158 unique checkable URLs.
-
Gemini is the easiest AI store to pass, ChatGPT the hardest
Store Ready Share of 33,003 Unverified Claude 12,274 37.2% 8,577 ChatGPT 9,814 29.7% 8,633 Gemini 20,080 60.8% 8,761 MCP Registry 30,353 92.0% – All four 9,541 28.9% – Unverified means no blocking check failed, but one couldn't run, mostly because the tools sit behind sign-in and we check without credentials.
-
The top blocker is one missing hint
The check
tool_open_world(explicit readOnlyHint, destructiveHint and openWorldHint, which ChatGPT asks for) blocks at least one store on 10,372 servers (31.4%). Next cometool_annotationson 7,358,tool_titleson 7,006,auth_resourceon 1,872 andauth_prmon 1,628. -
About a third of servers skip tool annotations
We could list the tools of 21,163 servers. 13,805 of them (65.2%) pass
tool_annotations. Only 10,791 (51.0%) set all three hints ChatGPT wants, and 14,157 (66.9%) give every tool a title. -
Half the servers ask for no sign-in
OAuth 13,558 (41.1%), open 16,534 (50.1%), and 1,327 (4.0%) use an API key or similar, which store clients can't send.
-
OAuth servers mostly get the basics right
Of 13,558 OAuth servers, 12,514 (92.3%) advertise the refresh_token grant and 13,138 (96.9%) offer client registration (DCR or CIMD).
-
Two newer checks catch a few hundred servers
Gemini's metadata discovery order (
auth_gemini_discovery) fails on 356 of 13,435 OAuth servers where it ran. ChatGPT's metadata rules (auth_chatgpt_metadata, issuer equality and token_endpoint_auth_methods_supported) fail on 270 of 13,212. -
The average score is 83.1
Grade Servers Reports A 12,738 1,837 grade A reports B 11,709 2,239 grade B reports C 5,740 455 grade C reports D 188 30 grade D reports F 2,628 439 grade F reports Protocol versions were 2025-11-25 on 13,186 servers, 2025-03-26 on 4,865 and 2025-06-18 on 2,623. Another 11,662 returned no initialize result, mostly because they sit behind OAuth.
Top 10 store blockers
Servers where the check blocks at least one store, out of 33,003 that responded.
| Check | What it tests | Servers blocked | Stores |
|---|---|---|---|
tool_open_world | Explicit readOnlyHint, destructiveHint and openWorldHint (ChatGPT) | 10,372 | ChatGPT |
tool_annotations | readOnlyHint or destructiveHint on every tool | 7,358 | Claude, ChatGPT |
tool_titles | Human-readable title on every tool | 7,006 | Claude, ChatGPT |
auth_resource | Resource metadata "resource" equals the server URL | 1,872 | Claude |
auth_prm | Protected resource metadata (RFC 9728) | 1,628 | Claude, ChatGPT |
initialize | initialize over Streamable HTTP | 1,588 | Claude, ChatGPT, Gemini, Registry |
auth_as_metadata | Authorization server metadata (RFC 8414 / OIDC) | 1,560 | Claude, ChatGPT, Gemini |
auth_method | Sign-in method the store supports (OAuth or none) | 1,327 | ChatGPT, Gemini |
protocol_version | Supported protocol version negotiated | 675 | Gemini |
auth_gemini_discovery | First metadata URL Gemini tries answers 200 with the required fields | 356 | Gemini |
How to fix the top three blockers
All three live in your tool list, so one edit clears them. Give every tool a title and an annotations object with explicit true or false values.
Set readOnlyHint: true on tools that only read. Set destructiveHint: true on tools that change or delete data, and false on the rest. Claude needs one of the two on every tool (tool_annotations). ChatGPT needs all three hints written out, including openWorldHint, which says whether the tool reaches outside your own system (tool_open_world).
The title (tool_titles) is the short human name a store shows next to the tool. Keep it in plain words, not the snake_case name.
Then run McpStamp Check on your URL. It lists any tool that still misses a hint.
One tool in tools/list
{
"name": "search_orders",
"title": "Search orders",
"description": "Find orders by customer, date range or status. Returns up to 50 orders with totals.",
"inputSchema": { "type": "object", "properties": { "query": { "type": "string" } } },
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": false
}
} Method and limits
We read every server in the official MCP Registry (registry.modelcontextprotocol.io, latest version of each) and kept the unique Streamable HTTP remote URLs, 35,158 in all. Each one got a single check with McpStamp Check engine 1.2.0 on 2 November 2026, between 07:38 and 11:25 UTC. We sent no credentials and ran at most one check at a time per domain.
A server counts as responded when it gave any HTTP response that isn't a firewall or gateway error, so 404, 500 and sign-in challenges count. A store is ready when no blocking check failed and every blocking check could run. Store status is the engine's own result for each store, not recomputed.
We left out 189 of our own URLs, 175 on hosts that returned HTTP 429 (not retried), 2 whose host resolved to a private or reserved address, 66 the engine refuses before any request (a port other than 443 or 8443, sslip.io and nip.io names, a redirect to http, a malformed URL) and 2 engine errors.
There are limits. We re-checked the URLs that had responded earlier the same day first, then took the rest in random order, so the response rate is biased upward. One check per URL means a server that was briefly down counts as not responding. Without credentials we can't see tools behind sign-in, which is why so many servers are unverified rather than ready. And a ready call means no blocking check failed. It isn't approval from Anthropic, OpenAI or Google.
Look up a server
5,000 servers have a public report with their score, store calls and fixes. Browse the server reports or a grade list.
Grade A servers with the most tools
- ScorpTech x402 API 1012 tools
- NeuralVerge 363 tools
- ZeroWidth 299 tools
- Meta Council 280 tools
- Summer 234 tools
- Stable Baseline 227 tools
Missing the ChatGPT tool hints
- AdButler 628 tools, grade C
- TinyFn 572 tools, grade C
- AlpineDataWorks Intelligence 317 tools, grade C
- The Stall 302 tools, grade C
How to cite this study
You're welcome to quote any number here with a link. The aggregate data is on the Readiness Index page.
McpStamp. State of MCP readiness, November 2026. Scan of the official MCP Registry on 2 November 2026, McpStamp Check engine 1.2.0. https://www.mcpstamp.com/state-of-mcp-2026-11/
Check your own server
Paste a remote MCP URL. You get the score, the store blockers and the fix for each one in under a minute.