You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Epic tracking issue for reaching 100% conformance on the 2026-07-28 spec suite before the spec release on 2026-07-28.
Per-item status lives in the sub-issues below — one per 2026-07-28 work item (conformance gaps and spec feature work, including completed ones so the progress bar reflects cumulative progress). The sub-issues mirror the 2026-07-28 spec milestone issue-for-issue, so the two progress numbers track the same set; the milestone adds the due date, this epic adds context and discussion. Conformance-gap issues carry failing check IDs and a repro command. The public roadmap is ROADMAP.md.
Current snapshot
Measured locally on 2026-07-16 at main 2e2c791 (after #973, #995, #888, #996, #997 merged) with @modelcontextprotocol/conformance@0.2.0-alpha.9:
Server: 37/40 scenarios passing (98/109 checks)
Client: 15/32 scenarios passing (193/220 checks)
Movement since the 2026-07-13 baseline (server 37/40, client 24/32):
For reference, the 2025-11-25 suite (0.1.16, npm latest) passes 100% on both server (30/30 + pending scenarios) and client (18/18 + legacy auth/2025-03-26-*).
Note that the 2026-07-28 suite is a per-version scenario set, not additive: 36 scenarios are shared with 2025-11-25, 36 are new, and 14 scenarios are dropped (initialize, ping, logging-set-level, resources-(un)subscribe, sse-retry, … — removals driven by SEP-2575/SEP-2577).
Full scenario matrix (snapshot, 2026-07-16)
Snapshot of a full local run with 0.2.0-alpha.9 — regenerate with the commands below rather than hand-editing. Live per-item status is in the sub-issues.
The 2026-07-28 suite speaks the stateless lifecycle for all scenarios (bare JSON-RPC POSTs, no initialize handshake), so server runs must target the STATELESS=1 conformance server. Running against the stateful server fails everything with HTTP 422. Pass --suite all on the server run too — the default "active" suite skips 18 of the 40 scenarios (including server-stateless and caching).
The implementation ships as v3.0.0 (chore: release v3.0.0 #964); tiering/relegation are evaluated against the latest stable release, so the release itself is on the critical path. Migration guide: discussion Migrating to 3.x (draft) #969.
Epic tracking issue for reaching 100% conformance on the 2026-07-28 spec suite before the spec release on 2026-07-28.
Per-item status lives in the sub-issues below — one per 2026-07-28 work item (conformance gaps and spec feature work, including completed ones so the progress bar reflects cumulative progress). The sub-issues mirror the
2026-07-28 specmilestone issue-for-issue, so the two progress numbers track the same set; the milestone adds the due date, this epic adds context and discussion. Conformance-gap issues carry failing check IDs and a repro command. The public roadmap is ROADMAP.md.Current snapshot
Measured locally on 2026-07-16 at main
2e2c791(after #973, #995, #888, #996, #997 merged) with@modelcontextprotocol/conformance@0.2.0-alpha.9:Movement since the 2026-07-13 baseline (server 37/40, client 24/32):
http-custom-header-server-validation0/5 → 9/9 (feat(conformance): add SEP-2243 header validation tool #997 closed Implement SEP-2243: server-side custom header validation #979)request-metadatacrash → 5/5 (feat: add modern client lifecycle modes (SEP-2575) #995 closed request-metadata client conformance: populate required request _meta (SEP-2575) #981)server-stateless2/28 → 18/25 (feat!: add server discovery and negotiation (SEP-2575) #973/feat: add modern client lifecycle modes (SEP-2575) #995 closed Implement SEP-2575: Make MCP Stateless #869; remaining gaps: server-stateless conformance: 7 remaining check failures after SEP-2575 foundation (18/25) #1004)tools-call-with-progressregressed 1/1 → 0/1 — feat!: add server discovery and negotiation (SEP-2575) #973's modern per-request path reintroduced the bug fix(streamable-http): preserve progress in JSON mode #990 fixed for the legacy path (Stateless streamable HTTP: tools/call with progress returns notification as response body #980 reopened)json-schema-2020-124/4 → 4/7 — the run now exercises SEP-2106 keyword-preservation checks that need conformance-server fixtures (Conformance server: json-schema-2020-12 SEP-2106 keyword-preservation checks fail (4/7) #1003); pre-existing, not a regression from the mergesauth/iss-*,auth/offline-access-*,auth/authorization-server-migration,auth/metadata-issuer-mismatch,json-schema-ref-no-derefmapping) error out (Conformance client: auth scenarios unmapped since #991 dispatch change (blocks verifying SEP-2468/SEP-2352 fixes) #1001), and legacy-lifecycle scenarios die on a missingMCP-Protocol-Versionheader atinitialize(Conformance client: legacy-lifecycle scenarios fail with -32020 missing MCP-Protocol-Version header at 2026-07-28 #1002). This currently blocks end-to-end verification of the merged feat: accumulate client-side scopes during step-up authorization (SEP-2350) #888 (SEP-2350) and fix(auth): validate discovered metadata issuer #996 (SEP-2468) fixes.For reference, the 2025-11-25 suite (
0.1.16, npmlatest) passes 100% on both server (30/30 + pending scenarios) and client (18/18 + legacyauth/2025-03-26-*).Note that the 2026-07-28 suite is a per-version scenario set, not additive: 36 scenarios are shared with 2025-11-25, 36 are new, and 14 scenarios are dropped (
initialize,ping,logging-set-level,resources-(un)subscribe,sse-retry, … — removals driven by SEP-2575/SEP-2577).Full scenario matrix (snapshot, 2026-07-16)
Server — 37/40 passing
completion-completetools-listtools-call-simple-texttools-call-imagetools-call-audiotools-call-embedded-resourcetools-call-mixed-contenttools-call-errortools-call-with-progressserver-sse-multiple-streamsresources-listresources-read-textresources-read-binaryresources-templates-readprompts-listprompts-get-simpleprompts-get-with-argsprompts-get-embedded-resourceprompts-get-with-imagedns-rebinding-protectionjson-schema-2020-12sep-2164-resource-not-foundcachinghttp-header-validationhttp-custom-header-server-validationserver-statelessinput-required-result-basic-elicitationinput-required-result-basic-samplinginput-required-result-basic-list-rootsinput-required-result-request-stateinput-required-result-multiple-input-requestsinput-required-result-multi-roundinput-required-result-missing-input-responseinput-required-result-non-tool-requestinput-required-result-result-typeinput-required-result-unsupported-methodsinput-required-result-tampered-stateinput-required-result-capability-checkinput-required-result-ignore-extra-paramsinput-required-result-validate-inputClient — 15/32 passing
Check counts vary slightly between runs (the mock emits some checks conditionally); statuses are stable.
tools_call-32020at initializerequest-metadataauth/metadata-defaultauth/metadata-var1auth/metadata-var2auth/metadata-var3auth/basic-cimdauth/scope-from-www-authenticateauth/scope-from-scopes-supportedauth/scope-omitted-when-undefinedauth/scope-step-up-32020before escalation — #888's fix unverifiableauth/scope-retry-limitauth/token-endpoint-auth-basicauth/token-endpoint-auth-postauth/token-endpoint-auth-noneauth/pre-registrationauth/resource-mismatchauth/offline-access-scopeauth/offline-access-not-supportedauth/authorization-server-migrationauth/iss-supportedauth/iss-not-advertisedauth/iss-supported-missingauth/iss-wrong-issuerauth/iss-unexpectedauth/iss-normalizedauth/metadata-issuer-mismatchsep-2322-client-request-statehttp-standard-headershttp-custom-headershttp-invalid-tool-headersjson-schema-ref-no-derefRunning the suites
The 2026-07-28 suite speaks the stateless lifecycle for all scenarios (bare JSON-RPC POSTs, no initialize handshake), so server runs must target the
STATELESS=1conformance server. Running against the stateful server fails everything with HTTP 422. Pass--suite allon the server run too — the default "active" suite skips 18 of the 40 scenarios (includingserver-statelessandcaching).cargo build -p mcp-conformance STATELESS=1 PORT=8002 ./target/debug/conformance-server & npx -y @modelcontextprotocol/conformance@0.2.0-alpha.9 server \ --url http://127.0.0.1:8002/mcp --suite all --spec-version 2026-07-28 -o results npx -y @modelcontextprotocol/conformance@0.2.0-alpha.9 client \ --command ./target/debug/conformance-client --suite all --spec-version 2026-07-28 -o results-clientThe suite is still alpha; re-baseline (and diff
conformance list --spec-version 2026-07-28) on each version bump.History
tools-call-with-progress(Stateless streamable HTTP: tools/call with progress returns notification as response body #980),http-custom-header-server-validation(Implement SEP-2243: server-side custom header validation #979),server-stateless2/28 (Implement SEP-2575: Make MCP Stateless #869).Out of scope here, tracked elsewhere
VERSIONING.md, dependency update policy, documentation coverage (26/48 → 48/48) — see ROADMAP.md