MCP just became an HTTP citizen. Spec 2026-07-28 — the fifth release, and the biggest since launch — flips the Model Context Protocol from a stateful bidirectional design to a stateless request/response core (MCP blog, Claude announcement).
Anthropic cites 400M+ monthly SDK downloads (4× this year). Co-creator framing: community infrastructure, not a single-vendor plugin API.
TL;DR
| Change | Why it matters |
|---|---|
| Stateless core | Deploy on Lambda / Workers / any LB — no sticky sessions |
No initialize / Mcp-Session-Id | Each request self-describes in _meta |
server/discover | Optional capability probe |
| Extensions framework | MCP Apps (UI) + Tasks (async) versioned separately |
| Auth hardening | Production OAuth 2.0 / OIDC (Entra, Okta, …) |
| Routable headers | Mcp-Method / Mcp-Name for gateways without body parse |
| Claude | Rolling support + Apps, managed auth, tunnels, observability |
Stateless does not mean “no state”
From the MCP post: drop protocol sessions; if you need continuity, mint an explicit handle from a tool and have the model pass it back. Visible arguments beat hidden session bags.
MRTR (multi-round-trip requests) replaces server-pushed elicitation over a held stream: return input_required + opaque requestState, client retries with answers. That is how “are you sure?” works without sticky SSE.
Why sticky sessions were killing hosts
Gateway operators on HN said a huge fraction of production MCP bugs were session persistence: load balancers, multi-region failovers, serverless freezes, and clients that dropped SSE mid-elicitation. A stateful bidirectional core fought how HTTP is actually operated at scale. Stateless POST + explicit handles lets you put MCP on Lambda, Cloudflare Workers, or any LB without teaching the protocol about affinity cookies.
Migration mindset:
| Old habit | 2026-07-28 habit |
|---|---|
Rely on Mcp-Session-Id | Put continuity in tool args / handles |
| Hold SSE for “are you sure?” | MRTR input_required + requestState |
| Discover via long-lived initialize | Optional server/discover + self-describing _meta |
| Hide auth in session | Production OAuth/OIDC with issuer-bound credentials |
If your server encoded user shopping-cart state only in transport memory, you have a product refactor — not an SDK bump.
Claude’s product layer on top
Per Anthropic:
- 950+ connectors in the directory
- MCP Apps inline sandboxed UI
- Enterprise-managed auth — admin authorizes once; users inherit via IdP groups
- Observability dashboards for published connectors
- MCP tunnels (research preview) — private-network servers without public ingress
Quotes in the Claude post from Figma, Intuit, Netlify, Zoom, etc. all rhyme: scale HTTP like everything else.
For IdP-shaped rollouts, pair this post with explainx.ai’s Claude enterprise managed auth + Okta. For threat modeling, keep MCP security guide open while you remove session assumptions — stateless does not mean unauthenticated.
Spec changelog builders actually feel
From the official MCP 2026-07-28 post (David Soria Parra & Den Delimarsky):
| Change | Detail |
|---|---|
| No handshake / sessions | initialize / initialized and Mcp-Session-Id retired (SEP-2575, SEP-2567) |
| Self-describing POSTs | Protocol version + client info in _meta; optional server/discover |
| Header routing | Required Mcp-Method + Mcp-Name (SEP-2243) for WAF/gateways |
| Cacheable lists | ttlMs + cacheScope on tools/prompts/resources lists (SEP-2549) |
| MRTR | Mid-call input_required instead of held-open server→client streams (SEP-2322) |
| Auth | RFC 9207 iss validation; DCR → CIMD; credentials bound to issuer |
| Tasks extension | Poll tasks/get / tasks/update; notifications via subscriptions/listen |
| Deprecations | Roots, Sampling, Logging + legacy HTTP+SSE — ≥12 months offramp |
| SDKs day-0 | TypeScript, Python, Go, C# Tier 1; Rust beta; Java = Tier 2 (up to 6 months) |
Example shape (illustrative):
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
What Hacker News added
On the HN thread for the spec:
- Glama / gateway operators say a huge fraction of production bugs were session persistence — stateless is the unlock for OSS server hosting.
- Wire incompatibility both ways — many servers need real refactors, not just an SDK bump; gateways become an interop layer during the messy year.
- Maintainers confirmed file upload / binary transfer (SEP trail → SEP-2631 draft) was deferred; engage the working group now.
- Claude client support is rolling (Anthropic post).
- Ecosystem pulse from one index: ~30% of ~62k indexed OSS MCP servers pushed in the last 30 days — active, but migration will still be uneven.
Extensions: Apps and Tasks
Core going stateless is only half the release. The extensions framework versions MCP Apps (inline UI) and Tasks (async jobs) separately so the HTTP core can stay boring while product surfaces innovate.
Tasks pattern (high level): create work, poll tasks/get / tasks/update, listen via subscriptions/listen for notifications — instead of holding a bidirectional stream open for a 20-minute job. That maps cleanly onto queue workers and cron.
Apps pattern: sandboxed UI inside the host (Claude’s directory already markets this). Treat Apps as a privileged capability with its own review bar — see Claude artifacts + MCP connectors and Pascal Editor for product shapes that want rich UI over tools-only JSON.
Auth hardening builders should not skip
Production posture moves toward OAuth 2.0 / OIDC with enterprise IdPs (Entra, Okta, …), RFC 9207 iss validation, and credentials bound to issuer. Dynamic Client Registration paths shift toward CIMD in the changelog narrative. If your weekend MCP demo used a long-lived shared secret in a header, budget an auth rewrite before you call it “enterprise ready.”
Routable headers (Mcp-Method, Mcp-Name) let WAFs and API gateways classify traffic without parsing JSON bodies — important for zero-trust edges that already do method-based routing for the rest of your HTTP estate.
Cacheable lists
ttlMs + cacheScope on tools/prompts/resources lists (SEP-2549) matter when hosts hammer tools/list on every turn. Set realistic TTLs; over-cache and clients miss new tools, under-cache and you pay discovery tax on every message.
What builders should do this week
- Read the 2026-07-28 spec post.
- Upgrade Tier 1 SDKs; plan the 12-month deprecation window — Roots/Sampling/Logging/SSE.
- If you run remote MCP on sticky sessions, prototype a stateless path (Workers / Lambda / AgentCore).
- Separate core tools from Apps / Tasks / EMA extension adoption.
- Prefer explicit tool handles over transport session memory; design MRTR flows for confirmations.
- Inventory which clients your users actually use — Claude rolling support ≠ every host day-0.
- Revisit explainx.ai basics: What is MCP?, build your first server, MCP security, enterprise managed auth, RAG vs MCP.
Migration test plan (copy into your tracker)
- Cold POST without prior initialize succeeds with
_meta - Load balancer with no sticky sessions passes 100 sequential tools/call
- MRTR confirmation survives client restart with stored
requestState - OAuth refresh path works after IdP sleep
- Gateway routes on
Mcp-Method/Mcp-Namealone - Deprecated Sampling/Logging callers have a 12-month owner
- Binary upload requirements documented as blocked until SEP-2631 lands
SDK tiers: TypeScript, Python, Go, C# are Tier 1 day-0; Rust beta; Java Tier 2 (up to ~6 months). Don’t assume Java parity on cutover day.
Gateway operator cheat sheet
- Terminate TLS at the edge; forward
Mcp-Method/Mcp-Nameunchanged. - Do not invent sticky sessions “for compatibility” — fix servers instead.
- Cache
tools/listpercacheScope/ttlMs; purge on deploy. - Rate-limit
tools/callby OAuth subject, not by TCP connection. - Emit traces with protocol version from
_metafor mixed-fleet debugging. - Keep a compatibility gateway only for the 12-month deprecation window, with an explicit kill date.
Stateless MCP is an operations win if you treat it like any other HTTP JSON API — and a migration tax if you still encode shopping carts in transport memory. Ship the refactor once.
Example MRTR confirmation flow
- Client
tools/calldelete_resource. - Server returns
input_required+requestState(“Type DELETE”). - Client shows UI; user confirms.
- Client retries with answers +
requestState. - Server deletes; returns result.
No sticky SSE. No session bag. If your server still holds an open stream for “are you sure?”, you are on the pre-2026-07-28 mental model — refactor before the deprecation clock hurts. Pair with MCP security so confirmations are not the only control.
Closing note for explainx.ai readers
This launch moves fast; verify primary docs before you standardize tooling or brief a client. Re-check availability, pricing, and model IDs on the official pages linked above, then tell us what broke in production so we can update the guide. Follow @explainx_ai for follow-ups when the vendors ship the next patch — and prefer measured evals on your own traffic over screenshot economics. If you only needed a headline, you already have it; if you are implementing, the checklists above are the part that saves a weekend.
Related on explainx.ai
- Pascal Editor — open-source 3D buildings + MCP
- What is MCP?
- Build your first MCP server
- MCP security guide
- Claude enterprise managed auth + Okta
- How to use Claude connectors
- RAG vs MCP
- Claude artifacts + MCP connectors
- OpenAI secure MCP tunnel
Official
- MCP 2026-07-28 specification
- Hacker News discussion
- Bringing MCP 2026-07-28 to Claude
- ClaudeDevs thread
Spec details and Claude rollout timing reflect public posts as of July 28–29, 2026 — confirm SDK versions before you cut over production connectors.
