README
🚀 Docker MCP 服务
Docker MCP 服务是一款强大的模型上下文协议服务器,它可在 Docker 容器中执行代码,并将执行结果返回给 Claude 等语言模型(LLM)。该服务具备隔离的代码执行、多语言支持以及与多种包管理工具集成等多种功能,为用户提供高效、稳定的代码执行环境。
✨ 主要特性
- 隔离的代码执行:借助 Docker 容器,保障代码在独立环境中运行。
- 多语言支持:支持 Python、Node.js 等多种编程语言。
- 复杂脚本支持:能够处理复杂的脚本和任务。
- 包管理:内置对 pip、npm、apt - get 和 apk 的支持,可自动检测并使用合适的包管理工具。
- 容器管理:提供创建、监控和清理 Docker 容器的功能。
- 健壮的错误处理:具备超时检测和恢复机制,确保任务可靠执行。
- 彩色输出:通过终端颜色编码提升用户体验。
📦 安装指南
安装需求
- Python 版本要求:必须安装 Python 3.6 或更高版本。
- Docker 安装:请确保 Docker 已正确安装并运行(可通过
docker --version命令验证)。 - fastmcp 库:需要安装 fastmcp 库以支持与 LLM 的集成。
安装步骤
- 克隆代码仓库:
git clone https://github.com/your - repository.git - 创建虚拟环境并激活:
python -m venv venv source venv/bin/activate # 在 Linux/Mac 上 venv\Scripts\activate # 在 Windows 上 - 安装依赖项:
pip install -r requirements.txt
💻 使用示例
运行服务器
启动 MCP 服务:
python src/docker_mcp.py
访问 http://localhost:8090 打开 MCP 绑定的控制台。
工具集
列出容器
查看所有运行中的 Docker 容器:
list_containers [--all]
--all:显示所有容器,包括已停止的容器。
创建新容器
创建并启动一个新的 Docker 容器:
create_container [-i IMAGE] [-- privileged|nonPrivileged] [COMMAND]
IMAGE:指定镜像,默认为python:3.8 - slim。privileged或nonPrivileged:设置容器的权限模式。COMMAND:指定要执行的命令。
执行命令
在现有容器中执行命令:
execute_command [-c CONTAINER_ID] [-t COMMAND]
CONTAINER_ID:指定目标容器的 ID。COMMAND:要执行的具体命令。
删除容器
删除指定的 Docker 容器:
remove_container [-c CONTAINER_ID] [--volumes]
CONTAINER_ID:指定要删除的容器 ID。--volumes:同时删除与容器关联的卷。
基本工作流程
# 列出所有容器
list_containers
# 创建一个 Python 容器并执行命令
create_container -i python:3.8 - slim -c "echo 'Hello, Docker!'" --nonPrivileged
# 执行完成后,删除容器
remove_container [-c CONTAINER_ID]
Python 数据分析示例
# 创建一个 Node.js 容器并安装依赖项
create_container -i node:16 --privileged npm install express axios
# 执行脚本
execute_command [-c CONTAINER_ID] node script.js
📚 详细文档
包管理器支持
服务自动检测并使用适合的包管理工具:
- Python:使用 pip。
- Node.js:使用 npm。
- Debian/Ubuntu:使用 apt - get。
- Alpine:使用 apk。
对于无法从镜像名称推断包管理器的情况,系统会尝试检测可用的包管理工具。
与 LLM 的集成
通过 fastmcp 库支持与 Claude 等语言模型的集成,实现更高级的功能扩展。
⚠️ 注意事项
⚠️ 重要提示
- 运行 Docker 命令可能需要管理员权限。
- 请注意容器对 CPU 和内存的占用,避免过度使用系统资源。
- 确保处理所有可能的异常情况,如网络中断或镜像未找到。
🤝 贡献指南
欢迎参与项目开发!请参考项目的贡献指南以获取更多信息。
Scan to join WeChat group