v0.3.0 — Dual-era protocol support
The conformance lane now speaks both protocol eras — and the regression lane records through either.
Dual-era protocol support (2026-07-28 + legacy handshake)
- Era auto-detection (
--era auto|modern|legacyonrun,record,replay):server/discoverprobed first, exactly like the official client's auto mode; anything that is not positive modern evidence falls back to the initialize handshake — on a fresh probe, so the audited session is never perturbed by the negotiation itself. - 19 modern-era checks, including three negative probes with teeth: requests without the
_metaenvelope must be rejected (ENV-01), an unsupported protocol version must return-32022with the supported list (VER-01), and a mismatchedMcp-Methodrouting header must return-32020over Streamable HTTP (HTTP-01). PlusresultTypeon every result,ttlMs/cacheScopeon list results,_metaserverInfo identity, deterministic tool order. - Dual-era regression sessions: the pinned 1.x SDK keeps serving handshake-era servers; 2026-07-28 servers get a probe-backed session — the 1.x and 2.x SDKs cannot share a venv (fastmcp pins
mcp<2.0), and the lane only needs two RPCs. - Validated against the official v2 SDK in both directions: the official client adopts mcp-proof's hand-rolled modern test server via
server/discover, and mcp-proof runs all three lanes fully green — including recorded and replayed fixtures — against official v2 SDK servers on both transports (stdio, and Streamable HTTP with SSE responses).
53 tests · CHANGELOG