
Docker MCP Gateway review
Docker CLI plugin that runs MCP servers from a catalog in isolated containers and serves their tools to clients through one gateway
Chandan Kumar is a founder of Geekflare. He is a technology enthusiast and entrepreneur who loves to help businesses and people around the world. Chandan has worked at BNP Paribas, Citibank, Deutsche Bank, Motorola, and HP. He’s got an in-depth understanding of business software and IT infrastructure.
Verdict
Docker MCP Gateway is a simple way to run local MCP servers with less risk, since each one starts in its own container with CPU and memory limits, no host environment and secrets scanned in tool calls. The catch is that the free version has one shared token and no users, so per-user access, policy and audit trails mean buying Docker's Enterprise Gateway.
Best for
Developers and small teams running catalog MCP servers in containers
Not for
Companies that need per-user access control without a Docker contract
Pros
- Each server runs in its own container with limits and no host environment
- Secret blocking and image signature checks are on by default
- Docker MCP Catalog with signed images, plus private catalogs as OCI artifacts
- One command connects Claude, Cursor, VS Code and other clients to a profile
Cons
- No users or roles in the free version, only one shared bearer token
- Outside Docker Desktop you need feature flags, a .env or credential helper for secrets
- Two critical advisories in July 2026, and every release is still marked pre-release
Is Docker MCP Gateway right for your project?
Describe what you need and AI will check the fit against this review.
Docker MCP Gateway features and capabilities
Servers in locked-down containers
Each MCP server starts in its own container without the host environment, with CPU and memory limits and optional network blocking, so a bad server can reach less.
Profiles shared through registries
A team can group the servers it uses into a profile, push it to a container registry and have everyone connect their clients to the same set.
Secret blocking and interceptors
Tool arguments and results are scanned for secret-like values by default, and your own scripts or HTTP services can check or block calls before and after they run.
Tool allowlists
Only the tools you enable from each server are exposed, which keeps the tool list short and leaves out risky actions.
Catalogs of approved servers
Teams can start from Docker's catalog of signed server images or publish their own catalog of approved servers as an OCI artifact.
- One endpointCombines tools from several MCP servers behind one URL
- Yes
- Client authOAuth, OIDC or keys for the agents and users calling the gateway
- PartlyOne shared bearer token; user SSO is in the Enterprise Gateway
- Per-tool accessAllows or denies individual tools per user, team or key
- PartlyAllowlist per profile, not per user; group policy is paid
- Server catalogA registry of approved MCP servers that teams can pick from
- YesDocker MCP Catalog and custom OCI catalogs
- API to MCPTurns existing REST or OpenAPI APIs into MCP tools
- No
- Sandboxed serversRuns local MCP servers in containers or another sandbox
- YesContainers with CPU and memory limits; network blocking optional
- GuardrailsChecks tool calls for prompt injection, secrets or PII
- YesSecret scanning by default; custom checks via interceptors
At a glance
- Type
- MCP gateway and server runner
- Stack
- Go
- Databases
- SQLite
- Licence terms
- The gateway and CLI plugin are MIT. Per-user sign-in, per-call policy and audit events sent to a SIEM are in Docker MCP Enterprise Gateway and Docker AI Governance, which are sold separately.
- SSO
- Paid only
- Roles and permissions
- Paid only
- Audit logs
- Paid only
Free vs paid editions
What you get when you self-host, and what needs a paid plan.
The MIT gateway runs catalog servers in containers with secret blocking, signature checks and tool allowlists, and works with Docker Desktop or a plain Docker Engine. The MCP Toolkit interface comes with Docker Desktop, which needs a paid subscription in companies with 250 or more staff or $10 million or more in revenue. Docker MCP Enterprise Gateway adds SSO, group policy per tool and SIEM audit events, runs in your cloud or air-gapped, and is priced on request.
Self-hosting Docker MCP Gateway
Docker gives no minimum requirements for the gateway; the Toolkit needs Docker Desktop 4.59 or later, and each MCP server container gets 1 CPU and 2 GB of memory by default.
New cloud server to ready
5 s
Memory in use at idle
11 MB of 4 GB
Median tool call
4.6 ms
Calls/s, 8 sessions
276
Peak memory
245 MB
Version tested
0.44.3 · Oct 30, 2026
- Docker's remote-server Compose example ran on a plain Linux server without Docker Desktop. It was ready in 5 seconds and used 11 MB at idle, but it would not start until I mounted the Docker socket, even with only remote servers, which gives the container full control of Docker on the host.
- It rejected my reference server over plain HTTP, since remote servers must use HTTPS, and it refused to run the mcp/everything image until I pinned it by digest, after which it checked the image's signature.
- With the reference server running in a container it started, tool calls took a median of 4.6 ms and 8 sessions made 276 calls a second. It started one server container per session, so memory reached about 245 MB across 9 containers, and with --long-lived those containers stayed up after the sessions ended.
- Requests without the bearer token got 401, and --tools limited the list to the two tools I named.
# catalog.yaml (in ~/.docker/mcp/catalogs/)
registry:
everything:
name: everything
type: server
image: mcp/everything@sha256:330885a0… # images must be pinned by digest
geekflare:
remote:
url: "https://mcp.geekflare.com/<API_KEY>/mcp" # remote servers must use HTTPS
transport_type: http
# compose.yaml
services:
gateway:
image: docker/mcp-gateway:v0.44.3
ports: ["127.0.0.1:8811:8811"]
env_file: gw.env # MCP_GATEWAY_AUTH_TOKEN
volumes:
- ./catalog.yaml:/root/.docker/mcp/catalogs/test.yaml:ro
- /var/run/docker.sock:/var/run/docker.sock # needed even for remote servers
command: ["--catalog=/root/.docker/mcp/catalogs/test.yaml", "--servers=everything,geekflare",
"--transport=streaming", "--port=8811", "--long-lived", "--tools=echo,dnsRecord"]{
"timestamp": 1793384963300,
"apiStatus": "success",
"apiCode": 200,
"meta": {
"url": "geekflare.com",
"test": {
"id": "4c10c9b3-2d43-4085-a6c3-a988aaf6214b"
}
},
"data": {
"A": [
"104.26.1.30",
"172.67.72.144",
"104.26.0.30"
],
"AAAA": [
"2606:4700:20::681a:1e",
"2606:4700:20::ac43:4890",
"2606:4700:20::681a:11e"
],
"MX": [ … ],
…What you can do with Docker MCP Gateway
Safe local MCP servers for developers
Give developers catalog MCP servers that run in containers with limits instead of npx or uvx processes on their laptops.
Shared server profiles for a team
Publish a profile of approved servers to the company registry so every developer's Claude, Cursor or VS Code uses the same tools.
MCP tools for agents in Compose
Run the gateway as a Compose service next to an agent so it can call containerised MCP servers over streaming HTTP.