About Docker MCP Server
Docker MCP Server runs code in isolated Docker containers for workflows that let LLMs execute commands and scripts. It combines multi-language execution with dependency installation and container management.
Key features
- 01Run code in isolated Docker containers
- 02Use Docker images for multiple languages
- 03Install and add package dependencies
- 04Execute commands and multiline Python scripts
- 05List, create, and clean up containers
Use cases
- 01Run code snippets in an isolated environment
- 02Install dependencies for Python or Node.js scripts
- 03Inspect and clean up Docker containers
MCP support
The MCP server exposes container management, dependency installation, and code execution tools to MCP-compatible LLMs.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEDocker MCP Server
A powerful Model Context Protocol (MCP) server that executes code in isolated Docker containers and returns the results to language models like Claude.
Features
- Isolated Code Execution: Run code in Docker containers separated from your main system
- Multi-language Support: Execute code in any language with a Docker image
- Complex Script Support: Run both simple commands and complete multi-line scripts
- Package Management: Install dependencies using pip, npm, apt-get, or apk
- Container Management: Create, list, and clean up Docker containers easily
- Robust Error Handling: Graceful timeout management and fallback mechanisms
- Colorful Output: Clear, color-coded console feedback
Requirements
- Python 3.9+
- Docker installed and running
- fastmcp library
Installation
-
Clone this repository:
git clone https://github.com/zaycruz/docker_mcp.git cd docker_mcp -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install required packages:
pip install -r requirements.txt
Usage
Running the MCP Inspector
To test and explore the server's functionality:
python run_server.py
The MCP Inspector interface will open in your browser at http://localhost:5173.
Available Tools
The Docker MCP server provides the following tools:
1. List Containers
Lists all Docker containers and their details:
- Parameters:
show_all: (Optional) Whether to show all containers including stopped ones (default: True)
2. Create Container
Creates and starts a Docker container with optional dependencies:
- Parameters:
image: The Docker image to use (e.g., "python:3.9-slim", "node:16")container_name: A unique name for the containerdependencies: (Optional) Space-separated list of packages to install (e.g., "numpy pandas", "express lodash")
3. Add Dependencies
Installs additional packages in an existing Docker container:
- Parameters:
container_name: The name of the target containerdependencies: Space-separated list of packages to install
4. Execute Code
Executes a command inside a running Docker container:
- Parameters:
container_name: The name of the target containercommand: The command to execute inside the container
5. Execute Python Script
Executes a multi-line Python script inside a running Docker container:
- Parameters:
container_name: The name of the target containerscript_content: The full Python script contentscript_args: Optional arguments to pass to the script
6. Cleanup Container
Stops and removes a Docker container:
- Parameters:
container_name: The name of the container to clean up
Examples
Basic Workflow Example
# 1. List existing containers to see what's already running
list_containers()
# 2. Create a new container
create_container(
image="python:3.9-slim",
container_name="python-example",
dependencies="numpy pandas"
)
# 3. Execute a command in the container
execute_code(
container_name="python-example",
command="python -c 'import numpy as np; print(\"NumPy version:\", np.__version__)'"
)
# 4. Add more dependencies later
add_dependencies(
container_name="python-example",
dependencies="matplotlib scikit-learn"
)
# 5. List containers again to confirm status
list_containers(show_all=False) # Only show running containers
# 6. Clean up when done
cleanup_container(container_name="python-example")
Python Data Analysis Example
# 1. Create a container with dependencies
create_container(
image="python:3.9-slim",
container_name="python-test",
dependencies="numpy pandas matplotlib"
)
# 2. Execute a Python script
script = """
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Create some data
data = pd.DataFrame({
'x': np.random.randn(100),
'y': np.random.randn(100)
})
print(f"Data shape: {data.shape}")
print(f"Data correlation: {data.corr().iloc[0,1]:.4f}")
"""
execute_python_script(container_name="python-test", script_content=script)
# 3. Add additional dependencies later if needed
add_dependencies(container_name="python-test", dependencies="scikit-learn")
# 4. Verify container is running
list_containers(show_all=False)
# 5. Clean up when done
cleanup_container(container_name="python-test")
Node.js Example
# 1. Check for existing Node.js containers
list_containers()
# 2. Create a Node.js container
create_container(
image="node:16",
container_name="node-test",
dependencies="express axios"
)
# 3. Execute a Node.js script
execute_code(
container_name="node-test",
command="node -e \"console.log('Node.js version: ' + process.version); console.log('Express installed: ' + require.resolve('express'));\""
)
# 4. Add more dependencies
add_dependencies(container_name="node-test", dependencies="lodash moment")
# 5. Clean up when done
cleanup_container(container_name="node-test")
Package Manager Support
The Docker MCP server automatically detects and uses the appropriate package manager:
- Python containers: Uses
pip - Node.js containers: Uses
npm - Debian/Ubuntu containers: Uses
apt-get - Alpine containers: Uses
apk
For containers where the package manager isn't obvious from the image name, the server attempts to detect available package managers.
Integrating with Claude and Other LLMs
This MCP server can be integrated with Claude and other LLMs that support the Model Context Protocol. Use the fastmcp install command to register it with Claude:
fastmcp install src/docker_mcp.py
Troubleshooting
- Port Already in Use: If you see "Address already in use" errors, ensure no other MCP Inspector instances are running.
- Docker Connection Issues: Verify that Docker is running with
docker --version. - Container Timeouts: The server includes fallback mechanisms for containers that don't respond within expected timeframes.
- Package Installation Failures: Check that the package name is correct for the specified package manager.
- No Containers Found: If list_containers shows no results, Docker might not have any containers created yet.
Security Considerations
This server executes code in Docker containers, which provides isolation from the host system. However, exercise caution:
- Don't expose this server publicly without additional security measures
- Be careful when mounting host volumes into containers
- Consider resource limits for containers to prevent DoS attacks
License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.