docker-mcp
A read-only MCP server that exposes your Docker daemon, allowing AI assistants to list containers, inspect their details, and fetch logs without write access.
README
docker-mcp
A read-only MCP server for Docker. Exposes your Docker daemon over the Model Context Protocol so AI assistants can inspect containers and logs without any write access.
Built with FastAPI and FastMCP.
Tools
| Tool | Description |
|---|---|
list_containers |
List running containers (pass all=true to include stopped) |
get_container |
Full details for a container — ports, networks, env vars, mounts, resource limits |
get_logs |
Fetch container logs with filtering by tail/head, time range, and regex pattern |
get_logs parameters
| Parameter | Default | Description |
|---|---|---|
container_id |
— | Container ID or name |
tail |
100 |
Last N lines. Mutually exclusive with head. |
head |
— | First N lines. Mutually exclusive with tail. |
since |
— | UTC datetime — only return logs after this time |
until |
— | UTC datetime — only return logs before this time |
last_minutes |
— | Convenience shorthand: logs from the last N minutes |
pattern |
— | Regex (or substring) filter applied to log lines |
timestamps |
true |
Prefix each line with an RFC3339 timestamp |
Quick start
Docker run
docker run -d \
--name docker-mcp \
-p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e MCP_API_KEY=mysecret \
codeberg.org/jhot/docker-mcp:latest
Docker Compose
services:
docker-mcp:
image: codeberg.org/jhot/docker-mcp:latest
ports:
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
MCP_API_KEY: ${MCP_API_KEY:-}
restart: unless-stopped
MCP_API_KEY=mysecret docker compose up -d
Configuration
| Variable | Default | Description |
|---|---|---|
MCP_API_KEY |
unset | Bearer token for /mcp. Unset = no auth. |
DOCKER_HOST |
unset | Docker daemon socket. Unset = /var/run/docker.sock. |
HOST |
0.0.0.0 |
Uvicorn bind address |
PORT |
8000 |
Host port (container always listens on 8000) |
LOG_LEVEL |
info |
Uvicorn log level |
MCP endpoint
The MCP Streamable HTTP endpoint is at http://localhost:8000/mcp.
Configure your client (e.g. Claude Desktop, Cursor) to connect to it:
{
"mcpServers": {
"docker": {
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer mysecret"
}
}
}
}
Omit headers if MCP_API_KEY is not set.
Security
The Docker socket grants full control of the Docker daemon. Treat access to this server the same as access to the socket itself:
- Set
MCP_API_KEYfor any network-accessible deployment. - Use a firewall or reverse proxy to restrict which clients can reach port 8000.
- The
:rosocket mount prevents replacing the socket file but does not restrict Docker API calls —MCP_API_KEYis the primary access control.
Remote Docker
To connect to a remote Docker daemon instead of the local socket, remove the volumes block and set DOCKER_HOST:
docker run -d \
--name docker-mcp \
-p 8000:8000 \
-e DOCKER_HOST=tcp://192.168.1.10:2376 \
-e MCP_API_KEY=mysecret \
codeberg.org/jhot/docker-mcp:latest
Routes
| Path | Auth | Description |
|---|---|---|
/ |
public | Landing page |
/health |
public | {"status": "ok"} |
/api/tools |
public | Tool metadata list |
/mcp |
gated | FastMCP Streamable HTTP endpoint |
Development
Requirements: mise, Python 3.12, Docker
mise exec -- task install # uv sync
mise exec -- task fmt # ruff format
mise exec -- task lint # ruff check
mise exec -- task test # unit tests (no Docker required)
mise exec -- task test-integration # integration tests (requires live Docker)
mise exec -- task run # dev server at http://localhost:8000
mise exec -- task build # docker build
mise exec -- task up # docker compose up --build
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.