All posts
MCP Published 14 min

MCP 2026-07-28 is live: day-one field notes after the cutover

July 28 shipped. MCP's fifth spec release makes the protocol stateless at the core, hardens OAuth, graduates Tasks and Apps into a versioned extensions framework, and updates Tier 1 SDKs. Here is what I verify in the first 48 hours that the pre-GA checklist could not prove until clients actually moved.

Jigar JoshiJigar JoshiAgentic AI Architect and Consultant
In this post (9 sections)

Introduction

The four-day cutover checklist was written for the night before. This post is for the morning after. The official MCP blog and Anthropic's Claude rollout note confirm what the RC promised since May 21: protocol-level sessions are dead, extensions are real, auth is stricter.

If your staging round-robin was green and production still feels weird, you are in the normal part of the curve. Sticky sessions hide application bugs. Stateless traffic surfaces them.

~400M
Monthly MCP SDK downloads (Anthropic)
4
Tier 1 SDKs shipping 2026-07-28 today
12 mo
Minimum deprecation window (Roots/Sampling/Logging)
950+
Connectors listed in Claude directory

What GA actually changed

Stateless core

No handshake. No Mcp-Session-Id. Protocol version, client identity, and capabilities ride in _meta. Optional server/discover exists if you want capabilities up front; it is not required. Any instance behind round-robin can take any request. Application state belongs in explicit tool handles the model can see, not in transport sessions you hoped Redis would keep honest.

Header-based routing and cacheable lists

Streamable HTTP must include Mcp-Method and Mcp-Name. Gateways can authorize and meter without parsing JSON bodies. tools/list, prompts/list, resources/list, and resources/read carry ttlMs and cacheScope so clients can cache without cross-tenant bleed. If you skipped the header security pass, fix secret headers in access logs before you celebrate latency wins.

MRTR instead of held-open streams

Multi Round-Trip Requests replace server-initiated elicitation/create, sampling/createMessage, and roots/list that needed a live bidirectional stream. The server returns resultType: "input_required" with the requests it needs; the client retries with inputResponses. This is how confirmations and mid-tool prompts work on serverless and edge without fake sticky sessions.

Auth hardening and CIMD

Authorization servers should return iss per RFC 9207; clients must validate before redeeming codes. Client credentials bind to the issuing auth server. Dynamic Client Registration remains for compatibility but is formally deprecated toward Client ID Metadata Documents. If you piloted Enterprise-Managed Authorization, re-check group inheritance on first login after clients upgrade.

Tasks and Apps as extensions

Tasks leave experimental core for io.modelcontextprotocol/tasks with poll-based tasks/get and tasks/update. MCP Apps sit in the same versioned extensions framework. Long-running work should not pretend to be a sticky session anymore. Use the extension, or keep your own job store behind a handle.

Day-one watch list vs backlog
Watch in the first 48 hoursBacklog inside the 12-month window
4xx from missing Mcp-Method / version mismatchesFull Roots / Sampling / Logging removal
Step-2 empty responses on multi-step tools (handle bugs)Polishing MCP Apps UI
cacheScope cross-user incidentsOptional Server Cards UX
OAuth iss validation failures after SDK bumpCIMD migration for every legacy DCR client
Clients still sending Mcp-Session-IdHTTP+SSE transport retirement

Verification script I run at T+2 hours

I treat the first two hours after the SDK bump like a flight check, not a standup. Same order every time so the on-call does not invent a personal ritual under stress.

# 1) Confirm negotiated protocol version on a live tools/list
curl -sS https://mcp.example/mcp \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/list" \
  -H "Mcp-Name: *" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/clientInfo":{"name":"cutover-probe","version":"1.0"}}}}' \
  | jq '{version: .result._meta, cacheScope: .result.cacheScope, ttlMs: .result.ttlMs, toolCount: (.result.tools|length)}'

# 2) Dual identity cacheScope check (expect disjoint catalogs if scoped)
# 3) Multi-step tool: mint handle on step1, kill a pod, complete step2
# 4) Grep access logs for Authorization= or Mcp-Session-Id=

If jq comes back empty on cacheScope for authenticated list endpoints, stop and fix caching before you invite more clients. Empty is not "flexible." Empty is how tenant B sees tenant A's tools.

Ecosystem day-zero signal (what I trust vs what I ignore)

The MCP blog quotes partners from AWS AgentCore, Cloudflare Workers, Microsoft Foundry, FastMCP, Supabase, and others claiming day-zero support. Useful as a vendor matrix. Useless as your production proof. I only greenlight a connector when our own probe script passes against that vendor's endpoint with our IdP tokens. Press quotes do not bind oauth_subject to handles.

GitHub's pre-GA note that their MCP Server already dropped Redis session writes was a good leading indicator. Still re-run the probe after their GA-aligned SDK bump. "We tracked the RC" is not the same commit as "we ship the final version string."

Breakage patterns I expect (and how I triage)

  1. 01
    Session-Id nostalgia
    Old clients still send Mcp-Session-Id or expect initialize. Symptom: rising 4xx or silent ignores depending on gateway. Triage: identify client SDK versions from User-Agent / clientInfo, publish upgrade matrix, keep a temporary reject metric so support is not guessing.
  2. 02
    Handle amnesia under real traffic
    Staging had two pods; production has ten and a colder Redis. Symptom: step 2 of checkout-like tools returns empty or wrong owner. Triage: confirm handle mint binds oauth_subject, prove kill-pod mid-flight, re-run the week-three handle sprint cases against prod-shaped load.
  3. 03
    Gateway body/header desync
    Proxies rewrite JSON but leave Mcp-Name stale. Symptom: authorize-on-header allows a tool the body is not calling, or vice versa. Triage: reject mismatches; log method/name only, never Authorization.
  4. 04
    List cache poisoning across identities
    Shared CDN key ignores cacheScope. Symptom: user B sees user A tool catalog. Triage: dual-identity test from the cutover checklist, then purge and fix cache keying.
  5. 05
    MRTR clients that still assume streams
    Elicitation hangs because the client never retries with inputResponses. Symptom: "tool waiting forever" tickets after you moved off sticky streams. Triage: confirm client SDK MRTR support; fall back to explicit confirm tools if needed.

Claude-specific notes

Anthropic is rolling 2026-07-28 support across Claude products, with MCP Apps, enterprise-managed auth, connector observability dashboards, and MCP tunnels (research preview) for private-network servers without inbound firewall holes. If you publish to the connectors directory, treat observability dashboards as day-one ops, not a nice-to-have. Viewer-scoped OAuth for live artifacts still follows the Week 29 checklist.

Portability reminder

Rival enterprise protocol headlines did not stop GA. Finish this cutover. Keep tool contracts and IdP policy above the wire so you are not rewriting business logic if another transport wins a press cycle. That is still the portability playbook.

How I declare day-one success

  • Multi-step tools complete under production round-robin with pod kills.
  • No cross-tenant handle replay in audit samples.
  • No Authorization or secret headers in CDN/gateway access logs.
  • Session-Id traffic is a known, trending-down backlog with owners.
  • On-call pages are about client upgrades, not inventing session affinity again.

Conclusion

GA day is when the RC stops being a PDF and starts being pager noise. Keep the freeze. Fix handles and headers. Leave Roots/Sampling/Logging on the 12-month plan. Boring traffic is the win condition.

Sources: Model Context Protocol Blog, "The 2026-07-28 Specification" at MCP blog; Anthropic, "Bringing MCP 2026-07-28 to Claude" at Claude blog.

The weekly take

Agentic AI patterns, delivered Thursdays

What I am shipping, watching, and pruning out of client stacks each week. One email. No fluff.

Shipping an agentic AI project this quarter?
Book a 30-min consult
Frequently asked

Questions readers ask about this post

Share this post
LinkedIn Facebook