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. The epic now links 31 work items: 28 dated-protocol implementation and conformance issues in the 2026-07-28 spec milestone, plus three extension work items tracked separately from the tier-scored core suite. All carry the 2026-07-28 label. The milestone adds the due date, while this epic provides 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-21 at main 8803d39 (after #999, #1000, #1005, #1011, #1012, #1018, and #1021 merged) with @modelcontextprotocol/conformance@0.2.0-alpha.9:
Server: 40/40 scenarios passing (114/114 checks)
Client: 30/32 scenarios passing (360/363 checks, plus 1 warning)
Movement since the 2026-07-18 snapshot (server 37/40, client 26/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).
Extension coverage (informational)
Extension conformance is reported separately from the dated core 40-server / 32-client scenario suites. #1019 keeps these gaps visible in CI:
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 uses the stateless discovery lifecycle for its server scenarios. Since #999, requests negotiating that version are served statelessly even when legacy session mode is enabled; STATELESS=1 remains useful to make the conformance harness intent explicit. Pass --suite all on the server run too — the default "active" suite skips 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. The epic now links 31 work items: 28 dated-protocol implementation and conformance issues in the
2026-07-28 specmilestone, plus three extension work items tracked separately from the tier-scored core suite. All carry the2026-07-28label. The milestone adds the due date, while this epic provides 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-21 at main
8803d39(after #999, #1000, #1005, #1011, #1012, #1018, and #1021 merged) with@modelcontextprotocol/conformance@0.2.0-alpha.9:Movement since the 2026-07-18 snapshot (server 37/40, client 26/32):
server-statelesswhile adding five subscription checks.tools_call(0/1) andauth/scope-step-up(11/13, plus 1 warning). Both still hit the legacy lifecycle missingMCP-Protocol-Versionheader and remain tracked by Conformance client: legacy-lifecycle scenarios fail with -32020 missing MCP-Protocol-Version header at 2026-07-28 #1002.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).Extension coverage (informational)
Extension conformance is reported separately from the dated core 40-server / 32-client scenario suites. #1019 keeps these gaps visible in CI:
Full scenario matrix (snapshot, 2026-07-21)
Server — 40/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 — 30/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 uses the stateless discovery lifecycle for its server scenarios. Since #999, requests negotiating that version are served statelessly even when legacy session mode is enabled;
STATELESS=1remains useful to make the conformance harness intent explicit. Pass--suite allon the server run too — the default "active" suite skips 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
2026-07-13 baseline: server 37/40, client 24/32. Server gaps:
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).2026-07-16: feat!: add server discovery and negotiation (SEP-2575) #973, feat: add modern client lifecycle modes (SEP-2575) #995, feat: accumulate client-side scopes during step-up authorization (SEP-2350) #888, fix(auth): validate discovered metadata issuer #996, and feat(conformance): add SEP-2243 header validation tool #997 merged. Server moved to 98/109 checks while remaining 37/40; client measured 15/32 because chore: update client conformance test scenarios #991 had orphaned eleven scenario mappings (Conformance client: auth scenarios unmapped since #991 dispatch change (blocks verifying SEP-2468/SEP-2352 fixes) #1001) and the legacy lifecycle lacked the required protocol-version header (Conformance client: legacy-lifecycle scenarios fail with -32020 missing MCP-Protocol-Version header at 2026-07-28 #1002).
2026-07-18: fix(auth): add an SDK path for pre-registered OAuth clients #994, feat(auth): bind DCR client credentials to issuing authorization server (SEP-2352) #998, and fix: enumerate conformance client scenarios #1008 merged; auth/pre-registration: new pre-registration-auth conformance check fails #984, Implement SEP-2352: Clarify authorization server binding and migration #879, and Conformance client: auth scenarios unmapped since #991 dispatch change (blocks verifying SEP-2468/SEP-2352 fixes) #1001 closed. Client moved 15/32 → 26/32. SEP-2468 now passes end-to-end; SEP-2352 is implemented but remains 15/16 because fix: enumerate conformance client scenarios #1008 shadows the dedicated migration harness path. Server remains 37/40.
2026-07-21: fix(server): serve draft-version requests statelessly per SEP-2567 #999, feat: add subscription listen streams (SEP-2575) #1000, fix: preserve negotiated progress responses #1005, chore: run full conformance CI suite #1010, fix: re-register after auth server change #1011, fix: pass SEP-2243 client conformance #1012, and fix: preserve JSON Schema 2020-12 keywords #1018 merged. Server reached 40/40 (114/114 checks); client reached 30/32 (360/363 checks, plus 1 warning). Only
tools_callandauth/scope-step-upremain blocked by Conformance client: legacy-lifecycle scenarios fail with -32020 missing MCP-Protocol-Version header at 2026-07-28 #1002.Out of scope here, tracked elsewhere
VERSIONING.md, dependency update policy, documentation coverage (26/48 → 48/48) — see ROADMAP.md