docker-mcp
Enables interaction with Docker containers and images via tools and resources.
README
Docker MCP Server
This is a Model Context Protocol (MCP) server that provides tools and resources for interacting with Docker containers and images. It uses the stream HTTP transport method for communication and the Python Docker SDK (docker-py) for Docker operations.
Features
- List Docker containers and images
- Run, stop, and remove containers
- View container logs
- Pull Docker images
- Inspect container details
- Access Docker information as resources
Prerequisites
- Docker
- Docker Compose (optional, for easier deployment)
- uv (for local development)
Getting Started
Running with Docker Compose
- Clone this repository
- Build and start the server:
docker-compose up -d
Running with Docker directly
- Build the Docker image:
docker build -t mcp-docker-server .
- Run the container:
# Run server with SSE transport (no authentication)
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 --name mcp-docker-server mcp-docker-server
# Run server with SSE transport and token authentication
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 -e MCP_AUTH_TOKEN=your_secret_token --name mcp-docker-server mcp-docker-server
When the MCP_PORT environment variable is set, the server will use the SSE transport instead of stdio. Authentication is only applicable when using SSE transport. If the MCP_AUTH_TOKEN environment variable is set, the server will enable token authentication and configure the SSE endpoint to use the format /sse/{token} where {token} must match the value set in MCP_AUTH_TOKEN. If the token doesn't match or is not provided, the connection will be rejected. If no token is set, the server uses the standard /sse endpoint without authentication.
Running locally (development)
- Install uv (if not already installed):
curl -sSf https://astral.sh/uv/install.sh | sh
- Install dependencies using uv:
uv sync
- Run the server:
# Run with stdio transport (default)
uv run server.py
# Run with SSE transport on port 8000
MCP_PORT=8000 uv run server.py
# Run with SSE transport and token authentication
MCP_PORT=8000 MCP_AUTH_TOKEN=your_secret_token uv run server.py
Configuration
The server can be configured using environment variables:
MCP_PORT: When set, enables SSE transport mode and specifies the port to listen on (default:8000). If not set, the server will use stdio transport.MCP_AUTH_TOKEN: Secret token for authentication (only applicable when using SSE transport). When set, the SSE endpoint will be/sse/{token}instead of/sseMCP_HOSTNAME: Hostname to use for Docker containers (default:localhost). This can be a domain name or IP address that will be used to access Docker containers after they are created.MCP_AVAILABLE_PORTS: Comma-separated list of ports or port ranges that are available for Docker containers to bind to (e.g.,8000,8080-8090,9000). When specified, the server will validate that requested host ports are in this list.
Using with MCP clients
Should build the docker image first.
{
"mcpServers": {
"docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/var/run/docker.sock:/var/run/docker.sock",
"mcp-docker-server"
]
}
}
}
Available Tools
docker_ps: List running containersdocker_images: List available Docker imagesdocker_inspect: Get detailed information about a containerdocker_run: Run a Docker containerdocker_stop: Stop a running containerdocker_rm: Remove a containerdocker_logs: Fetch container logsdocker_pull: Pull a Docker image
Available Resources
docker://containers: Information about all containersdocker://images: Information about all imagesdocker://container/{container_id}: Detailed information about a specific containerdocker://config/hostname: Get the configured hostname for Docker containersdocker://config/available_ports: Get the list of available ports for Docker containers
TODO
- Add functionality to query documentation for a specific Docker image
License
MIT
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.