MCP Extensions
MCP extensions are extensions that allow Partners to gate access to their MCP with Alli. Alli checks that a user has the MCP extension installed before forwarding the request to the Partner MCP server.
Authentication
If required, MCP extensions can connect to MCP servers that require
authentication. Alli currently supports a CIMD-based client credentials flow
with private_key_jwt authentication. Compatible Partners must implement:
- the OAuth 2.0 Authorization Server Metadata URL
- the OAuth 2.0 Token Endpoint supporting
client_credentialswithprivate_key_jwt
To initiate authentication, Alli fetches the OAuth 2.0 Authorization Server
Metadata from the configured issuer_url using RFC 8414 discovery. The
metadata's issuer must match the issuer_url from the app manifest, and its
token_endpoint must be an HTTPS URL. It must also list client_credentials
in grant_types_supported, private_key_jwt in
token_endpoint_auth_methods_supported, and RS256 in
token_endpoint_auth_signing_alg_values_supported. Alli then requests a token
with grant_type=client_credentials, scope=mcp:invoke, and a signed JWT in
client_assertion. The request includes
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
Its client_id is Alli's CIMD URL (in production,
https://partners.alliplatform.com/oauth/client-metadata.json). After
validating the client_assertion, the auth server should issue a token to Alli
that will be used for future calls to the MCP server.
Validating the Client Assertion
At the token endpoint, Partners should:
- Accept only an approved Alli
client_id. Fetch the CIMD document at that URL, confirm itsclient_idmatches, and read itsjwks_uri. - Use the public key from that JWKS, selected by the JWT's
kid, to verify the assertion's RS256 signature. Reject other signing algorithms. - Require the assertion's
issandsubto equalclient_id, itsaudto match the token endpoint, and itsiatandexpto be valid. Require a non-emptyjtiand reject it if already used. Retain used IDs untilexp. - Issue a token authorized for
mcp:invokeonly after these checks pass. Alli uses that token to authenticate requests to the Partner MCP server.
Configuration Example
Partners may define a configuration for an MCP server that they would like to make available on the Alli platform like so:
{
"mcp": {
"server_url": "https://mcp.example.com/mcp",
// auth is optional
"auth": {
"issuer_url": "https://auth.example.com"
}
}
}
Request Context
Alli includes the following headers on every proxied MCP request:
| Header | Description |
|---|---|
X-Alli-Partner-ID |
UUID of the partner |
X-Alli-Partner-Slug |
Partner slug |
X-Alli-Extension-ID |
UUID of the extension |
X-Alli-Extension-Slug |
Extension slug |
X-Alli-Client-ID |
UUID of the Alli client (tenant) |
X-Alli-Installation-ID |
UUID of the installation |
Transport Type
Alli currently supports MCP extensions for MCP servers using streamable HTTP transports.