How setup is divided
Connecting your MCP client to C1 involves three people — you don’t need an admin role for your part:- Your C1 admin enables enterprise-managed authorization, registers the MCP servers, and grants you access.
- The owner of each MCP server configures it to trust C1 as a token issuer. See Support enterprise-managed authorization in your MCP server.
- You connect your client to C1 and add each server, which is what this guide covers.
Enterprise-managed authorization in Claude Code is gated by the
CLAUDE_CODE_ENABLE_XAA=1 environment variable and is experimental today. A future Claude Code release may simplify this, but the setup flow described here is not expected to change materially.Before you begin
Collect the following from the people who own each piece. Without all of it, the token request fails. The last item is the most commonly overlooked: if you haven’t been granted access in C1, the exchange is denied even when everything else is correct.Set up your client
Select your client for setup instructions.- Claude Code
- VS Code
- Other clients
1
Turn on the feature. Set
CLAUDE_CODE_ENABLE_XAA=1 in your shell profile so it persists. The gate is checked both when you run the commands below and when your agent connects to a server.2
Connect to C1 once. This configures the one C1 connection that every server reuses. Put the agent client’s secret in the environment variable that The
--client-secret reads, then run setup.--client-secret flag takes no inline value. It reads the secret from MCP_XAA_IDP_CLIENT_SECRET. Add --callback-port <port> only if your C1 connection doesn’t allow any loopback port for the browser sign-in.3
Sign in to C1. This opens C1 in your browser and caches the session.If you can’t use a browser, pass a C1-issued ID token directly instead:
claude mcp xaa login --id-token <C1 id_token>.4
Add an MCP server. Give Claude Code the server’s URL and the client credentials for that server’s authorization server. These are different from the C1 credentials in step 2. Repeat this step for each server you want to use.Set
--transport to http or sse to match the server; only HTTP and SSE servers are supported. The --client-secret flag takes no inline value — it prompts you for the secret, or reads it from MCP_CLIENT_SECRET. This is a different environment variable than the one in step 2.5
Use the server in Claude Code. Your agent obtains a token in the background when it calls the server. There’s nothing more to run.
Manage your connection
Use these commands to check or reset your C1 connection:claude mcp xaa showchecks your current connection.claude mcp xaa login --forcesigns you in to C1 again, for example after your access was reset.claude mcp xaa clearclears the connection so you can start over.