MCP TypeScript SDK (V2) / @modelcontextprotocol/client / client/crossAppAccess
client/crossAppAccess
Cross-App Access (Enterprise Managed Authorization) Layer 2 utilities.
Provides standalone functions for RFC 8693 Token Exchange and RFC 7523 JWT Authorization Grant flows as specified in the Enterprise Managed Authorization specification (SEP-990).
See
Interfaces
DiscoverAndRequestJwtAuthGrantOptions
Defined in: packages/client/src/client/crossAppAccess.ts:71
Options for discovering the IdP's token endpoint and requesting a JWT Authorization Grant. Extends RequestJwtAuthGrantOptions with IdP discovery.
Extends
Omit<RequestJwtAuthGrantOptions,"tokenEndpoint">
Properties
audience
audience:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:29
The authorization server URL of the target MCP server (used as audience in the token exchange request).
Inherited from
RequestJwtAuthGrantOptions.audience
clientId
clientId:
string
Defined in: packages/client/src/client/crossAppAccess.ts:45
The client ID registered with the IdP for token exchange.
Inherited from
RequestJwtAuthGrantOptions.clientId
clientSecret?
optionalclientSecret?:string
Defined in: packages/client/src/client/crossAppAccess.ts:54
The client secret for authenticating with the IdP.
Optional: the IdP may register the MCP client as a public client. RFC 8693 does not mandate confidential clients for token exchange. Omitting this parameter omits client_secret from the request body.
Inherited from
RequestJwtAuthGrantOptions.clientSecret
fetchFn?
optionalfetchFn?:FetchLike
Defined in: packages/client/src/client/crossAppAccess.ts:64
Custom fetch implementation. Defaults to global fetch.
Inherited from
RequestJwtAuthGrantOptions.fetchFn
idpUrl
idpUrl:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:76
The IdP's issuer URL for OAuth metadata discovery. Will be used to discover the token endpoint via .well-known/oauth-authorization-server.
idToken
idToken:
string
Defined in: packages/client/src/client/crossAppAccess.ts:40
The identity assertion (ID Token) from the enterprise IdP. This should be the OpenID Connect ID Token obtained during user authentication.
Inherited from
RequestJwtAuthGrantOptions.idToken
resource
resource:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:34
The resource identifier of the target MCP server (RFC 9728).
Inherited from
RequestJwtAuthGrantOptions.resource
scope?
optionalscope?:string
Defined in: packages/client/src/client/crossAppAccess.ts:59
Optional space-separated list of scopes to request for the target MCP server.
Inherited from
RequestJwtAuthGrantOptions.scope
JwtAuthGrantResult
Defined in: packages/client/src/client/crossAppAccess.ts:82
Result from a successful JWT Authorization Grant token exchange.
Properties
expiresIn?
optionalexpiresIn?:number
Defined in: packages/client/src/client/crossAppAccess.ts:91
Optional expiration time in seconds for the JWT Authorization Grant.
jwtAuthGrant
jwtAuthGrant:
string
Defined in: packages/client/src/client/crossAppAccess.ts:86
The JWT Authorization Grant (ID-JAG) that can be used to request an access token from the MCP server.
scope?
optionalscope?:string
Defined in: packages/client/src/client/crossAppAccess.ts:96
Optional scope granted by the IdP (may differ from requested scope).
RequestJwtAuthGrantOptions
Defined in: packages/client/src/client/crossAppAccess.ts:20
Options for requesting a JWT Authorization Grant via RFC 8693 Token Exchange.
Properties
audience
audience:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:29
The authorization server URL of the target MCP server (used as audience in the token exchange request).
clientId
clientId:
string
Defined in: packages/client/src/client/crossAppAccess.ts:45
The client ID registered with the IdP for token exchange.
clientSecret?
optionalclientSecret?:string
Defined in: packages/client/src/client/crossAppAccess.ts:54
The client secret for authenticating with the IdP.
Optional: the IdP may register the MCP client as a public client. RFC 8693 does not mandate confidential clients for token exchange. Omitting this parameter omits client_secret from the request body.
fetchFn?
optionalfetchFn?:FetchLike
Defined in: packages/client/src/client/crossAppAccess.ts:64
Custom fetch implementation. Defaults to global fetch.
idToken
idToken:
string
Defined in: packages/client/src/client/crossAppAccess.ts:40
The identity assertion (ID Token) from the enterprise IdP. This should be the OpenID Connect ID Token obtained during user authentication.
resource
resource:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:34
The resource identifier of the target MCP server (RFC 9728).
scope?
optionalscope?:string
Defined in: packages/client/src/client/crossAppAccess.ts:59
Optional space-separated list of scopes to request for the target MCP server.
tokenEndpoint
tokenEndpoint:
string|URL
Defined in: packages/client/src/client/crossAppAccess.ts:24
The IdP's token endpoint URL where the token exchange request will be sent.
Functions
discoverAndRequestJwtAuthGrant()
discoverAndRequestJwtAuthGrant(
options):Promise<JwtAuthGrantResult>
Defined in: packages/client/src/client/crossAppAccess.ts:205
Discovers the IdP's token endpoint and requests a JWT Authorization Grant.
This is a convenience wrapper around requestJwtAuthorizationGrant that first performs OAuth metadata discovery to find the token endpoint.
Parameters
options
DiscoverAndRequestJwtAuthGrantOptions
Configuration including IdP URL for discovery
Returns
Promise<JwtAuthGrantResult>
The JWT Authorization Grant and related metadata
Throws
If discovery fails or the token exchange fails
Example
const result = await discoverAndRequestJwtAuthGrant({
idpUrl: 'https://idp.example.com',
audience: 'https://auth.chat.example/',
resource: 'https://mcp.chat.example/',
idToken: await getIdToken(),
clientId: 'my-idp-client',
clientSecret: 'my-idp-secret'
});exchangeJwtAuthGrant()
exchangeJwtAuthGrant(
options):Promise<{access_token:string;expires_in?:number;scope?:string;token_type:string; }>
Defined in: packages/client/src/client/crossAppAccess.ts:250
Exchanges a JWT Authorization Grant for an access token at the MCP server's authorization server.
This function performs step 3 of the Enterprise Managed Authorization flow: uses the JWT Authorization Grant to obtain an access token from the MCP server.
Parameters
options
Configuration for the JWT grant exchange
authMethod?
Client authentication method. Defaults to 'client_secret_basic' to align with CrossAppAccessProvider and SEP-990 conformance requirements. Callers with no clientSecret should pass 'none' for public-client auth.
clientId
string
clientSecret?
string
fetchFn?
jwtAuthGrant
string
tokenEndpoint
string | URL
Returns
Promise<{ access_token: string; expires_in?: number; scope?: string; token_type: string; }>
OAuth tokens (access token, token type, etc.)
Throws
If the exchange fails or returns an error response
Defaults to client_secret_basic (HTTP Basic Authorization header), matching CrossAppAccessProvider's declared token_endpoint_auth_method and the SEP-990 conformance test requirements. Use authMethod: 'client_secret_post' only when the authorization server explicitly requires it.
Example
const tokens = await exchangeJwtAuthGrant({
tokenEndpoint: 'https://auth.chat.example/token',
jwtAuthGrant: 'eyJhbGci...',
clientId: 'my-mcp-client',
clientSecret: 'my-mcp-secret'
});
// Use tokens.access_token to access the MCP serverrequestJwtAuthorizationGrant()
requestJwtAuthorizationGrant(
options):Promise<JwtAuthGrantResult>
Defined in: packages/client/src/client/crossAppAccess.ts:124
Requests a JWT Authorization Grant (ID-JAG) from an enterprise IdP using RFC 8693 Token Exchange.
This function performs step 2 of the Enterprise Managed Authorization flow: exchanges an ID Token for a JWT Authorization Grant that can be used with the target MCP server.
Parameters
options
Configuration for the token exchange request
Returns
Promise<JwtAuthGrantResult>
The JWT Authorization Grant and related metadata
Throws
If the token exchange fails or returns an error response
Example
const result = await requestJwtAuthorizationGrant({
tokenEndpoint: 'https://idp.example.com/token',
audience: 'https://auth.chat.example/',
resource: 'https://mcp.chat.example/',
idToken: 'eyJhbGciOiJS...',
clientId: 'my-idp-client',
clientSecret: 'my-idp-secret',
scope: 'chat.read chat.history'
});
// Use result.jwtAuthGrant with the MCP server's authorization server