Check MCP server readiness for 2026-07-28 spec release
mcp-spec-check black-box probes a remote MCP server URL and tells you in 30 seconds if it's ready for the 2026-07-28 MCP spec release.
Why it matters
Validate whether a live MCP server endpoint is ready for the 2026-07-28 protocol specification release by black-box probing for stateless core adoption, required routing headers, session independence, and other breaking changes.
Outcomes
What it gets done
Probe live endpoints to verify server/discover implementation replaces initialize handshake
Test for required Mcp-Method and Mcp-Name routing headers on all requests
Validate session independence to ensure servers work behind load balancers
Generate graded readiness reports with pass/fail verdicts and migration guidance
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/roee-tsur-mcp-spec-check | bash Overview
Mcp Spec Check
mcp-spec-check black-box probes a live remote MCP server and reports, in about 30 seconds, whether it's ready for the 2026-07-28 MCP spec release, based on three required checks (discover, routing headers, session independence) plus warn-level checks, validated against CI reference servers and the official conformance suite. Use it to check a remote MCP server's readiness for the stateless-core spec release, or to gate CI on that readiness with a clean exit code; it doesn't fully grade auth-walled servers without credentials, and it's not a general conformance test suite or interactive debugger.
What it does
mcp-spec-check black-box-probes a live remote MCP server URL and reports, in about 30 seconds, whether it's ready for the 2026-07-28 MCP spec release - the largest protocol revision since launch, which removes the initialize handshake and Mcp-Session-Id in favor of a stateless core, requires Mcp-Method/Mcp-Name routing headers, replaces SSE elicitation with Multi Round-Trip Requests, and renumbers several error codes. The tool needs no access to the server's code - it sends real protocol probes against the live endpoint. Its own framing is careful about the date: nothing breaks on July 28 itself (that's when the spec text publishes, not a cutover switch), version negotiation keeps working, and deprecated features live for at least 12 months - the tool measures adoption of the new stateless core, not a countdown to an outage.
Only three checks can fail a server and drive the headline verdict (ready for 2026-07-28: YES / NO / UNKNOWN, decided solely by these three): discover (whether server/discover replaces the old initialize handshake), routing-headers (whether Mcp-Method/Mcp-Name are present on every request so gateways can route), and session-independence (whether the server is protocol-session-pinned, which breaks stateless serving behind load balancers). All three passing gives YES, any failing gives NO, otherwise UNKNOWN. Five additional checks are warn-level only and never fail a server on their own: error-codes, cache-metadata, mrtr, deprecated-features, and auth-metadata. A check the server answers too ambiguously to judge is marked inconclusive, and if too many checks land there, the tool reports grade ? ("couldn't assess") rather than guess.
Probe correctness is treated as the whole point of the tool: two reference servers (a real old-spec server on the official SDK v1, and an RC server on the 2026-07-28 SDK beta) are spawned in CI on every build, and the tool must produce the exact expected verdict for all eight checks against both; a known-truth panel cross-checks live public servers with established behavior (including GitHub's MCP server); and the official MCP conformance suite runs against the RC reference server as an independent co-oracle. The author also ran the checker against every server in the official MCP registry - all 7,850 - on 2026-07-12: of the 4,356 reachable openly, exactly 1 passed all three required checks and 90.8% were not yet ready, consistent with a migration that had barely begun before the spec was even GA.
When to use - and when NOT to
Use mcp-spec-check when you operate a remote MCP server and want a fast, code-access-free readiness check ahead of the 2026-07-28 spec release, or when you want to gate CI on spec readiness with a clean exit code (0 ready, 1 failing, 2 couldn't test). It's a fit for spot-checking your own server, auditing servers you depend on, or scripting a fleet-wide scan via --json output.
It is not a general MCP conformance test suite for implementers wiring tests against their own code (that's the official conformance suite's job), not a grader against the current 2025-11-25 spec (that's a different tool, YawLabs/mcp-compliance), and not an interactive debugger (that's the official Inspector). Without credentials, it can classify but not fully grade an auth-walled server - checks report skipped with exit code 2 - though the auth-metadata check still runs since its RFC 9728 probe is origin-level and needs no token.
Inputs and outputs
Run against any MCP server URL, no install required:
npx mcp-spec-check https://your-server.com/mcp
Input is the server's base URL plus optional flags: --json for machine-readable output, --verbose for the reasoning behind each check, --timeout <ms> (default 15000), and --bearer <token> or repeatable --header "..." for authenticated servers. Output is a human-readable report (or JSON) leading with the YES/NO/UNKNOWN verdict and a letter grade, per-check pass/fail/warn/inconclusive/skipped status, and a CI-friendly exit code.
Integrations
mcp-spec-check operates as pure black-box HTTP probing against the live MCP endpoint - no code access, nothing installed on the target, nothing stored beyond aggregate scan statistics, and zero runtime dependencies in the tool itself. It cross-validates its own verdicts against the official MCP conformance suite as an independent co-oracle. Its registry-wide scan touches only endpoints voluntarily published in the official public MCP registry, probing one request at a time per host with a self-identifying User-Agent, publishing only aggregate counts rather than per-server results.
Who it's for
Operators of remote MCP servers who need to know their spec-readiness status ahead of the 2026-07-28 release without exposing or auditing their own code, and teams building CI gates or fleet-wide dashboards that need a fast, independently-validated pass/fail/warn signal on MCP protocol compliance. It is licensed under MIT.
Source README
mcp-spec-check
Is your remote MCP server ready for the 2026-07-28 MCP spec release? Find out in 30 seconds.
npx mcp-spec-check https://your-server.com/mcp
Nothing breaks on July 28. That date is when the spec text publishes, not a switch that flips. Version negotiation keeps working and deprecated features live for at least 12 months. This tool measures adoption of the new stateless core, not a countdown to an outage.
The MCP 2026-07-28 release is the largest revision of the protocol since launch. The initialize handshake and Mcp-Session-Id are removed in favor of a stateless core, Mcp-Method / Mcp-Name routing headers become required, SSE elicitation is replaced by Multi Round-Trip Requests, and several error codes change. SDKs and clients are already moving to the stateless core, so servers that never migrate get left behind as support windows expire. mcp-spec-check black-box-probes your live endpoint (no code access needed) and tells you where you stand, with links to the migration docs.
The ecosystem scan
I probed every remote server in the official MCP registry, all 7,850 of them, on 2026-07-12. Of the 4,356 I could reach openly, exactly 1 passes all three required checks and 90.8% are not ready yet. The migration to the stateless core has barely begun, which is what you would expect before the spec is even GA. Full writeup, with every percentage next to its denominator and a host-collapsed sensitivity view: docs/scan-2026-07.md (committed aggregate: scan-2026-07.aggregates.json).
What it checks
The report leads with a one-line verdict, ready for 2026-07-28: YES / NO / UNKNOWN, decided only by the three required checks below (discover, routing-headers, session-independence): all three pass gives YES, any fail gives NO, otherwise UNKNOWN. A letter grade over every check follows as a secondary signal.
Only those first three can fail a server. The rest are warn: optional or forward-looking, never counted as "not ready" on their own.
A check the server answers too ambiguously to judge is marked inconclusive and, like a skipped check, does not count toward the grade. If too many land there, the tool reports grade ? ("couldn't assess", exit 2) rather than guess.
| Check | What it means |
|---|---|
discover |
server/discover replaces the initialize handshake; servers must implement it |
routing-headers |
Mcp-Method / Mcp-Name are required on every request so gateways can route |
session-independence |
Protocol-level sessions are removed; session-pinned servers cannot serve the stateless core behind load balancers |
error-codes |
(warn) resource-not-found renumbers from -32002 to -32602 |
cache-metadata |
(warn) new ttlMs / cacheScope caching metadata on list/read results |
mrtr |
(warn) results carry a resultType field (Multi Round-Trip Requests replace SSE elicitation) |
deprecated-features |
(warn) reliance on deprecated Logging or removed resources/subscribe capabilities |
auth-metadata |
(warn) OAuth protected-resource metadata (RFC 9728) discoverable at /.well-known/oauth-protected-resource |
How the verdicts are validated
Probe correctness is the whole game, so every check is pinned against known-truth servers rather than just asserted:
- Two reference servers run in CI. A real old-spec server (official SDK v1) and an RC server (the 2026-07-28 SDK beta) are spawned on every build, and
mcp-spec-checkmust produce the exact expected verdict for all eight checks against both (npm run verify:refs). A regression in either direction fails the build. - A known-truth panel cross-checks live public servers whose behavior is established, including GitHub's MCP server (auth-walled, RFC 9728 passes) and servers that should read as not-ready or inconclusive.
- The official conformance suite runs against the RC reference server as an independent co-oracle.
If the tool ever gives your server a wrong verdict, that is the top-priority bug. Open an issue with the --json output.
Usage
npx mcp-spec-check <url> # human-readable report + letter grade
npx mcp-spec-check <url> --json # machine-readable, for scripting
npx mcp-spec-check <url> --verbose # include the "why" for each check
npx mcp-spec-check <url> --timeout 30000 # per-probe timeout in ms (default 15000)
Authenticated servers
npx mcp-spec-check <url> --bearer <token> # sends Authorization: Bearer <token>
npx mcp-spec-check <url> --header "X-Api-Key: k" # any header; repeatable
Without credentials, mcp-spec-check can classify an auth-walled server but cannot
grade it: checks report skipped and the exit code is 2 (couldn't test). Theauth-metadata check still runs, because its RFC 9728 probe of/.well-known/oauth-protected-resource is origin-level and needs no token, so
you get a readiness signal even behind the wall.
CI
Exit codes are CI-friendly: 0 ready, 1 at least one failing check, 2 couldn't test (probe error; endpoint auth-walled / unreachable / not MCP; or the server answered our probes too ambiguously to grade).
- run: npx mcp-spec-check ${{ env.MCP_SERVER_URL }}
How it works
Pure black-box HTTP probes against your live endpoint. No code access, nothing installed, nothing stored. Zero runtime dependencies.
Probing ethics. The registry scan only touches endpoints voluntarily published in the official public MCP registry as connect URLs. Probes are host-serial (one request at a time per host, so no server ever sees parallel load), read-only protocol calls with no side effects, sent with a named mcp-spec-check-scan User-Agent that links back to this repo. Per-server results stay on the machine that ran the scan; only aggregate counts and percentages are published.
How this compares
The official conformance suite is a spec test framework for implementers, including draft-spec scenarios, that you wire up against your own code. YawLabs/mcp-compliance grades A to F compliance against the current 2025-11-25 spec. The official Inspector is for interactive debugging. mcp-spec-check is none of those: it is a 30-second black-box verdict on a hosted URL, aimed specifically at the next release (2026-07-28).
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.