Skip to content

Conformance client: legacy-lifecycle scenarios fail with -32020 missing MCP-Protocol-Version header at 2026-07-28 #1002

Description

@DaleSeo

Several 2026-07-28 client scenarios drive the regular streamable HTTP client through the legacy initialize lifecycle. The suite's mock server requires the MCP-Protocol-Version header on every POST at this spec version, and the legacy lifecycle does not send it before negotiation completes, so the run dies at initialize:

{"jsonrpc":"2.0","id":0,"error":{"code":-32020,"message":"Missing MCP-Protocol-Version header"}}

Affected scenarios (verified at current main 2e2c791; identical at pre-#973 839922d, so not a regression from the SEP-2575 merges):

Likely fix: switch these scenario paths in conformance/src/bin/client.rs to the modern discover lifecycle added by #995 (ClientLifecycleMode::Discover / Auto) when running at 2026-07-28, which sends per-request metadata and the version header on every request. request-metadata already passes 5/5 through that path.

Repro:

cargo build -p mcp-conformance
npx -y @modelcontextprotocol/conformance@0.2.0-alpha.9 client \
  --command ./target/debug/conformance-client \
  --scenario auth/scope-step-up --spec-version 2026-07-28

Part of #977. Related: #978 (client-side SEP-2243 header work).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions