MCP 2026-07-28: Treat It as an Auth Migration, Not a Version Bump

Illustrated infographic summarizing: MCP 2026-07-28 Is an Auth Migration, Not a Version Bump

By Greg Nowak. Updated 28 September 2026.

MCP 2026-07-28 may arrive in your backlog as an SDK update. Treating it that way understates the work. The release removes protocol-level sessions, changes how clients and servers establish capabilities, and strengthens several OAuth requirements. Those changes cross application code, identity configuration, gateways, testing and operational ownership.

The business benefit is worthwhile: simpler horizontal scaling, clearer trust boundaries and less infrastructure tied to sticky sessions. But the upgrade is safe only when each request still carries enough verified information to answer three questions: who is calling, which MCP server is the token intended for, and what may the caller do?

Why this is more than a package upgrade

The final 2026-07-28 release removes the initialize/initialized exchange and the Mcp-Session-Id header. Client information and capabilities now travel with individual requests, while optional server/discover calls let clients inspect a server before proceeding. Streamable HTTP requests also expose method and tool names in headers, making gateway routing, metering and policy enforcement easier.

This removes protocol state, not business state. A tool may still need to retain a draft, continue a long-running job or request approval. That continuity should now be explicit: return an application-level handle and require it on the next call. The handle needs an owner, an expiry and protection against tampering. If it can be replayed by another user or tenant, removing sessions has revealed an authorization flaw rather than solved one.

Ask the engineering team to route consecutive calls to different server instances with session affinity disabled. If the workflow breaks, or authorization depends on identity cached against an old session ID, the service is not ready.

The OAuth changes decide whether you can ship

The current MCP authorization specification makes the expected trust relationships much more explicit. Clients record the authorization server’s validated issuer and check an iss value when the response supplies one. If the server advertises issuer-response support but omits iss, the client must reject the response. Client credentials must also remain bound to the issuer that created them.

Resource binding is equally important. MCP clients must send the OAuth resource parameter in both authorization and token requests, identifying the intended MCP server by its canonical URI. The server must then reject tokens that were not issued for its audience. This applies the protection defined by RFC 8707: a token for server A should not become a convenient pass into server B.

Dynamic Client Registration is now deprecated in favour of Client ID Metadata Documents, although it remains available for compatibility. There is no reason to force every client across in one weekend. Inventory which clients use DCR, which authorization servers support the preferred approach, and which older clients require a temporary compatibility path. Do not leave that path ownerless or open-ended.

An SDK update may not enable the new protocol

Version behaviour needs an explicit test, not an assumption. For example, the TypeScript SDK migration guide explains that installing v2 does not automatically put 2026-07-28 traffic on the wire. Clients must opt into modern version negotiation, while servers use new per-request entry points. The guide also provides compatibility options for serving modern and legacy clients during a staged migration.

Record the client SDK, server SDK, configured protocol mode and authorization behaviour as one tested combination. “Both sides are on v2” is not adequate release evidence.

Workstream Evidence required Release blocker
Protocol and routing Calls succeed across different instances; modern and legacy behaviour is documented Hidden dependence on session affinity or an unknown negotiated version
Application state Handles are scoped to the user and tenant, integrity-protected and time-limited A modified or cross-user handle is accepted
OAuth Issuer, resource, audience, expiry and scope checks have negative tests A token works at the wrong MCP server
Operations Logs identify the caller, resource, operation, protocol era and authorization outcome Support cannot explain why access was allowed or denied
Ownership Every connector has a business owner and a technical owner No one can approve permissions, rollback or retirement
A useful readiness review combines successful workflows with deliberate failure tests. A completed login alone proves very little.

Run the migration as a controlled access change

Start with an estate map: MCP clients and servers, SDK versions, transports, authorization servers, redirect URIs, registration methods, credential stores, target resources and business owners. Include any gateway rule or application component that reads Mcp-Session-Id or assumes an initialization exchange has already happened.

Next, build a compatibility environment that can exercise both protocol eras. Test discovery, tool listing, tool calls, multi-step interactions, cancellation and long-running work. Where application state crosses requests, document its lifecycle rather than hiding it inside a generic cache.

Then make the security tests deliberately hostile. Substitute an unexpected issuer, replay credentials against another issuer, send a token to the wrong resource, remove a required scope, expire a token and tamper with a workflow handle. Confirm the request is rejected and that the logs make the reason understandable without exposing secrets.

Finally, roll out by connector or user group, not by switching the whole estate at once. Define success measures, rollback conditions and the date when any legacy compatibility path will be reviewed. Keep the protocol migration separate from optional feature work such as Tasks or application UI changes; combining them makes failures harder to diagnose.

Enterprise-managed access is a separate design decision

The stable Enterprise-Managed Authorization extension lets an organization’s identity provider control MCP access centrally. It can improve onboarding, policy consistency and offboarding, but it is optional and client support varies.

If you adopt it, validate signed identity assertions, issuer, audience and expiration before mapping identity-provider claims to permissions. Use a stable subject identifier rather than email as the primary identity. Pilot with a narrow role and test the effective revocation delay, including what happens to access tokens that have already been issued.

Make the release an architectural checkpoint

The migration is complete when invalid combinations fail reliably—not when the first successful tool call appears in a demo. You should leave with an owned connector inventory, explicit state handling, issuer-specific credentials, resource-bound tokens, understandable logs and a tested rollback route.

If your migration crosses identity, infrastructure, application code and vendor-managed clients, a single technical owner for those joins is valuable. Greg can help turn the specification changes into a scoped migration, evidence-based test plan and rollout your operations team can support.

Related on GrN.dk

Need help with this kind of work?

Plan your MCP migration with Greg Get in touch with Greg.

Sources

Latest articles

OpenAI’s hosted Evals platform is closing. Preserve your tests, validate replacement scoring and keep releases covered before the October and November 2026 deadlines.

Decide which AI-assisted pages to keep, improve, combine or remove. Check claims, page overlap and metadata, then put clear review controls into your CMS.

Use October to trial daily AI reorder recommendations before Black Friday. Get your Shopify data, lead times and budget in order before turning recommendations into purchases.

When an OpenAI request stalls, customers need an accurate status. Set sensible retry limits, preserve submissions, and make unresolved work visible.

I learned server operations by breaking my own servers. I want someone who stands next to me while I do it, then does it themselves the week after.

I am good at building and bad at calling. Here is who I want next to me, what is easiest to sell, and how we split it.

An AI assistant can prepare a refund, but a person should approve the exact payment and amount. Here is how to make that approval hold up through execution and retries.

AI can pull together onboarding tasks before a new hire’s first day. See how the manager approves specific access and how outstanding tasks are followed through.

An internal AI assistant can cite an obsolete handbook with confidence. Here is how to manage document ownership, updates, deletions, access and answer review.

Cloudflare Free provides useful website protection, but its rate limiting and bot controls have limits. Here is how to assess them for a WordPress site.