MCP Deprecates OAuth Dynamic Client Registration

A terminal window showing the verbatim MCP 2026-07-28 changelog entry: OAuth 2.0 Dynamic Client Registration Protocol deprecated in favor of Client ID Metadata Documents
On this page

What’s actually changing, and why

The specification changelog states the change directly:

“OAuth 2.0 Dynamic Client Registration Protocol (RFC 7591) deprecated in favor of Client ID Metadata Documents”

DCR’s real weakness: an authorization server minting a client_id for any client that asks doesn’t provide a reliable way to verify who’s actually asking, which makes it vulnerable to phishing-style client impersonation. CIMD flips the identity model to be web-based instead: if a client controls the domain hosting its metadata document, it controls its own identity, verified by the authorization server fetching that URL directly rather than trusting a self-reported registration.

Structural Comparison Matrix

Operational AspectOAuth DCR (deprecated)Client ID Metadata Documents
Where client_id comes fromMinted by the authorization server at registrationThe client’s own stable HTTPS metadata URL
Identity verificationSelf-reported at registration timeVerified by fetching the client-controlled URL
Hosting requirementNone, beyond the registration callClient must host a JSON document at a stable URL
Pre-registration neededNo, that’s the point of DCRNo, CIMD is also stateless in this sense

Fix it: host a metadata document, use its URL as client_id

a Client ID Metadata Document, hosted at a stable HTTPS URL
{
  "client_name": "Example MCP Client",
  "redirect_uris": ["https://client.example.com/oauth/callback"],
  "grant_types": ["authorization_code"],
  "token_endpoint_auth_method": "none"
}

The URL where this document is hosted, for example https://client.example.com/.well-known/oauth-client, is what gets used as the client_id in authorization requests, not an ID returned by a registration call. This is a genuine architecture change for any client currently calling a DCR registration endpoint at startup: that call, and whatever code stores the resulting minted client_id, gets replaced by hosting a static document and referencing its own URL.

DCR still works, this isn't a hard break yet

Dynamic Client Registration continues to function for backward compatibility per the specification’s deprecated features registry, so an existing DCR-based integration isn’t broken today. Treat this as a signal to plan the CIMD migration, not an emergency fix, unless you’re building new client integrations, where CIMD should be the default from the start.

Confirmed version

Sourced from the official Model Context Protocol specification changelog, 2026-07-28 revision, published 2026-07-28, and independent sourcing on the Client ID Metadata Documents mechanism (SEP-991) for the concrete hosting and verification model. Browse more posts like this in the AI Productivity archive.

Frequently asked

Does this affect servers that only ever pre-register a single known client?

No. This deprecation is specifically about Dynamic Client Registration, the flow where a server mints a new client_id at runtime for clients it hasn't seen before. A fixed, pre-registered client_id shared out of band never used DCR in the first place and isn't affected.

Do I need to host the metadata document myself?

Yes. A Client ID Metadata Document is a JSON document hosted at a stable HTTPS URL the client itself controls, and that URL becomes the OAuth client_id directly. This is a genuine hosting requirement, not just a config change.

Emitted as FAQPage JSON-LD from the same frontmatter — one source, no duplicated prose.

Recent posts

Full-text search via Pagefind · ↑↓ to navigate · ↵ to open