Skip to content

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_credentials with private_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:

  1. Accept only an approved Alli client_id. Fetch the CIMD document at that URL, confirm its client_id matches, and read its jwks_uri.
  2. Use the public key from that JWKS, selected by the JWT's kid, to verify the assertion's RS256 signature. Reject other signing algorithms.
  3. Require the assertion's iss and sub to equal client_id, its aud to match the token endpoint, and its iat and exp to be valid. Require a non-empty jti and reject it if already used. Retain used IDs until exp.
  4. Issue a token authorized for mcp:invoke only 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.