Docker MCP Server
Enables executing code in isolated Docker containers with strict resource limits, session management, container reuse, and automatic dependency installation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Docker MCP ServerRun a Python script that calculates Fibonacci sequence in a Docker container."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Docker MCP Server
A Model Context Protocol (MCP) server that enables LLMs to safely execute code in isolated Docker containers with strict resource limits and security controls.
Features
š Secure Isolation: Containers run with strict resource limits (memory, CPU, PIDs)
š·ļø Session Management: Group containers by session with persistent workspaces
ā»ļø Container Reuse: Optimize performance by reusing existing containers
š¦ Smart Dependencies: Auto-detect and install packages (pip, npm, apt, apk)
š Streaming Output: Real-time output for long-running processes
š¾ Persistent Workspaces: Session-based volumes maintain state across executions
Related MCP server: Advanced MCP Server
Installation
# Clone the repository
git clone https://github.com/cevatkerim/docker-mcp.git
cd docker-mcp
# Install in development mode
pip install -e .
# Install development dependencies
pip install -r requirements-dev.txtPrerequisites
Python 3.10+
Docker Engine running locally
MCP-compatible client (e.g., Claude Desktop)
Quick Start
1. Start the MCP Server
python -m docker_mcp2. Configure Your MCP Client
Add to your MCP client configuration:
{
"mcpServers": {
"docker": {
"command": "python",
"args": ["-m", "docker_mcp"]
}
}
}Available Tools
1. check_engine
Check Docker engine availability and version.
result = check_engine()
# Returns: Docker version and status2. list_containers
List Docker containers with optional filtering.
result = list_containers(
show_all=True, # Show all containers, not just running
session_id="my-session" # Filter by session
)3. create_container
Create and start a new container with resource limits.
result = create_container(
image="python:3.11-slim",
name="my-container",
session_id="my-session",
network_enabled=False, # Network isolation by default
reuse_existing=True, # Reuse if exists
environment={"KEY": "value"}
)4. execute_code
Execute commands in a container.
result = execute_code(
container_id="my-container",
command="echo 'Hello, World!'",
timeout=30,
stream=True, # Stream output in real-time
working_dir="/workspace"
)5. execute_python_script
Execute Python scripts with automatic dependency management.
result = execute_python_script(
container_id="my-container",
script="import numpy; print(numpy.__version__)",
packages=["numpy"], # Auto-install if needed
timeout=60
)6. add_dependencies
Install packages in a running container.
result = add_dependencies(
container_id="my-container",
packages=["requests", "pandas"],
package_manager="pip" # Auto-detected if not specified
)7. cleanup_container
Stop and remove containers with optional volume cleanup.
# Remove specific container
result = cleanup_container(container_id="my-container")
# Remove all containers for a session
result = cleanup_container(session_id="my-session", remove_volumes=True)
# Remove all MCP-managed containers
result = cleanup_container(cleanup_all=True)Security Features
Resource Limits
Memory: 1GB default (configurable)
CPU: 1.0 cores default (configurable)
Process IDs: 512 max (configurable)
Network: Isolated by default, opt-in for network access
Container Labels
All containers are labeled with mcp-managed=true for easy identification and cleanup.
Workspace Isolation
Each container gets a /workspace directory backed by a named volume, preventing host filesystem access.
Configuration
Configure via environment variables:
export DOCKER_MCP_MEMORY_LIMIT=2147483648 # 2GB in bytes
export DOCKER_MCP_CPU_LIMIT=2.0 # 2 CPU cores
export DOCKER_MCP_PIDS_LIMIT=1024 # Max processes
export DOCKER_MCP_TIMEOUT=60 # Default timeout
export DOCKER_MCP_DEBUG=true # Enable debug loggingExamples
Example 1: Python Data Analysis
# Create a container for data analysis
container = create_container(
image="python:3.11-slim",
session_id="data-analysis"
)
# Install required packages
add_dependencies(
container_id=container['container_id'],
packages=["pandas", "matplotlib", "seaborn"]
)
# Execute analysis script
script = """
import pandas as pd
import matplotlib.pyplot as plt
# Create sample data
df = pd.DataFrame({
'x': range(10),
'y': [i**2 for i in range(10)]
})
# Save plot
df.plot(x='x', y='y')
plt.savefig('/workspace/plot.png')
print("Plot saved to /workspace/plot.png")
print(df.describe())
"""
execute_python_script(
container_id=container['container_id'],
script=script
)Example 2: Node.js Development
# Create Node.js container
container = create_container(
image="node:18-alpine",
session_id="nodejs-dev",
network_enabled=True # Need network for npm
)
# Install packages
add_dependencies(
container_id=container['container_id'],
packages=["express", "axios"],
package_manager="npm"
)
# Run Node.js code
execute_code(
container_id=container['container_id'],
command="node -e \"console.log('Node version:', process.version)\""
)Example 3: Multi-Language Project
# Create container with Python and Node.js
container = create_container(
image="nikolaik/python-nodejs:python3.11-nodejs18",
session_id="multi-lang"
)
# Install Python packages
add_dependencies(
container_id=container['container_id'],
packages=["fastapi", "uvicorn"],
package_manager="pip"
)
# Install Node packages
add_dependencies(
container_id=container['container_id'],
packages=["webpack", "babel-core"],
package_manager="npm"
)Development
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=term
# Run specific test file
pytest tests/test_docker_client.py -vProject Structure
docker-mcp/
āāā src/
ā āāā docker_mcp/
ā āāā __init__.py
ā āāā server.py # MCP server implementation
ā āāā container_ops.py # Tool implementations
ā āāā docker_client.py # Docker SDK wrapper
ā āāā config.py # Configuration
ā āāā schemas.py # Data models
āāā tests/
ā āāā test_docker_client.py
ā āāā test_tools_comprehensive.py
ā āāā ...
āāā pyproject.toml
āāā requirements.txt
āāā README.mdTroubleshooting
Docker Not Available
Error: Cannot connect to Docker daemonSolution: Ensure Docker Desktop is running and the Docker socket is accessible.
Permission Denied
Error: Permission denied while trying to connect to Docker daemonSolution: Add your user to the docker group or run with appropriate permissions.
Container Creation Failed
Error: Image not foundSolution: The image will be automatically pulled. Ensure you have internet connectivity.
Contributing
Fork the repository
Create a feature branch
Write tests for new functionality
Implement the feature
Ensure all tests pass
Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions, please open an issue on GitHub.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcp-serverOAuthai.cdbx
Build Apps and run code in 30 languages ā sandboxed, with persistent sessions for agent loops.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Run Python code in a secure sandbox without local setup. Declare inline dependencies and execute sā¦
Execute code in 8 languages (Python, JS, TS, Go, Java, C++, C, Bash) in gVisor sandboxes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn interactive Python code execution environment that allows users and LLMs to safely execute Python code and install packages in isolated Docker containers.40Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides AI coding agents with a secure, sandboxed environment for executing coding tasks including file operations, command execution, and testing. Features session management, policy enforcement, and Docker-based sandboxing for safe code execution and development workflows.-
- AlicenseNot gradedqualityAmaintenanceEnables LLMs to execute Python code securely in a sandboxed environment. Supports configurable restrictions like no network access and returns results including files.MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to securely execute Python and C++ code snippets inside disposable, isolated Docker containers and receive structured results.31MIT