A comprehensive Model Context Protocol (MCP) server that empowers AI assistants like Cursor, Claude Desktop, and other MCP-compatible clients to seamlessly manage Docker containers, images, networks, volumes, and registries through natural language interactions.
Why Docker MCP Server?
Zero Configuration - Works out of the box with npx, no installation needed
Safety First - Two-step confirmation for destructive operations
Cross-Platform - Works on Windows, Linux, and macOS with automatic Docker socket detection
Comprehensive - Full Docker API coverage including Compose, registries, and system operations
AI-Native - Designed specifically for AI assistants with clear, structured responses
Features
Container Management
Full lifecycle control: Create, start, stop, restart, kill, and remove containers
Monitoring: Real-time logs, statistics, and container inspection
Advanced operations: Pause/unpause, exec commands, and resource management
Image Management
Registry operations: Pull, push, tag, and remove images
Build support: Build images from Dockerfiles with full configuration
Inspection: Detailed image history, layers, and metadata
Network Management
Network operations: Create, remove, and inspect Docker networks
Container connectivity: Connect/disconnect containers from networks
Network discovery: List and filter networks with advanced options
Volume Management
Volume operations: Create, remove, and inspect volumes
Data persistence: Manage persistent storage for containers
Volume inspection: Detailed volume information and mount points
System Operations
System information: Docker daemon info, version, and capabilities
Resource cleanup: Prune unused images, containers, volumes, and networks
Event monitoring: Real-time Docker event stream
Container Execution
Command execution: Run commands in running containers
Interactive sessions: Create and manage exec instances
Output streaming: Real-time command output and logs
Registry Integration
Docker Hub: Search repositories, list tags, authenticate, pull/push images
GitHub Container Registry (GHCR): Full authentication and image management
Multi-registry support: Seamlessly work with multiple registries
This will show an interactive confirmation dialog in the client (if supported). The client will display a form asking for confirmation, and the operation proceeds only if the user accepts.
Note: Elicitation API support depends on the MCP client. If the client doesn't support it, the server automatically falls back to the confirm parameter method.
Note: The server communicates via stdio, so it will wait for JSON-RPC requests. Press Ctrl+C to exit.
Manual Testing Steps
Start the server:
npm run build
npm start
In another terminal, test with curl (if using HTTP transport) or use an MCP client
Verify Docker operations work:
List containers: Use docker_list_containers tool
Check system info: Use docker_system_info tool
Integration Testing
For full integration testing, you'll need an MCP client. The server communicates via stdio (standard input/output), so it's designed to work with MCP-compatible clients like:
Cursor IDE
Claude Desktop
Custom MCP clients
Debugging
Enable verbose logging by checking stderr output. The server writes errors and status messages to stderr:
# Run and capture stderr
node dist/index.js 2> debug.log
Requirements
Node.js 18.0.0 or higher
Docker daemon running and accessible
Supported Platforms:
Linux (x64, ARM64)
macOS (Intel, Apple Silicon)
Windows (x64, ARM64)
For remote Docker: Proper network access and TLS certificates (if using TLS)
Platform-Specific Notes
Linux: Requires Docker daemon with Unix socket at /var/run/docker.sock
macOS: Works with Docker Desktop. Automatically detects socket location.
Windows: Works with Docker Desktop. Uses named pipe //./pipe/docker_engine
Quick Start (Local Development)
# Clone and setup
git clone <repository-url>
cd docker-mcp
npm install
# Build
npm run build
# Test
./test-server.sh
# Run
npm start
# or for development
npm run dev
License
MIT
Testing with MCP Clients
Testing with Cursor (Local Development)
If you're developing locally and want to test with Cursor:
Build the project:
npm run build
Add to Cursor MCP configuration (usually in .cursor/mcp.json or similar):
You can test the server using MCP Inspector or any MCP client:
# Build first
npm run build
# The server communicates via stdio, so you can pipe commands to itecho'{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.