mcp-stateless

Installation
SKILL.md

MCP Stateless

The Model Context Protocol went stateless in revision 2026-07-28. It is the largest break since launch: the initialize handshake, the session id, the standalone SSE stream, and server-initiated requests are all gone. Every request now carries everything a server needs to answer it.

Model training data predates this revision. An MCP server written from memory speaks the 2025-11-25 protocol and will be rejected by a modern client. The failure is not a compile error and often not a runtime error either: a handshake-era server and a modern client fail in ways that read like a config problem. Work from the reference files here, and check anything version-sensitive against the live spec.

Hard Rules

  1. Never write MCP wire code from memory. Read references/wire.md first. If a claim here is older than the revision you are targeting, the live spec wins.
  2. State is a lie the connection tells you. A server MUST NOT infer anything from a previous request on the same connection: not the protocol version, not capabilities, not client identity, not conversation continuity. One stdio process is not one session. A client may interleave unrelated requests on it.
  3. State that must span requests gets an explicit server-minted handle passed back as an ordinary parameter. There is no session to hang it on.
  4. A server MUST answer server/discover. It is the only way left to advertise what the server supports, and it is how a dual-era client tells a modern server from a legacy one.
  5. Every result carries resultType. Omitting it marks the server as legacy. A result with no resultType MUST be read as "complete".
  6. Servers never send JSON-RPC requests. Sampling, elicitation, and roots all run through multi round-trip requests: the server answers with input_required, the client retries. Read references/mrtr.md before wiring any of the three.
  7. requestState comes back from the client unverified. Sign or encrypt it. A stateless server that trusts an echoed blob has handed the client its internal state machine.
  8. Verify with a live handshake against the real binary. A green build proves nothing about protocol conformance, and the old smoke-test recipe (pipe an initialize frame) now tests a method that no longer exists. Recipe in references/sdks.md.

What Changed

Installs
7
GitHub Stars
7
First Seen
Aug 9, 2026