Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/dcr-deprecation-citation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@modelcontextprotocol/client': patch
---

Correct the `registerClient` `@deprecated` notice: Dynamic Client Registration was deprecated by spec PR modelcontextprotocol#2858 (Client ID Metadata Documents), not SEP-2577 (which deprecates roots, sampling, and logging). The notice now also names the earliest possible removal date under the feature lifecycle policy (2027-07-28) and clarifies that the `client_id_metadata_document_supported` gating lives in the built-in `auth()` flow — `registerClient` called directly always sends the registration request. Documentation only; no runtime behavior change.
6 changes: 4 additions & 2 deletions docs/migration/upgrade-to-v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -484,8 +484,10 @@ instead.
`ToolChoice`, `ToolUseContent`/`ToolResultContent`, the `includeContext` enum values),
and the full Roots stack (`Root`, `ListRootsRequest`/`Result`,
`RootsListChangedNotification`).
- **`registerClient`** (Dynamic Client Registration) — prefer Client ID Metadata
Documents per SEP-991.
- **`registerClient`** (Dynamic Client Registration) — deprecated via spec PR
[modelcontextprotocol#2858](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858)
rather than SEP-2577 (listed here because the `@deprecated` annotations landed in
the same sweep); prefer Client ID Metadata Documents per SEP-991.

The deprecation is annotation-only — JSDoc `@deprecated` markers were added, nothing
else: every deprecated runtime API keeps its v1 call signature (e.g.
Expand Down
15 changes: 11 additions & 4 deletions packages/client/src/client/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2359,10 +2359,17 @@ export async function fetchToken(
* consistently across both DCR and the subsequent authorization request.
*
* @deprecated Dynamic Client Registration is deprecated as of protocol version
* 2026-07-28 (SEP-2577) in favor of Client ID Metadata Documents (SEP-991).
* Remains functional during the deprecation window (at least twelve months).
* Prefer a CIMD URL `client_id` when the authorization server advertises
* `client_id_metadata_document_supported`; the SDK already gates on this for you.
* 2026-07-28 in favor of Client ID Metadata Documents (SEP-991); the deprecation
* landed via spec PR
* {@link https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858 | modelcontextprotocol#2858}
* (SEP-2577 is the separate roots/sampling/logging deprecation). Remains
* functional during the deprecation window — at least twelve months under the
* feature lifecycle policy (SEP-2596), so 2027-07-28 is the earliest possible
* removal date. Prefer a CIMD URL `client_id` when the authorization server
* advertises `client_id_metadata_document_supported`: the built-in `auth()` flow
* skips registration for you when that capability is advertised AND your
* provider supplies `clientMetadataUrl`, but `registerClient` itself does not
* gate — calling it directly always sends the registration request.
*/
export async function registerClient(
authorizationServerUrl: string | URL,
Expand Down
Loading