Skip to content

v0.3.0 — Dual-era protocol support

Choose a tag to compare

@YuCPbit YuCPbit released this 20 Aug 22:12
· 12 commits to main since this release

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|legacy on run, record, replay): server/discover probed 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 _meta envelope must be rejected (ENV-01), an unsupported protocol version must return -32022 with the supported list (VER-01), and a mismatched Mcp-Method routing header must return -32020 over Streamable HTTP (HTTP-01). Plus resultType on every result, ttlMs/cacheScope on list results, _meta serverInfo 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