OptionaladdAdds custom client authentication to OAuth token requests.
This optional method allows implementations to customize how client credentials are included in token exchange and refresh requests. When provided, this method is called instead of the default authentication logic, giving full control over the authentication mechanism.
Common use cases include:
OptionalclientExternal URL the server should use to fetch client metadata document
Metadata about this OAuth client.
The URL to redirect the user agent to after authorization.
Return undefined for non-interactive flows that don't require user interaction
(e.g., client_credentials, jwt-bearer).
OptionalauthorizationReturns the previously saved authorization server URL, if available.
Providers implementing Cross-App Access can use this to access the authorization server URL discovered during the OAuth flow.
The authorization server URL, or undefined if not available
Loads information about this OAuth client, as registered already with the
server, or returns undefined if the client is not registered with the
server.
Loads the PKCE code verifier for the current session, necessary to validate the authorization result.
OptionaldiscoveryReturns previously saved discovery state, or undefined if none is cached.
When available, auth restores the discovery state (authorization server
URL, resource metadata, etc.) instead of performing RFC 9728 discovery, reducing
latency on subsequent calls.
Providers should clear cached discovery state on repeated authentication failures
(via invalidateCredentials with scope 'discovery' or 'all') to allow
re-discovery in case the authorization server has changed.
OptionalinvalidateIf implemented, provides a way for the client to invalidate (e.g. delete) the specified credentials, in the case where the server has indicated that they are no longer valid. This avoids requiring the user to intervene manually.
OptionalpreparePrepares grant-specific parameters for a token request.
This optional method allows providers to customize the token request based on the grant type they support. When implemented, it returns the grant type and any grant-specific parameters needed for the token exchange.
If not implemented, the default behavior depends on the flow:
code, code_verifier, and redirect_uriclient_credentials: detected via grant_types in clientMetadataOptionalscope: stringOptional scope to request
Grant type and parameters, or undefined to use default behavior
Invoked to redirect the user agent to the given URL to begin the authorization flow.
OptionalresourceReturns the previously saved resource URL, if available.
Providers implementing Cross-App Access can use this to access the resource URL discovered during the OAuth flow.
The resource URL, or undefined if not available
OptionalsaveSaves the authorization server URL after RFC 9728 discovery.
This method is called by auth after successful discovery of the
authorization server via protected resource metadata.
Providers implementing Cross-App Access or other flows that need access to the discovered authorization server URL should implement this method.
The authorization server URL discovered via RFC 9728
OptionalsaveIf implemented, this permits the OAuth client to dynamically register with
the server. Client information saved this way should later be read via
clientInformation().
This method is not required to be implemented if client information is statically known (e.g., pre-registered).
Saves a PKCE code verifier for the current session, before redirecting to the authorization flow.
OptionalsaveSaves the OAuth discovery state after RFC 9728 and authorization server metadata
discovery. Providers can persist this state to avoid redundant discovery requests
on subsequent auth calls.
This state can also be provided out-of-band (e.g., from a previous session or external configuration) to bootstrap the OAuth flow without discovery.
Called by auth after successful discovery.
OptionalsaveSaves the resource URL after RFC 9728 discovery.
This method is called by auth after successful discovery of the
resource metadata.
Providers implementing Cross-App Access or other flows that need access to the discovered resource URL should implement this method.
The resource URL discovered via RFC 9728
Stores new OAuth tokens for the current session, after a successful authorization.
OptionalstateReturns an OAuth2 state parameter.
Loads any existing OAuth tokens for the current session, or returns
undefined if there are no saved tokens.
OptionalvalidateIf defined, overrides the selection and validation of the RFC 8707 Resource Indicator. If left undefined, default validation behavior will be used.
Implementations must verify the returned resource matches the MCP server.
Optionalresource: string
Implements an end-to-end OAuth client to be used with one MCP server.
This client relies upon a concept of an authorized "session," the exact meaning of which is application-defined. Tokens, authorization codes, and code verifiers should not cross different sessions.
Transports accept
OAuthClientProviderdirectly via theauthProvideroption — they adapt it toAuthProviderinternally viaadaptOAuthProvider. No changes are needed to existing implementations.