Skip to content

MCP Specification · 2026-07-28 · zh-TW

用戶端註冊

Client Registration

Pre-registration、Client ID Metadata Documents 與已棄用的 Dynamic Client Registration。

MCP 支援三種 OAuth client registration 機制:

  • Client ID Metadata Documents(CIMD):client 與 server 沒有預先關係時,通常是最適合的方式。
  • Pre-registration:client 與 authorization server 已有既存關係。
  • Dynamic Client Registration(DCR):保留做向後相容或特定需求;2026-07-28 已棄用。

同時支援所有方式的 client SHOULD(應該)按以下順序選擇:

  1. 若已有該 authorization server 的 pre-registered client information,先使用它。
  2. 若 authorization server metadata 宣告 client_id_metadata_document_supported,使用 Client ID Metadata Documents。
  3. 若 server 提供 registration_endpoint,才以 Dynamic Client Registration fallback。
  4. 若都不可用,再要求使用者輸入 client information。

Client ID 中繼資料文件(Client ID Metadata Documents)

MCP client 與 authorization server SHOULD(應該)支援 OAuth Client ID Metadata Documents。此方法允許 client 直接使用一個 HTTPS URL 當作 client_id;該 URL 指向描述 client identity 與 redirect URIs 的 JSON document,特別適合 MCP 中彼此沒有預先註冊關係的情境。

任何支援 Client ID Metadata Documents 的 MCP implementation MUST(必須)遵循 OAuth Client ID Metadata Document 規範所定義的 requirements。

實作要求(Implementation Requirements)

MCP client:

  • MUST(必須)以 HTTPS URL 提供 metadata document。
  • client_id URL MUST(必須)使用 https scheme,且必須有 path,例如 https://example.com/client.json
  • Document MUST(必須)至少包含 client_idclient_nameredirect_uris
  • Document 裡的 client_id MUST(必須)與 document URL 完全一致。
  • Client MAY(可以)搭配適當 JWKS 使用 private_key_jwt 做 client authentication。

Authorization server:

  • 遇到 URL-formatted client_idSHOULD(應該)抓取 metadata document。
  • MUST(必須)驗證 document 的 client_id 與 URL 完全相同。
  • SHOULD(應該)依 HTTP cache headers cache metadata。
  • MUST(必須)驗證 authorization request 的 redirect_uri 存在於 metadata 的允許清單。
  • MUST(必須)確認 document 是合法 JSON 且具有必需欄位。
  • SHOULD(應該)遵循 Client ID Metadata Document 與本規範安全頁的 SSRF、localhost 與 trust-policy 要求。

中繼資料文件範例(Metadata Document Example)

{
  "client_id": "https://app.example.com/oauth/client-metadata.json",
  "client_name": "Example MCP Client",
  "client_uri": "https://app.example.com",
  "redirect_uris": [
    "http://127.0.0.1:3000/callback",
    "http://localhost:3000/callback"
  ],
  "grant_types": ["authorization_code"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "none"
}

公告 CIMD 支援

Authorization server 透過 metadata 宣告:

{
  "client_id_metadata_document_supported": true
}

MCP client SHOULD(應該)檢查此能力;若 unavailable,client MAY(可以)fallback 至 DCR 或 pre-registration。

預先註冊(Pre-registration)

MCP client SHOULD(應該)支援靜態 client credentials,例如:

  1. 為特定 authorization server 預先設定固定 client ID 與必要 credentials。
  2. 提供 UI,讓使用者自行在 server 的管理介面註冊 OAuth client 後填入 client information。

動態用戶端註冊(Dynamic Client Registration)

已棄用(Deprecated)

新實作應優先使用 Client ID Metadata Documents。Dynamic Client Registration 只保留用於不支援 CIMD 的 authorization server 與舊版相容。

MCP client 與 authorization server MAY(可以)使用 RFC 7591 DCR 自動取得 OAuth client ID。

應用程式類型與重新導向 URI(Application Type and Redirect URI)

支援 OIDC 的 authorization server 可能依 application_type 對 redirect URI 施加限制。MCP client 在 DCR 時 MUST(必須)指定適當的 application_type

  • Desktop、mobile、CLI 與 localhost web app SHOULD(應該)使用 "native"
  • 遠端瀏覽器 web application SHOULD(應該)使用 "web"

Client MUST(必須)能處理因 redirect URI constraint 導致的 registration failure,並 SHOULD(應該)向使用者或開發者呈現有意義的錯誤。Client MAY(可以)調整 application type 或 redirect URI 後重試。

授權伺服器綁定(Authorization Server Binding)

使用 pre-registration 或保存 DCR credentials 的 client MUST(必須)把 credentials 綁定到簽發它的 authorization server issuer

若 Protected Resource Metadata 指向的 authorization server 改變:

  • Client MUST NOT(不得)重用其他 authorization server 的 client credentials。
  • 需要 DCR 的 client MUST(必須)向新的 authorization server 重新註冊。
  • Pre-registered credentials 若與目前 issuer 不符,client SHOULD(應該)明確報錯,而不是默默嘗試。

Client ID Metadata Document 的 client ID 是自我託管的 HTTPS URL,由 authorization server 即時解析,因此可跨 authorization server 使用;authorization server 改變時不需要重新註冊。