关于 Docker MCP Server
Docker MCP Server 通过隔离的 Docker 容器运行代码,面向需要让 LLM 执行命令或脚本的场景。它支持多种语言、依赖安装以及容器管理。
主要功能
- 01在 Docker 容器中隔离执行代码
- 02支持使用 Docker 镜像运行多种语言
- 03安装及追加软件包依赖
- 04执行命令和多行 Python 脚本
- 05列出、创建和清理容器
适用场景
- 01在隔离环境中运行代码片段
- 02为 Python 或 Node.js 脚本安装依赖
- 03检查并清理运行中的 Docker 容器
MCP 相关
该 MCP 服务向支持 MCP 的 LLM 暴露容器管理、依赖安装和代码执行工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Docker MCP 服务
一个功能强大的 Model Context Protocol(MCP)服务,可在隔离的 Docker 容器中执行代码,并将结果返回给 Claude 等大模型。
功能特性
- 隔离的代码执行:在与主系统隔离的 Docker 容器中运行代码
- 多语言支持:使用 Docker 镜像执行任意语言的代码
- 复杂脚本支持:运行简单命令和完整的多行脚本
- 包管理:使用 pip、npm、apt-get 或 apk 安装依赖项
- 容器管理:轻松创建、列出和清理 Docker 容器
- 健壮的错误处理:提供灵活的超时管理和回退机制
- 彩色输出:提供清晰、带颜色的控制台反馈
要求
- Python 3.9+
- 已安装并运行 Docker
- fastmcp 库
安装
-
克隆此仓库:
git clone https://github.com/zaycruz/docker_mcp.git cd docker_mcp -
创建虚拟环境:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
安装所需的软件包:
pip install -r requirements.txt
用法
运行 MCP Inspector
测试并探索服务的功能:
python run_server.py
MCP Inspector 界面将在浏览器中打开,地址为 http://localhost:5173。
可用工具
Docker MCP 服务提供以下工具:
1. 列出容器
列出所有 Docker 容器及其详细信息:
- 参数:
show_all: (可选)是否显示所有容器,包括已停止的容器(默认值:True)
2. 创建容器
创建并启动 Docker 容器,可选择安装依赖项:
- 参数:
image:要使用的 Docker 镜像(例如,“python:3.9-slim”、“node:16”)container_name:容器的唯一名称dependencies: (可选)要安装的软件包列表,以空格分隔(例如,“numpy pandas”、“express lodash”)
3. 添加依赖项
在现有 Docker 容器中安装其他软件包:
- 参数:
container_name:目标容器的名称dependencies:要安装的软件包列表,以空格分隔
4. 执行代码
在运行中的 Docker 容器内执行命令:
- 参数:
container_name:目标容器的名称command:要在容器内执行的命令
5. 执行 Python 脚本
在运行中的 Docker 容器内执行多行 Python 脚本:
- 参数:
container_name:目标容器的名称script_content:完整的 Python 脚本内容script_args:传递给脚本的可选参数
6. 清理容器
停止并移除 Docker 容器:
- 参数:
container_name:要清理的容器名称
示例
基本工作流示例
# 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 数据分析示例
# 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 示例
# 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")
包管理器支持
Docker MCP 服务会自动检测并使用合适的包管理器:
- Python 容器:使用
pip - Node.js 容器:使用
npm - Debian/Ubuntu 容器:使用
apt-get - Alpine 容器:使用
apk
对于无法从镜像名称明显判断包管理器的容器,服务会尝试检测可用的包管理器。
与 Claude 和其他大模型集成
此 MCP 服务可以与支持 Model Context Protocol 的 Claude 和其他大模型集成。使用 fastmcp install 命令将其注册到 Claude:
fastmcp install src/docker_mcp.py
故障排除
- 端口已被占用:如果出现“Address already in use”错误,请确保没有其他 MCP Inspector 实例正在运行。
- Docker 连接问题:使用
docker --version确认 Docker 正在运行。 - 容器超时:对于未能在预期时间内响应的容器,服务包含回退机制。
- 软件包安装失败:检查软件包名称是否适用于指定的包管理器。
- 未找到容器:如果 list_containers 没有显示结果,Docker 可能尚未创建任何容器。
安全注意事项
此服务会在 Docker 容器中执行代码,从而与主机系统隔离。不过,请谨慎操作:
- 未采取额外安全措施时,不要将此服务公开
- 将主机卷挂载到容器中时,请务必小心
- 请考虑为容器设置资源限制,以防止 DoS 攻击
许可证
贡献
欢迎贡献!请随时提交 Pull Request。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。