Upgrade
Take a backup before every upgrade. A rollback across a database migration is possible only by restoring it.
Current versions: gateway 2.0.1, portal 2.0.1, credential broker 2.0.0, MCP servers and the adapter 2.0.0.
From 2.0.0 to 2.0.1
Section titled “From 2.0.0 to 2.0.1”2.0.1 changes the gateway and the portal. The gateway fixes the tool list for clients on MCP 2026-07-28: with 2.0.0, Claude Code showed the server with no tools. The portal gets a new browser icon. The broker stays at 2.0.0. The changelogs list no change to policies or tool definitions, so there is nothing to approve again.
-
Update the bundle files (
compose.yamland the directories next to it) to the new version. Keep.env,certs/andservers.yaml. -
If
.envsetsMCP_GATEWAY_VERSIONorMCP_PORTAL_VERSION, change them to2.0.1. If it does not, the defaults of the newcompose.yamlapply. -
Pull and start:
Terminal window docker compose pulldocker compose up -dWith the offline packages, load the images of the new platform zip instead of
docker compose pull(and keepPULL_POLICY=never).
Generated keys and passwords stay. openbao-unseal rewrites the OpenBao policy.
Order of components
Section titled “Order of components”When you change several components, deploy the broker and the gateway before the portal. The portal 2.x works only with gateway
2.x and broker 2.x. Then update the servers. In the bundle, one docker compose up -d recreates the changed services.
The realm is imported only when it does not exist. Later changes of keycloak/realm-mcp.json do not reach an existing realm:
make them in the Keycloak console.
From 1.x to 2.0
Section titled “From 1.x to 2.0”2.0 is a breaking release. The gateway no longer reads servers, policy bundles or MCP_SERVER_* settings. Servers and systems
are runtime data, added in the portal. There is no mutual TLS between gateway and server and no registration from a pipeline.
-
Back up the PostgreSQL databases of the gateway and the broker.
-
Broker. Give its AppRole the policy lines of
secret/data/mcp/system-clients/*described in the broker README, step 1. Keep theBROKER_SYSTEMS_*settings of 1.x for the first start of 2.0.0. On that start the broker imports those systems into its database once, copies the OAuth client secrets to the new OpenBao path, and adopts the existing connections. After the first start, remove the settings. Without them nothing is imported: add the systems in the portal (Systems). -
Gateway. Delete
MCP_POLICY_*,MCP_REGISTRY_MODE,MCP_SERVER_*andcerts/policies-main.public.pemfrom the configuration, and the volume that held/app/state. Stop the policy server for the gateway. SetMCP_ALLOWED_CLIENTSonly if your AI clients are notclaude-codeandclaude-ai. Every instance needs the same value. -
Portal. 2.0 needs gateway 2.0.0 and broker 2.0.0 or newer. Deploy it after them. The identity provider must put
auth_time,acrandamrinto the tokens, because administration needs a fresh sign-in with a second factor. -
MCP servers. Remove
MCP_GATEWAY_POLICY_DATA_URL,MCP_GATEWAY_TLS_NAME,MCP_INTERNAL_URL,MCP_TLS_TRUSTSTOREand the Redis service of the old compose file. SetMCP_GATEWAY_JWKS_URI. The server refuses to start while an old setting is left. Servers that you built yourself need the starter 4.0.0. -
Add each server again in the portal by its address (Servers). Manifests and approvals stored under the same server id are taken again, but a 1.x manifest has no policies. Approve the connection, then the policies, then every tool.
-
Recreate the scope mapping. Group names are derived from the risk (
mcp-<system>-read,-write,-destructive), and resource grants are scope mapping entries, not group names inside a bundle.
What you approve again
Section titled “What you approve again”| Upgrade | Approve again |
|---|---|
| 2.0.0 to 2.0.1 | Nothing. |
| 1.x to 2.0 | For every server: the connection (fingerprint), the policies and the tools. Every tool waits, read-only ones too. |
| A server image that changed its policies or tools | The changed policies or tools. The server stays pending_approval and its tools are hidden until you approve. |
| A server that got a new certificate | The new fingerprint (certificate_changed), unless the certificate chains to a trusted CA. |
Check after the upgrade
Section titled “Check after the upgrade”- Run
docker compose ps. Every service is healthy. - Open the portal, Administration, Servers. No server is waiting for approval unless you expect it.
- Call one tool from an AI client.
