Install without internet access
The offline packages hold the images as files, so the host needs no registry access. Download them from the releases of mcp-platform-offline.
| Package | Content | Size |
|---|---|---|
mcp-platform-2.0.1-offline.zip |
Gateway, broker, portal, Keycloak, OpenBao, PostgreSQL, Redis, nginx, Eclipse Temurin, the Compose bundle | about 1.0 GB |
mcp-servers-2.0.0-offline.zip |
Servers for GitLab, Jira, Confluence, OpenSearch and the service desk, the adapter server, their deploy/ directories |
about 1.1 GB |
The images are linux/amd64. Supported hosts: Docker Engine on Linux x86_64, and Docker Desktop on Windows with the WSL 2 backend.
On an ARM machine the images run under emulation only. The release lists the checksums of the zips in SHA256SUMS.
Each zip has this layout:
| Path | Content |
|---|---|
images/ |
The images saved with docker save |
SHA256SUMS |
Checksums of the files in images/ |
load-images.sh, load-images.ps1 |
Check the checksums and load the images (Linux, Windows) |
mcp-platform/ (platform zip) |
The Compose bundle and compose.offline.yaml |
servers/mcp-server-<system>/ (servers zip) |
The deploy/ directory of each server |
Install the platform
Section titled “Install the platform”-
Extract the platform zip on the host.
-
Load the images. On Linux:
Terminal window ./load-images.shOn Windows, with Docker Desktop running, in PowerShell:
Terminal window powershell -ExecutionPolicy Bypass -File .\load-images.ps1Both scripts stop on a checksum mismatch. The last line on Linux is
ok all images loaded. -
Follow Install the platform in the
mcp-platform/directory up to the start (certificates incerts/,.envfromplatform.env), and add two lines to.envbefore you rundocker compose up -d:Terminal window COMPOSE_FILE=compose.yaml:compose.offline.yamlPULL_POLICY=neverOn Windows the separator in
COMPOSE_FILEis a semicolon:Terminal window COMPOSE_FILE=compose.yaml;compose.offline.yaml
compose.offline.yaml is required. compose.yaml names the third-party images by digest, and Docker Engine with the classic
image store does not keep the registry digest of an image loaded with docker load, so it would try to pull them. The
file names the same images by tag. PULL_POLICY=never stops any pull attempt.
Install an MCP server
Section titled “Install an MCP server”-
Extract the servers zip and load its images the same way (
load-images.shorload-images.ps1). -
Enter the directory of the server, for example
servers/mcp-server-gitlab/. -
Fill in its environment file as described in Install an MCP server.
-
Put
PULL_POLICY=neverin a.envfile next tocompose.yaml:Terminal window echo PULL_POLICY=never > .env -
Start the server:
Terminal window docker compose up -d
The image of version 2.0.0 is already loaded, so nothing is pulled or built.
Platform and server on one computer
Section titled “Platform and server on one computer”The steps of Install locally apply. Load the images first and use the two offline lines in .env.
Windows
Section titled “Windows”- Extract the zip with the Windows extractor or 7-Zip and keep the line endings. The shell scripts run inside Linux containers and stop working when an editor rewrites them with CRLF.
- Windows must trust a certificate from your own CA, for the browser and for Claude Code:
certutil -addstore -f Root ca.crtas administrator, andNODE_EXTRA_CA_CERTSfor Claude Code. host.docker.internalexists on Docker Desktop, so the local setup works as described.
Use your own registry instead
Section titled “Use your own registry instead”If the host reaches an internal registry, copy the images there and set MCP_REGISTRY and MCP_THIRD_PARTY_REGISTRY in .env
(see Configure). No offline package is needed then.
Licenses
Section titled “Licenses”The platform images are under the Apache License 2.0. The third-party images keep their own licenses: Keycloak (Apache 2.0), OpenBao (MPL 2.0), PostgreSQL (PostgreSQL License), Redis 8 (RSALv2, SSPLv1 or AGPLv3, at your choice), nginx (BSD 2-clause), Eclipse Temurin (GPLv2 with the Classpath Exception). They are the unmodified upstream images.
