SEP-837: Update authorization spec to clarify client type requirements — rust-sdk implementation
Spec PR: modelcontextprotocol/modelcontextprotocol#837
Track: Specification · Stage: accepted · Priority: P0 · Theme: Enterprise Readiness
Needs code changes: Yes (Small)
Summary
- References OpenID Connect Dynamic Client Registration 1.0.
- Adds guidance for the OIDC
application_type parameter during Dynamic Client Registration (e.g. native vs web), clarifying client type requirements.
Why this needs code changes in rust-sdk
DCR is performed by AuthorizationManager::register_client(..) in
crates/rmcp/src/transport/auth.rs, which serializes a pub(crate) struct ClientRegistrationRequest.
That struct currently has: client_name, redirect_uris, grant_types,
token_endpoint_auth_method, response_types, and optional scope. It has no
application_type field, so the OIDC DCR guidance isn't satisfied today.
Proposed work
Affected areas
crates/rmcp/src/transport/auth.rs (ClientRegistrationRequest, OAuthClientConfig, register_client), client-metadata.json.
Notes / risks
- Small, additive. Bundle with the Enterprise Readiness auth cluster (2350, 2351, 2352, 2468).
Related existing issues
SEP-837: Update authorization spec to clarify client type requirements — rust-sdk implementation
Spec PR: modelcontextprotocol/modelcontextprotocol#837
Track: Specification · Stage: accepted · Priority: P0 · Theme: Enterprise Readiness
Needs code changes: Yes (Small)
Summary
application_typeparameter during Dynamic Client Registration (e.g.nativevsweb), clarifying client type requirements.Why this needs code changes in rust-sdk
DCR is performed by
AuthorizationManager::register_client(..)incrates/rmcp/src/transport/auth.rs, which serializes apub(crate) struct ClientRegistrationRequest.That struct currently has:
client_name,redirect_uris,grant_types,token_endpoint_auth_method,response_types, and optionalscope. It has noapplication_typefield, so the OIDC DCR guidance isn't satisfied today.Proposed work
#[serde(skip_serializing_if = "Option::is_none")] pub application_type: Option<String>toClientRegistrationRequest(skip-if-none keeps it backward compatible with non-OIDC ASes)."native"for the typical CLI/desktop redirect (loopback/localhost) but make it configurable viaOAuthClientConfig(add awith_application_type(..)builder) sowebclients can opt in.register_client(..).client-metadata.jsonfor a matchingapplication_typevalue so CIMD and DCR agree.application_type(and omits it whenNone).Affected areas
crates/rmcp/src/transport/auth.rs(ClientRegistrationRequest,OAuthClientConfig,register_client),client-metadata.json.Notes / risks
Related existing issues
application_typebuilds on OIDC support)