Skip to content

Configure the platform

Compose reads .env next to compose.yaml. Copy platform.env to .env, set MCP_DOMAIN, and change other options only when you need to. Passwords, keys and certificates inside the platform are generated on the first start and kept in Docker volumes. They do not belong in .env. After a change, run docker compose up -d.

Option Default Description
MCP_DOMAIN none, required The name users type in the browser and in their AI client, in lower case. The certificate in certs/tls.crt must name it.
MCP_ADMIN_USERNAME mcp-admin The first platform administrator (group mcp-platform-admin). Its initial password is generated: docker compose run --rm init show admin-password.
MCP_CERTS_DIR ./certs Directory with tls.crt, tls.key and, if needed, company-ca.crt.
MCP_HTTPS_PORT 443 The https port that nginx publishes.
MCP_HTTP_PORT 80 The http port that nginx publishes. It redirects to https.
MCP_BIND 0.0.0.0 The address on which nginx publishes both ports. Use 127.0.0.1 for a local test.
MCP_PUBLIC_ORIGIN https://<MCP_DOMAIN> Set only when the https port is not 443: https://<domain>:<port>. It is the origin users see. Without it, the addresses the platform hands out and the redirect from port 80 drop the port.
MCP_CLAUDE_CODE_CALLBACK_PORT 33418 The port Claude Code listens on for the sign-in callback. The portal shows it in the command it gives to users.
MCP_SERVER_TRUSTED_CAS_FILE empty A PEM file on the host with CAs that sign the certificates of MCP servers on other hosts. The gateway trusts them in addition to public CAs and certs/company-ca.crt. A server whose certificate chains to one of them, for the host name of its address, is trusted as ca and its renewals need no approval. Other servers are pinned by fingerprint.
MCP_GATEWAY_VERSION 2.0.1 Version of the gateway image.
MCP_BROKER_VERSION 2.0.0 Version of the credential broker image.
MCP_PORTAL_VERSION 2.0.1 Version of the portal image.
MCP_REGISTRY ghcr.io/aiwcorpo Registry with mcp-gateway, mcp-credential-broker, mcp-portal and the MCP servers.
MCP_THIRD_PARTY_REGISTRY empty (Docker Hub and quay.io) Registry with postgres, redis, nginx, eclipse-temurin, keycloak and openbao under their plain names.
PULL_POLICY missing Compose pull policy. Use never when the images are loaded by hand.
GATEWAY_MEM_LIMIT 2g Memory limit of the gateway.
BROKER_MEM_LIMIT 1g Memory limit of the broker.
PORTAL_MEM_LIMIT 1g Memory limit of the portal.
KEYCLOAK_MEM_LIMIT 2g Memory limit of Keycloak.

Compose variables that are not in platform.env

Section titled “Compose variables that are not in platform.env”
Variable Use
COMPOSE_PROJECT_NAME Changes the project name, and with it the prefix of volumes and networks (default mcp-platform). Used in Install locally.
COMPOSE_FILE Adds files, for example compose.yaml:servers.yaml for a server in the same Docker or compose.yaml:compose.offline.yaml for offline installs. On Windows the separator is ;.
COMPOSE_PROFILES Enables profiles. stub starts the stub backend of the test stack.
File Use
certs/ The certificate, key and company CA. After renewing the certificate, run docker compose up -d and then docker compose restart nginx.
nginx/keycloak-admin-allow.conf Networks that may open the Keycloak consoles (default allow all;). Run docker compose restart nginx after a change.
keycloak/realm-mcp.json The realm. It is imported only when the realm does not exist. Later changes do not reach an existing realm: make them in the Keycloak console.
servers.yaml (from servers.example.yaml) An MCP server that runs in the platform’s own Docker.

The bundle sets the options of the gateway, broker, portal and Keycloak in compose.yaml, from the values above. The bundle does not expose the rest. The standalone installs of the components document all of their options in the deploy/ directory of each repository:

Component Environment file and README
Gateway gateway.env and README
Credential broker broker.env and README
Portal portal.env and README
MCP servers The environment file named in Install an MCP server

The names there (MCP_* for the gateway and broker, PORTAL_* for the portal) are the same as in the environment: blocks of compose.yaml. To set an option the bundle does not expose, add it to a compose.override.yaml next to compose.yaml. Compose reads that file by itself only when COMPOSE_FILE is not set. Otherwise add it to COMPOSE_FILE.