MCP-STL-003
A cold modern request succeeds with no prior handshake
“Make MCP stateless: remove the initialize/notifications/initialized handshake.” — spec anchor
How to fix this
Answer a request that arrives cold, with no prior handshake. `initialize` and `notifications/initialized` were removed; every request is self-contained.
How the validator checks this
Probe P1.1, against a streamable-http server on the modern protocol. What it reports:
- pass
- Cold request succeeded with no prior handshake
Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.
This rule is checked deterministically: a fail here is a certain violation, not an inference.
Checked in the same request as MCP-DSC-001, MCP-DSC-002, MCP-DSC-003, MCP-DSC-004, MCP-DSC-005, MCP-RES-001, MCP-RES-002, MCP-RES-005.
Check your own server against this rule
The validator makes real protocol requests and reports this rule as pass, warn or fail alongside the other 78. Validate a server or read how the check works.
Other Statelessness and session removal rules
- MCP-STL-001Server never mints or echoes Mcp-Session-Id
- MCP-STL-002A client-supplied Mcp-Session-Id is ignored, not required
- MCP-STL-004Server does not rely on prior requests over the same connection
- MCP-STL-005GET on the MCP endpoint returns 405
- MCP-STL-006DELETE on the MCP endpoint returns 405
- MCP-STL-007Last-Event-ID is ignored — streams are not resumable
- MCP-STL-008tools/list does not vary per connection