All posts
Security

MCP Authorization After the July 2026 Spec: What Changed and What to Update

By

October 26, 2026

7 min read

The 2026-07-28 MCP revision made the protocol stateless, deprecated Dynamic Client Registration in favour of Client ID Metadata Documents, required issuer validation and bound client credentials to their authorization server. What each change means for MCP servers and clients you have already built.

MCP
OAuth
Authorization
AI Agents
Specification

The model, in one paragraph

A protected MCP server is an OAuth 2.1 resource server, and an MCP client is an OAuth client acting for a user. The server publishes Protected Resource Metadata (RFC 9728) naming its authorization server; the client discovers that server's metadata (RFC 8414), identifies itself, runs an authorization-code flow with PKCE, and calls tools with the resulting access token. That much has been stable since 2025. What changed is how clients identify themselves and how strictly they validate what comes back.

Want a second opinion on this for your system?

Book a free 30-minute call. You'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.

What 2025-11-25 introduced

Client ID Metadata Documents: instead of registering with every authorization server, a client uses an HTTPS URL as its client ID, and that URL serves a JSON document describing the client. Authorization servers advertise support with client_id_metadata_document_supported in their metadata. This fits MCP's normal situation — a client and a server that have never met — far better than pre-registration.

What 2026-07-28 changed

Change

What to do

Dynamic Client Registration (RFC 7591) deprecated in favour of Client ID Metadata Documents

Clients: publish a metadata document and use its URL as your client ID. Servers: support CIMD; keep DCR only for older clients

Authorization servers should include iss in authorization responses (RFC 9207); clients must validate it

Clients: check the issuer before redeeming a code — this closes mix-up attacks between authorization servers

Client credentials are bound to the issuing authorization server

Clients: key stored credentials by issuer, never reuse them elsewhere, re-register if the server changes

Clients must declare application_type during registration

Avoids redirect-URI conflicts with OpenID Connect providers

Protocol sessions and the initialize handshake removed; every request carries its version and capabilities

Servers: no per-connection state for auth decisions — authorise every request on its token

From the MCP specification changelog for 2026-07-28.

The new specification also adopted a feature lifecycle policy with a minimum twelve-month deprecation window, so Dynamic Client Registration keeps working for now — but new implementations should not adopt it.

A checklist for an existing MCP server

  • Serve Protected Resource Metadata and return a WWW-Authenticate header pointing to it on 401.

  • Validate the token audience on every request: tokens minted for another resource must be rejected.

  • Never pass a client's token through to upstream APIs; get your own, scoped for the call.

  • Support Client ID Metadata Documents at your authorization server, or choose one that does.

  • Authorise per request on the token's user and scopes — with sessions gone, nothing else carries state.

  • Log the user, the client ID and the tool for every call.

hoolco Monthly Review

Once a month: what changed in tech that month and what it means for you, from cloud and AI to security and the tools you build with. Every item links to its source. No sales pitch, unsubscribe in one click.

As of October 26, 2026. Provided as is, for general information, and accurate to the best of our knowledge on the date shown. Not legal, compliance, tax, financial or other professional advice. Prices, limits and vendor services change; check current vendor documentation before relying on anything here. Terms of use.