The MCP spec defines three SDK tiers: Tier 1 (Fully Supported), Tier 2 (Commitment to Full Support), and Tier 3 (Experimental). This document tracks where the PHP SDK stands and what's still missing to move up a tier.
Tier 3, per the official audit in modelcontextprotocol/modelcontextprotocol#3274 (2026-08-19, superseding the earlier Tier 3 assessment in #2305). Two things block Tier 2:
- Client conformance is 20% (10/50), against the ≥80% bar. Almost
entirely OAuth: 38 of 39 scored auth scenarios fail. Every one of those
failures is pre-declared in the SDK's own
tests/Conformance/conformance-baseline-*.ymlfiles and tracked inROADMAP.md— a known, scoped gap, not silent breakage. Server conformance is 100% (67/67). - No stable release ≥ 1.0.0 has ever shipped (latest: v0.7.1). Tier 2 requires at least one.
Tier 1 needs both of those plus full (not ≥80%) client conformance and closing 10 documentation gaps the audit lists by name (mostly small per-feature additions — legacy SSE transport and the elicitation complete-notification need either an implementation or an explicit "intentionally not implemented" note).
Tier 2 next, Tier 1 after the 1.0 release. Tier 1's "stable release" requirement is structurally out of reach until 1.0 ships regardless of how complete every other Tier 1 criterion is.
Roughly in priority order, per the audit's own recommendation:
- OAuth client conformance. The single highest-leverage fix — it
accounts for 38 of 40 client failures and blocks both tiers on its own.
Already scoped: token endpoint auth methods, scope handling (step-up,
retry-limit, from-
WWW-Authenticate, fromscopes_supported), dynamic client registration, issuer validation,offline_access, authorization-server migration — seeROADMAP.mdand the2026-07-28-labeled auth issues. - Fix the two non-auth client failures (
sse-retry,elicitation-sep1034-client-defaults, both scored at 2025-11-25). - Ship a stable 1.0.0+ release.
The SDK follows Semantic Versioning:
MAJOR.MINOR.PATCH. Pre-1.0, that means any digit can carry a breaking
change per SemVer §4 — every one is logged with a [BC Break] marker in
CHANGELOG.md.
Once at 1.0, the SDK adopts Symfony's Backward Compatibility Promise: PATCH releases never break BC, MINOR releases only add functionality (gated by the deprecation window in Deprecation policy), and a breaking change ships only in a MAJOR release.
See ROADMAP.md for the feature-level plan toward 1.0. This document only tracks the process/tier-classification gap, which is narrower and more mechanical than the feature roadmap.