☁️

Docker MCP Server

Updated June 2026⭐ FeaturedTrust grade A94/100

The Docker MCP server (ckreiling/mcp-server-docker) gives an AI assistant direct control of a Docker daemon over the Model Context Protocol: containers, images, networks and volumes, as tools rather than shell commands. Built by ckreiling, it is community-built and best for Cloud.

by ckreiling

About

The Docker MCP server (ckreiling/mcp-server-docker) gives an AI assistant direct control of a Docker daemon over the Model Context Protocol: containers, images, networks and volumes, as tools rather than shell commands. It is the community server most people mean by "Docker MCP" — distinct from Docker’s own Docker MCP Gateway, which does not manage your containers at all but runs *other* MCP servers inside containers. If you want to ask Claude why the postgres container keeps restarting, you want this one; if you want a single secure endpoint in front of twenty catalog servers, you want the gateway. The tool surface is explicit and small enough to reason about: list_containers, create_container, run_container, recreate_container, start_container, fetch_container_logs, stop_container and remove_container for containers; list_images, pull_image, push_image, build_image and remove_image for images; list_networks / create_network / remove_network and list_volumes / create_volume / remove_volume for the rest. Two resource templates, docker://containers/{id}/logs and docker://containers/{id}/stats, let a client read logs and live stats by container ID or name without a tool call. It also ships a docker_compose prompt that puts the model into a plan-then-apply loop — you describe the containers you want under a project name, the model proposes a concise plan, and nothing runs until you approve it; reopening the prompt with the same project name re-reads the state of everything created under it, which is how you clean up after a lost chat. It runs on the Python Docker SDK’s from_env, so DOCKER_HOST applies: set ssh://user@host and the same server administers a remote engine. Two limits are deliberate and stated by the project — privileged options like --privileged and --cap-add/--cap-drop are not supported, and container configuration passes through the model, so no secrets belong in it.

A
Reliable94/100
low confidence · 1 measured signal

Grade A (94/100, reliable) from 1 measured signal, based on repository evidence. Only one signal stands behind it, so treat the grade as provisional.

What was measured

  • Repository maintenance100/100 · weight 20

    The repository has been pushed to or released within the last six months. — last push 2026-07-23.

  • Source verification100/100 · weight 25

    The repository URL was confirmed to resolve against the live GitHub API and is not archived.

  • Provenance65/100 · weight 10

    Community-built. That is not a mark against it — most of the ecosystem is community-built — but there is no vendor accountable for keeping it working.

  • Listing ↔ repository match100/100 · weight 5

    The listing name lines up with the linked repository ckreiling/mcp-server-docker.

What could not be measured

These contributed nothing to the score — not a penalty, not a zero. They are why the confidence reads the way it does.

  • Live MCP handshakeunknown

    No remote endpoint to handshake — this server installs and runs locally over stdio, so there is nothing to probe from the outside.

  • Measured uptimeunknown

    No probe history recorded for this server yet.

  • Tool-schema stabilityunknown

    Drift is a difference between two successive checks, and this server has none recorded.

Installation

pip
uvx mcp-server-docker

Searching "Docker MCP" returns two completely different products and the names do not help you tell them apart. This page is ckreiling/mcp-server-docker, the community server that hands an assistant your Docker daemon — containers, images, networks, volumes. Docker’s own Docker MCP Gateway is not a rival implementation of that; it manages no containers of yours at all, it is a CLI plugin that runs *other* MCP servers inside containers behind one endpoint. If the sentence you want to type is "why does the postgres container keep restarting", you are in the right place. If it is "give Cursor and Claude Desktop the same twenty tools without twenty stdio processes", you want the gateway instead. The other thing to settle before installing: this server can create, recreate and remove containers, and Docker is not a sandbox, so it reaches the host. Decide up front whether it points at a throwaway engine or a real one.

Setting up the Docker MCP server

  1. 1.Install with uv (recommended)

    The server is published to PyPI as mcp-server-docker and needs no clone or build — uvx fetches and runs it. Install uv first if you do not have it. The same block works in Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) and VS Code, and no token or API key is involved: authorisation is whatever your local Docker socket already grants.

    claude_desktop_config.json
    {
      "mcpServers": {
        "mcp-server-docker": {
          "command": "uvx",
          "args": ["mcp-server-docker"]
        }
      }
    }
  2. 2.Or run the server itself in a container

    There is a Dockerfile in the repository for convenience — clone it and build the image, then run it with the Docker socket mounted, which is what lets the containerised server reach the daemon on the host. Note the trade this makes: mounting /var/run/docker.sock into a container grants that container effective control of the host’s Docker, so this is a packaging convenience, not a security boundary.

    shell
    docker build -t mcp-server-docker .
    
    # then, in your MCP config:
    "args": ["run", "-i", "--rm",
             "-v", "/var/run/docker.sock:/var/run/docker.sock",
             "mcp-server-docker:latest"]
  3. 3.Point it at a remote engine over SSH

    The server builds its client with the Python Docker SDK’s from_env, so every variable that SDK reads applies — in practice DOCKER_HOST is the one that matters. Set it to an ssh:// URL in the env block and the same server administers a remote host, which is the server-administrator use case the project names first. SSH key auth has to already work for that user from the machine running the server.

    env entry
    "env": { "DOCKER_HOST": "ssh://myusername@myhost.example.com" }

What the server can do

Twenty tools across four object types, plus two resource templates. Roughly half mutate — create_container, run_container, recreate_container, remove_container, build_image, push_image, remove_image, remove_network and remove_volume all change state on the daemon.

list_containers

Every container on the daemon. The usual entry point, and read-only.

create_container / run_container

Create, or create and start. Mutating — this is where the assistant brings something up.

recreate_container

Replace a container with a new one from an updated spec. The tool behind "bump the image and restart it".

start_container / stop_container / remove_container

Lifecycle. remove_container destroys; nothing here asks twice.

fetch_container_logs

Container logs without a terminal. The tool that changes day-to-day debugging.

list_images / pull_image / push_image

The image registry side. push_image writes to a remote registry with whatever credentials the daemon holds.

build_image / remove_image

Build from a Dockerfile, and prune. Both mutate.

list_networks / create_network / remove_network

Networks, which is where most multi-container connectivity bugs actually live.

list_volumes / create_volume / remove_volume

Persistent data. remove_volume deletes data that no image rebuild brings back.

docker://containers/{id}/logs

Resource template, text/plain. Read logs by container ID or name with no tool call — the server exposes templates rather than enumerating live containers.

docker://containers/{id}/stats

Resource template, application/json. Live CPU and memory stats for one container.

What people use it for

Stand up a stack with the docker_compose prompt

Use the docker_compose prompt with project name "wordpress": deploy a WordPress container and a supporting MySQL container, exposing WordPress on port 9000.

The docker_compose prompt puts the model in a plan-then-apply loop — it writes a concise natural-language plan and waits, so you approve or send it back for another pass before anything runs. That approval step is the difference between this and letting a model call run_container freehand.

Find out why a container keeps dying

The api container is restarting. List the containers, pull the last 100 lines of its logs, check its stats, and tell me whether it is crashing or being OOM-killed.

list_containers, fetch_container_logs and the stats resource answer this without a single context switch to a terminal, and all three are read-only — safe against an engine you care about.

Clean up after a chat you lost

Reopen the docker_compose prompt for project name "wordpress" and tear down everything it created.

Starting the prompt with an existing project name re-reads the status of every container, volume and network created under that name. The project explicitly calls this out as the recovery path when the conversation that created a stack is gone.

Which one should you use?

Three servers get called "Docker MCP" in listings. They are not interchangeable, and the choice follows from what you want to control.

Docker MCP Gateway

When the problem is distributing MCP servers, not managing containers. It runs catalog servers in isolated containers, keeps secrets in Docker Desktop rather than JSON config, and gives VS Code, Cursor and Claude Desktop one identical endpoint. Docker Desktop 4.59+ with the MCP Toolkit enabled.

QuantGeekDev/docker-mcp

The other community Docker server. Smaller and, as of this check, last pushed in December 2024 — it installs and runs, but nothing warns you it is frozen. Prefer ckreiling unless you specifically depend on its behaviour.

Kubernetes MCP

When containers are scheduled by a cluster rather than started by hand. Asking a Docker server about a pod gets you the node’s view of a container, not the workload’s.

Every command, environment variable, and endpoint above was read from the project’s own documentation on 2026-08-22: ckreiling/mcp-server-docker README, docker/mcp-gateway README, Docker SDK for Python — client.from_env.

Browse all MCP server setup guides.

Frequently Asked Questions

Is this the same as Docker’s official Docker MCP Gateway?
No, and they do not overlap. This server exposes your Docker daemon as tools. The gateway (docker/mcp-gateway, the docker-mcp CLI plugin behind Docker Desktop’s MCP Toolkit) exposes *other* MCP servers, each running in its own container, behind one endpoint your clients share. Running both is normal: the gateway for tool distribution, this server for container administration.
Can I safely put secrets in containers the assistant creates?
No. The project states this bluntly: do not configure containers with sensitive data — API keys, database passwords — because that configuration passes through the model, and anything the model sees is compromised unless the model runs on your own machine. Inject secrets by a path the assistant never touches.
Why can it not run a privileged container for me?
Deliberately unsupported. --privileged and --cap-add/--cap-drop are not exposed, for the same reason the disclaimer warns that Docker is not a secure sandbox: the MCP server can affect the host through Docker, and these flags remove the last constraints on how far. The project asks for an issue with a use case rather than shipping them by default.
How do I stop it from touching production?
By choosing which daemon it talks to, not by configuring the server — there is no read-only mode. It authenticates as whatever the socket or DOCKER_HOST grants, so scope it there: point DOCKER_HOST at a development engine, or run it against a remote host over SSH under a user whose Docker access is limited. Review created containers regardless; the disclaimer asks you to.
It cannot reach Docker from inside the container. What is missing?
The socket mount. When running the server as a container, -v /var/run/docker.sock:/var/run/docker.sock is what connects it to the host daemon — without it the SDK’s from_env finds nothing to talk to. On a remote setup, check that plain `docker ps` works over the same ssh:// URL from the host running the server before blaming the MCP layer.
What is Docker MCP Server?
Docker is an MCP server built by ckreiling. The Docker MCP server (ckreiling/mcp-server-docker) gives an AI assistant direct control of a Docker daemon over the Model Context Protocol: containers, images, networks and volumes, as tools rather than shell commands. It is the community server most people mean by "Docker MCP" — distinct from Docker’s own Docker MCP Gateway, which does not manage your containers at all but runs *other* MCP servers inside containers. If you want to ask Claude why the postgres container keeps restarting, you want this one; if you want a single secure endpoint in front of twenty catalog servers, you want the gateway. The tool surface is explicit and small enough to reason about: list_containers, create_container, run_container, recreate_container, start_container, fetch_container_logs, stop_container and remove_container for containers; list_images, pull_image, push_image, build_image and remove_image for images; list_networks / create_network / remove_network and list_volumes / create_volume / remove_volume for the rest. Two resource templates, docker://containers/{id}/logs and docker://containers/{id}/stats, let a client read logs and live stats by container ID or name without a tool call. It also ships a docker_compose prompt that puts the model into a plan-then-apply loop — you describe the containers you want under a project name, the model proposes a concise plan, and nothing runs until you approve it; reopening the prompt with the same project name re-reads the state of everything created under it, which is how you clean up after a lost chat. It runs on the Python Docker SDK’s from_env, so DOCKER_HOST applies: set ssh://user@host and the same server administers a remote engine. Two limits are deliberate and stated by the project — privileged options like --privileged and --cap-add/--cap-drop are not supported, and container configuration passes through the model, so no secrets belong in it.
Who built Docker MCP Server?
Docker MCP Server was built by ckreiling.
Is Docker MCP Server free?
Yes, Docker MCP Server has a free option. The MCP server is free and open-source. Docker Desktop: Free for personal and small business. Pro: $5/mo. Team: $9/user/mo. Business: $24/user/mo.
How do I install Docker MCP Server?
Install Docker MCP Server with pip: uvx mcp-server-docker
What does Docker MCP Server integrate with?
Docker MCP Server integrates with Claude Desktop, Cursor, VS Code, Windsurf, Cline.

Related Guides

Best MCP Servers for DevOps: Kubernetes, Docker, Cloud & CI/CD

7 min readGuides

Best MCP Servers for Claude Code in 2026: Complete Setup Guide

10 min readGuides

Best MCP Servers for Automation in 2026: Build AI-Powered Workflows

11 min readGuides

Best MCP Servers for Python Developers in 2026

8 min readGuides

Best MCP Servers for Kubernetes & Cloud-Native Operations in 2026

8 min readGuides

Best MCP Servers for Docker & Container Development in 2026

7 min readGuides

GitLab MCP Server: Complete Setup Guide 2026

8 min readTutorials

Best MCP Servers for Cline: Complete Setup Guide 2026

9 min readGuides

Best MCP Servers for Full-Stack Developers in 2026

10 min readGuides

MCP Server Troubleshooting Guide: Fix Common Issues & Errors 2026

10 min readGuides

Best MCP Servers for Windsurf IDE in 2026

8 min readGuides

Best MCP Servers for Go Developers in 2026

7 min readGuides

Best MCP Servers for JavaScript Developers in 2026

9 min readGuides

Best MCP Servers for Backend Development in 2026

10 min readGuides

Best MCP Servers for Rust Developers in 2026

9 min readGuides

Best MCP Servers for System Administrators in 2026

9 min readGuides

Best MCP Servers for Cloud Engineers in 2026

9 min readGuides

Best MCP Servers for Docker and Kubernetes in 2026

8 min readGuides

Best MCP Servers for Backend Developers in 2026

9 min readGuides

Best MCP Servers for Ruby Developers in 2026

7 min readGuides

Best MCP Servers for Java Developers in 2026

8 min readGuides

Best MCP Servers for Security Engineers in 2026

8 min readGuides

Best MCP Servers for Embedded Systems Developers in 2026

7 min readGuides

Best MCP Servers for API Testing and QA Engineers in 2026

7 min readGuides

Best MCP Servers for Rust Developers in 2026

8 min readGuides

Best MCP Servers for Go Developers in 2026

8 min readGuides

Best MCP Servers for GitHub Copilot: Supercharge VS Code Agent Mode

8 min readGuides

Best MCP Servers for Go Developers in 2026

7 min readGuides

Best MCP Servers for ML Engineers in 2026

8 min readGuides

Best MCP Servers for PHP Developers in 2026

7 min readGuides

Best MCP Servers for DevOps Engineers in 2026

8 min readGuides

Best MCP Servers for Kubernetes Developers in 2026

7 min readGuides

Best MCP Servers for Python Developers in 2026

8 min readGuides

Best MCP Servers for Windsurf in 2026

6 min readTools

Best MCP Servers for Go Developers in 2026

7 min readGuides

Best MCP Servers for Java Developers in 2026

7 min readGuides

Best MCP Servers for Kotlin Developers in 2026

7 min readGuides

Best MCP Servers for Elixir Developers in 2026

7 min readGuides

Best MCP Servers for Scala Developers in 2026

7 min readGuides

Best MCP Servers for FastAPI Developers in 2026

7 min readGuides

Best MCP Servers for Spring Boot Developers in 2026

7 min readGuides

Best MCP Servers for Ruby on Rails Developers in 2026

7 min readGuides

Best MCP Servers for Nuxt Developers in 2026

7 min readGuides

Best MCP Servers for Laravel Developers in 2026

7 min readGuides

Best MCP Servers for NestJS Developers in 2026

7 min readGuides

Best MCP Servers for Flask Developers in 2026

7 min readGuides

Best MCP Servers for AWS Developers in 2026

8 min readGuides

Deploying MCP Servers to Google Cloud Run: A Complete Guide

10 min readDeployment

Deploying MCP Servers to Kubernetes — Production-Grade Container Orchestration

12 min readDeployment

MCP Integration Guide: Continue.dev — Add MCP Tools to Your AI Coding Assistant

10 min readIntegrations

Repo Health

Actively maintained

Local/stdio install — runs on your machine, so there is no remote endpoint to verify live. Trust signal below is from the source repo.

Last commit
1mo ago
Install
binary

Quick Info

Install Type
pip
Author
ckreiling
Categories
2
Integrations
5

Related Servers

💻

Git

Tools to read, search, and manipulate Git repositories. Full Git operations support.

Local
💻

GitHub MCP Server

authenticated access to the whole GitHub platform — repositories, files, branches, issues, pull requests, Actions runs, security alerts, discussions and notifications — from Claude, Cursor, VS Code, Copilot CLI and any other MCP host. There is no npm package for this server, and that trips up most people who try to install it: `@github/mcp-server` is not published to the npm registry, so any `npx` line you find for it will fail. GitHub ships it three other ways. The easiest is the hosted remote server at https://api.githubcopilot.com/mcp/, which needs no install at all — point an HTTP-transport MCP client at that URL and log in with OAuth (VS Code 1.101+, Claude Desktop, Claude Code, Cursor and Windsurf all support this). The second is the official Docker image ghcr.io/github/github-mcp-server, which is what the copy-paste command on this page runs; on github.com it now performs a browser-based OAuth login on first use and keeps the token in memory only, which is why the published Docker configs map a fixed loopback callback port (-p 127.0.0.1:8085:8085 with GITHUB_OAUTH_CALLBACK_PORT=8085) so the container can receive the callback. Prefer a token? Set GITHUB_PERSONAL_ACCESS_TOKEN instead — it takes precedence over OAuth, and the minimum useful scopes are repo, read:org and read:packages. The third is the native Go binary from the repository's releases, which needs no fixed port for the OAuth flow. GitHub Enterprise Server has no hosted option: use the local server with --gh-host or GITHUB_HOST set to your instance (include the https:// scheme — it defaults to http://, which GHES rejects). Toolsets can be narrowed with GITHUB_TOOLSETS, and an insiders channel is available at /mcp/insiders or via the X-MCP-Insiders header.

Auth required📘
💻

GitLab MCP Server

a first-party MCP endpoint built into the GitLab instance itself — there is no package to install, because the server ships inside GitLab and answers at https://<your-gitlab>/api/v4/mcp (gitlab.com exposes the same path, so https://gitlab.com/api/v4/mcp works for SaaS projects). It landed as an experiment in GitLab 18.3 and moved to beta in 18.6. Authentication is the part that makes it different from every community GitLab server: it uses OAuth 2.0 Dynamic Client Registration, so the first time a client connects it registers itself as an OAuth application on your instance and is issued an access token — no personal access token pasted into a config file. Administrators who do not want one OAuth application per tool can pre-create a shared application instead. Three prerequisites are what actually block most first connections: GitLab Duo must be set to Always on or On by default, beta and experimental features must be enabled, and MCP access must be switched on at the group or instance level. The tool surface covers issues and merge requests (create_issue, get_issue, create_merge_request, get_merge_request, list_merge_requests, get_merge_request_commits, get_merge_request_diffs, get_merge_request_pipelines, create_merge_request_note, get_merge_request_notes), CI/CD (manage_pipeline for list/create/delete/retry/cancel, get_pipeline_jobs, get_job_log), work items (create_workitem_note, get_workitem_notes, link_work_items, get_saved_view_work_items), search (search across the instance, search_labels, semantic_code_search), list_wiki_pages, and attach_scan_profile. HTTP is the recommended transport — claude mcp add --transport http GitLab https://gitlab.com/api/v4/mcp — and clients that only speak stdio can wrap it with npx mcp-remote <url> on Node 20+. Send the X-Gitlab-Mcp-Server-Tool-Name-Prefix header if generic names like search collide with another connected server. If your instance predates 18.3 or Duo is not available to you, the community alternative most teams land on is zereight/gitlab-mcp (1,889 stars as of 2026-08-16, npm @zereight/mcp-gitlab), which authenticates with a plain personal access token and ships 217 tools — including merge_merge_request, approve_merge_request, execute_graphql and full CI/CD variable management, none of which the built-in server exposes — behind GITLAB_PERMISSION_MODE=readonly/modify and GITLAB_TOOLSETS/GITLAB_TOOLS filtering. One further change worth noting: MCP server access moved from GitLab Premium to GitLab Free in 19.2 and became a setting of its own.

Auth required📘
☁️

AWS MCP Servers

AWS Labs maintains a monorepo of specialized, open-source MCP servers that bring AWS best practices directly into AI-assisted development workflows, spanning infrastructure, data, AI/ML, cost management, and healthcare/life-sciences domains. Rather than one monolithic server, the project ships dozens of focused servers you install individually depending on the task: the AWS Documentation MCP Server for real-time official docs and API references, dedicated servers for Terraform/CDK/CloudFormation infrastructure-as-code, container and serverless platforms (ECS, EKS, Lambda), SQL/NoSQL databases (DynamoDB, RDS, Aurora), search and analytics (OpenSearch), messaging (SQS/SNS), and cost/billing analysis. Most servers install via uvx with a package name like awslabs.aws-documentation-mcp-server, run locally over stdio, and use standard AWS credential chains (IAM roles, profiles, or access keys) rather than exposing raw account credentials to the model. AWS also now offers a managed, remote "AWS MCP Server" (in preview) that combines full API coverage with pre-built agent SOPs, syntactically validated API calls, and complete CloudTrail audit logging for teams that want centralized governance instead of running servers locally. The Getting Started with Kiro/Cursor/VS Code/Claude Code sections in the repo provide one-click install configs for each server, making it straightforward to wire up only the AWS services a given project actually touches.

Local
☁️

Cloudflare MCP Server

Cloudflare ships two different things under this name. The mcp-server-cloudflare repo provides 16 remote, domain-specific MCP servers rather than one monolith — Documentation, Workers Bindings (storage/AI/compute primitives), Workers Builds, Observability (logs/analytics), Container sandboxes, Browser Rendering (fetch pages, convert to markdown, screenshots), Logpush health, AI Gateway (prompt/response search), AI Search, Audit Logs, DNS Analytics, Digital Experience Monitoring, Cloudflare One CASB, Radar, GraphQL analytics and the Agents SDK docs server, each on its own `*.mcp.cloudflare.com/mcp` hostname. Separately, the Cloudflare API MCP server at mcp.cloudflare.com/mcp (repo: cloudflare/mcp) exposes the whole 2,500+ endpoint Cloudflare API through just two tools, `search` and `execute`, using the Code Mode pattern — model-written JavaScript runs in an isolated Dynamic Worker, costing ~1,000 tokens of context against the ~1.17M an equivalent native-tool server would need. Pick a domain server when you want a readable, curated tool list for one product area; pick the API server for breadth or for endpoints nobody wrote a tool for. All endpoints are Streamable HTTP on `/mcp` and support the MCP 2026-07-28 spec; the historical `/sse` URLs remain as aliases for the same Streamable HTTP handler but no longer serve the deprecated HTTP+SSE transport, so clients pinned to SSE must switch. Auth is OAuth on connect, or a scoped Cloudflare API token as a bearer header for CI. Clients without native remote-MCP support bridge via `npx mcp-remote https://<subdomain>.mcp.cloudflare.com/mcp`.

Live📘

Sponsored

Better Stack

Free Plan

Get alerted when your APIs, browser tests, payment pipelines, or MCP server dependencies go down. Used by 100K+ developers.

Start monitoring free →