You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Title: Support software_statement and jwks_uri in Dynamic Client Registration for MCP Author: Khanh Nguyen (@knguyen-figma) Status: Proposal Type: Standards Track Created: 2025-07-22
Abstract
This SEP proposes an enhancement to the MCP Dynamic Client Registration (DCR) flow by recommending support for two fields defined in RFC 7591: software_statement and jwks_uri. This change introduces a standardized, cryptographic mechanism for identifying and verifying client software during registration, which would improve trust, accountability, and vendor-specific policy enforcement across the MCP ecosystem.
Motivation
The current DCR mechanism in MCP lacks a reliable way to verify the authenticity of registering clients. This leads to several operational and security challenges:
Authorization servers cannot distinguish between legitimate and malicious MCP clients.
There's no cryptographic way to verify that a client was created by a trusted vendor.
It is difficult to audit or group clients by software origin.
Vendor-specific controls such as rate limiting, allowlisting, or feature gating are hard to implement reliably.
Introducing signed software_statements and jwks_uri fields addresses these gaps by creating a verifiable chain of trust back to the software vendor.
Specification
MCP clients and authorization servers SHOULD support software_statement and jwks_uri fields during DCR, as defined in RFC 7591 Section 3.1.1.
software_statement is a signed JWT (RFC 7519) containing client metadata, software ID/version, and expiration.
jwks_uri is a URL to a JSON Web Key Set (RFC 7517) that provides the public keys needed to verify the JWT.
DCR Flow:
sequenceDiagram
participant C as MCP Client
participant CB as Software Vendor Server
participant A as Authorization Server
Note over C,CB: Software Statement Preparation
C->>CB: Request software_statement JWT
Note over CB: Generate JWT with claims:<br/>- client metadata<br/>- software ID<br/>- software version<br/>- expiration
CB-->>C: Signed software_statement JWT
Note over C,A: Dynamic Registration
C->>A: POST /register<br/>software_statement + jwks_uri
A->>CB: GET /mcp/jwks.json
CB-->>A: JWKS document
Note over A: 1. Validate software_statement<br/>2. Verify JWT signature using JWKS<br/>3. Check issuer trust<br/>4. Validate claims & expiry
A-->>C: Client credentials
Loading
Rationale
Adding support for software statements:
Promotes consistent client identification: Allows grouping of registrations by software vendor or product.
Enables trust and auditing: Vendors can assert their identity cryptographically and servers can audit which clients are in use.
Facilitates vendor-specific policies: Rate limits, feature flags, or security controls can be applied more effectively.
Other approaches considered:
Manual allowlisting or pre-registration: Higher operational cost, less scalable.
Client-side fingerprinting or static identifiers: Unreliable and insecure.
This proposal uses well-established standards (JWT, JWKS) and is compatible with existing OAuth DCR workflows.
Backward Compatibility
This is a non-breaking, opt-in enhancement. Clients and servers that do not support the fields will continue to function as before. There is no requirement to reject clients who omit software_statement or jwks_uri.
Preamble
Title: Support software_statement and jwks_uri in Dynamic Client Registration for MCP
Author: Khanh Nguyen (@knguyen-figma)
Status: Proposal
Type: Standards Track
Created: 2025-07-22
Abstract
This SEP proposes an enhancement to the MCP Dynamic Client Registration (DCR) flow by recommending support for two fields defined in RFC 7591:
software_statementandjwks_uri. This change introduces a standardized, cryptographic mechanism for identifying and verifying client software during registration, which would improve trust, accountability, and vendor-specific policy enforcement across the MCP ecosystem.Motivation
The current DCR mechanism in MCP lacks a reliable way to verify the authenticity of registering clients. This leads to several operational and security challenges:
Introducing signed
software_statements andjwks_urifields addresses these gaps by creating a verifiable chain of trust back to the software vendor.Specification
MCP clients and authorization servers SHOULD support
software_statementandjwks_urifields during DCR, as defined in RFC 7591 Section 3.1.1.software_statementis a signed JWT (RFC 7519) containing client metadata, software ID/version, and expiration.jwks_uriis a URL to a JSON Web Key Set (RFC 7517) that provides the public keys needed to verify the JWT.DCR Flow:
sequenceDiagram participant C as MCP Client participant CB as Software Vendor Server participant A as Authorization Server Note over C,CB: Software Statement Preparation C->>CB: Request software_statement JWT Note over CB: Generate JWT with claims:<br/>- client metadata<br/>- software ID<br/>- software version<br/>- expiration CB-->>C: Signed software_statement JWT Note over C,A: Dynamic Registration C->>A: POST /register<br/>software_statement + jwks_uri A->>CB: GET /mcp/jwks.json CB-->>A: JWKS document Note over A: 1. Validate software_statement<br/>2. Verify JWT signature using JWKS<br/>3. Check issuer trust<br/>4. Validate claims & expiry A-->>C: Client credentialsRationale
Adding support for software statements:
Other approaches considered:
This proposal uses well-established standards (JWT, JWKS) and is compatible with existing OAuth DCR workflows.
Backward Compatibility
This is a non-breaking, opt-in enhancement. Clients and servers that do not support the fields will continue to function as before. There is no requirement to reject clients who omit
software_statementorjwks_uri.Reference Implementation
Reference server implementation: mcp-auth-server-software-statement
Tested via updated @modelcontextprotocol/inspector to generate software statements and host JWKS endpoints.
PR with spec updates: #883
Security Implications
This enhancement improves security posture by:
Authorization servers must ensure:
jwks_uriallowlists.