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(應該)按以下順序選擇:
- 若已有該 authorization server 的 pre-registered client information,先使用它。
- 若 authorization server metadata 宣告
client_id_metadata_document_supported,使用 Client ID Metadata Documents。 - 若 server 提供
registration_endpoint,才以 Dynamic Client Registration fallback。 - 若都不可用,再要求使用者輸入 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_idURL MUST(必須)使用httpsscheme,且必須有 path,例如https://example.com/client.json。- Document MUST(必須)至少包含
client_id、client_name與redirect_uris。 - Document 裡的
client_idMUST(必須)與 document URL 完全一致。 - Client MAY(可以)搭配適當 JWKS 使用
private_key_jwt做 client authentication。
Authorization server:
- 遇到 URL-formatted
client_id時 SHOULD(應該)抓取 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,例如:
- 為特定 authorization server 預先設定固定 client ID 與必要 credentials。
- 提供 UI,讓使用者自行在 server 的管理介面註冊 OAuth client 後填入 client information。
動態用戶端註冊(Dynamic Client Registration)
新實作應優先使用 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 改變時不需要重新註冊。