MCP Docker部署工具
MCP服务器的独立跨平台Docker部署工具
概述
这是一个独立的部署工具,可以将任何MCP服务器部署到Docker Desktop。它完全独立于任何特定的MCP项目,并使用隔离的虚拟环境来避免系统污染。
主要特点
部署(launcher.py)
✅ 平台无关 -适用于Windows、Linux和macOS ✅ MCP不可知 -通过以下方式部署任何MCP --path 参数 ✅ 远程Docker支持 -通过SSH或TCP部署到远程Docker ✅ 孤立依赖关系 -使用专用静脉 ✅ 路径灵活性 -支持绝对和相对路径 ✅ 跨平台路径 -处理Windows反斜杠、正斜杠和Unix路径 ✅ 零系统污染 -项目venv中的所有依赖项
管理(launcher_enhanced.py)-新增!
✅ 集装箱监控 -列出、启动、停止、重新启动MCP容器 ✅ 日志查看 -流式传输和搜索容器日志 ✅ 资源监控 -CPU、内存、网络使用统计数据 ✅ Docker诊断 -系统健康检查和磁盘使用情况 ✅ 远程设置 -基于SSH的远程Docker配置 ✅ 传输配置 -stdio、SSE、HTTP传输选项 ✅ 清理实用程序 -删除未使用的Docker资源
瑞士军刀版
这个工具已经发展成为一个全面的Docker管理系统:
- launcher.py -将MCP部署到Docker(本地和远程)
- launcher_enhanced.py -监控、管理和排除容器故障
看 医生管理指南.md 以获得完整的管理功能。
快速开始
安装
# Clone or copy this directory
cd G:/Coding/deploy-mcp-docker
# No installation needed! Dependencies auto-installed on first run基本用法
# Windows - Deploy dice roller MCP
python launcher.py deploy dice-roller --path G:/Coding/mcpserver/dice
# Linux/Mac - Deploy dice roller MCP
python launcher.py deploy dice-roller --path /home/user/projects/dice
# Relative path (cross-platform)
python launcher.py deploy dice-roller --path ../dice使用示例
Windows路径
# Forward slashes (recommended)
python launcher.py deploy dice-roller --path G:/Coding/mcpserver/dice
# Backslashes (must be escaped in shell)
python launcher.py deploy dice-roller --path "G:\\Coding\\mcpserver\\dice"
# Relative path
python launcher.py deploy dice-roller --path ../mcpserver/diceLinux/Mac路径
# Absolute path
python launcher.py deploy dice-roller --path /home/user/projects/dice
# Home directory expansion
python launcher.py deploy dice-roller --path ~/projects/dice
# Relative path
python launcher.py deploy dice-roller --path ../dice命令
# Deploy MCP to Docker
python launcher.py deploy dice-roller --path
# Verify Docker setup (dry run)
python launcher.py verify dice-roller --path
# Validation only
python launcher.py dryrun dice-roller --path
# Deploy with secrets
python launcher.py deploy dice-roller --path \
--api-key YOUR_KEY \
--secrets FOO=bar BAZ=qux
# Skip Docker build
python launcher.py deploy dice-roller --path --no-build运作原理
建筑
deploy-mcp-docker/ # Standalone tool directory
├── launcher.py # Main entry point
├── deploy-mcp-docker.py # Core deployment script
├── requirements.txt # Python dependencies (PyYAML)
├── docker_deploy_venv/ # Isolated venv (auto-created)
└── launcher/
├── core/
│ ├── venv_manager.py # Virtual environment management
│ └── colors.py # Terminal output utilities
└── docker/
└── docker_deploy_launcher.py # Docker deployment logic工艺流程
- launcher.py 验证MCP路径和路由到docker启动器
- docker_deploy_launcher.py 在中创建隔离的venv
deploy-mcp-docker/ - VenvManager 在venv中安装PyYAML(无系统污染)
- 部署mcp-docker.py 在venv中运行,在外部MCP目录上运行
- Docker文件已生成 在MCP目录中,不在部署mcp-docker中/
关键设计原则
- 独立工具 -生活在自己的目录中
- 外部操作 -通过以下方式参与MCP项目
--path - 孤立依赖关系 -Venv在工具目录中创建
- 无系统污染 -项目venv中的所有依赖项
- 交叉平台的 -Windows/Linux/Mac的路径规范化
平台特定注意事项
视窗
路径格式:
- 正斜杠:
G:/Coding/dice✅ 推荐 - 逃脱的反击:
"G:\\Coding\\dice"✅ 作品 - 生睫毛:
G:\Coding\dice❌ 将在shell中失败
控制台编码:
- 工具自动设置UTF-8编码
- 如果UTF-8失败,则回退到仅ASCII标头
Linux/Mac
路径格式:
- 绝对的:
/home/user/projects/dice✅ - 房屋扩建:
~/projects/dice✅ - 相对:
../dice✅
权限:
# Make launcher executable (optional)
chmod +x launcher.py
# Run directly
./launcher.py deploy dice-roller --path ~/projects/dice环境变量
| 变量 | 描述 | 值 |
|---|---|---|
LAUNCHER_FORCE_RECREATE | 武力娱乐 | 1, true, yes |
# Force venv recreation
export LAUNCHER_FORCE_RECREATE=1
python launcher.py deploy dice-roller --path ./dice
# Windows
set LAUNCHER_FORCE_RECREATE=1
python launcher.py deploy dice-roller --path ./diceDocker清理
这 cleanup-docker 命令提供选择性和全面的Docker资源清理,并带有完整的审计日志。
特性
- 选择性清理:按名称模式删除容器/图像
- 构建缓存管理:清除Docker构建缓存
- 双重记录:JSON(SIEM就绪)+CSV(人类可读历史)
- 安全功能:分析前/后的干运行模式、确认
- 操作系统不可知:适用于Windows、macOS和Linux
用法
# View current Docker space (dry-run)
python launcher.py cleanup-docker --dry-run
# Remove all Supabase resources
python launcher.py cleanup-docker --pattern supabase --images --containers
# Remove Supabase + clear cache (with confirmation)
python launcher.py cleanup-docker --pattern supabase --images --cache
# Force removal without confirmation
python launcher.py cleanup-docker --pattern supabase --images --containers --cache --force
# Clear only build cache
python launcher.py cleanup-docker --cache
# Full cleanup (all unused resources)
python launcher.py cleanup-docker --all选项
| 选项 | 描述 |
|---|---|
--pattern PATTERN | 容器/图像的匹配模式(例如“suabase”) |
--containers | 删除与模式匹配的容器 |
--images | 删除与图案匹配的图像 |
--cache | 清除Docker构建缓存 |
--all | 删除所有未使用的Docker资源 |
--dry-run | 显示在不删除的情况下要删除的内容 |
--force | 跳过确认提示 |
日志记录
每次清理操作都会创建两个日志:
- JSON日志 (
logs/docker_cleanup_TIMESTAMP.json):
- 详细操作日志 - SIEM就绪格式 - 包括空间使用前/后 - 完整的资源详细信息(ID、名称、大小)
- CSV历史记录 (
logs/docker_cleanup_history.csv):
- 累积审计追踪 - Excel/表格兼容 - 易于grep/过滤 - 列:时间戳、模式、容器_删除、图像_删除、缓存_清除、成功、错误_计数
例子
# Example 1: Check what would be removed (dry-run)
python launcher.py cleanup-docker --pattern supabase --images --containers --dry-run
# Example 2: Remove old project containers/images
python launcher.py cleanup-docker --pattern old-project --images --containers --force
# Example 3: Weekly maintenance - clear cache only
python launcher.py cleanup-docker --cache --force
# Example 4: Major cleanup - remove all unused resources
python launcher.py cleanup-docker --all真实世界示例
python launcher.py cleanup-docker --pattern supabase --images --cache --force输出:
[INFO] Current Docker space usage:
Images 16.24GB (reclaimable: 12.03GB)
Build Cache 1.947GB (reclaimable: 1.947GB)
[INFO] Found 5 image(s):
- supabase/postgres:15.8.1.060 (2.92GB)
- supabase/supavisor:2.5.7 (1.33GB)
...
[SUCCESS] Removed 5 image(s)
[SUCCESS] Build cache cleared
[INFO] Final Docker space usage:
Images 7.311GB (reclaimable: 3.099GB)
Build Cache 0B (reclaimable: 0B)
[INFO] JSON log: logs/docker_cleanup_20251123_111552.json
[INFO] CSV history: logs/docker_cleanup_history.csv结果: 释放了约10.9GB
______________________________________________________________________
命令参考
部署
使用完整设置将MCP部署到Docker。
python launcher.py deploy --path [options]它的作用:
- 验证Docker桌面设置
- 生成Dockerfile和docker-compose.yml 在MCP目录中
- 构建Docker镜像
- 更新MCP注册表
- 创建文档
验证
在不部署的情况下验证Docker设置。
python launcher.py verify --path 它的作用:
- 检查Docker是否已安装并正在运行
- 检查Docker Compose是否可用
- 检查是否已安装Node.js 18+
- 报告系统状态
试运行
运行所有验证检查。
python launcher.py dryrun --path 同 verify -仅运行验证检查。
选项
| 选项 | 描述 | 示例 |
|---|---|---|
--path PATH | MCP目录(必填) | --path G:/Coding/dice |
--api-key VALUE | API密钥秘密 | --api-key sk-abc123 |
--db-password VALUE | 数据库密码 | --db-password secret |
--token VALUE | 身份验证令牌 | --token bearer-xyz |
--secrets KEY=VALUE | 其他秘密 | --secrets FOO=bar |
--no-build | 跳过Docker镜像构建 | --no-build |
真实世界的例子
示例1:部署骰子滚轮(Windows)
cd G:/Coding/deploy-mcp-docker
python launcher.py deploy dice-roller --path G:/Coding/mcpserver/dice输出:
================================================================
MCP DOCKER DEPLOYMENT LAUNCHER
Standalone Docker Deployment Tool for MCPs
================================================================
[INFO] MCP Directory: G:\Coding\mcpserver\dice
============================================================
Docker Deployment - DEPLOY
============================================================
[INFO] Setting up virtual environment...
[INFO] Virtual environment already exists: G:\Coding\deploy-mcp-docker\docker_deploy_venv
[SUCCESS] Virtual environment ready
[INFO] Executing deployment: deploy
[INFO] Working directory: G:\Coding\mcpserver\dice
[Deployment process runs...]
[SUCCESS] Deploy completed successfully示例2:使用机密进行部署(Linux)
cd /opt/deploy-mcp-docker
python launcher.py deploy weather-api --path ~/projects/weather-mcp \
--api-key WEATHER_API_KEY \
--secrets LOCATION=SF UNITS=metric示例3:验证设置(Mac)
cd ~/tools/deploy-mcp-docker
python launcher.py verify dice-roller --path ../projects/dice故障排除
路径找不到
[ERROR] MCP path does not exist: /path/to/mcp解决方案: 检查路径是否正确且可访问
# Windows
dir G:\Coding\mcpserver\dice
# Linux/Mac
ls -la /path/to/mcp权限被拒绝(Linux/Mac)
# Make launcher executable
chmod +x launcher.py
# Or run with python explicitly
python launcher.py deploy dice-roller --path ./diceVenv创建失败
[ERROR] Failed to setup virtual environment解决方案: 检查Python版本和权限
# Check Python version (3.7+ required)
python --version
# Force recreate venv
export LAUNCHER_FORCE_RECREATE=1
python launcher.py deploy dice-roller --path ./dice找不到Docker
[ERROR] Docker not installed or not in PATH解决方案: 安装Docker桌面
- Windows/Mac:https://www.docker.com/products/docker-desktop/
- Linux:使用包管理器(apt、yum等)
需求
- Python 3.7+
- Docker桌面4.0+ (跑步)
- Node.js 18+ (在MCP项目中)
- 格式 (自动安装)
首次运行后的文件结构
deploy-mcp-docker/
├── launcher.py # Main entry point
├── deploy-mcp-docker.py # Core deployment script
├── requirements.txt # PyYAML dependency
├── docker_deploy_venv/ # Auto-created venv
│ ├── bin/ # Linux/Mac executables
│ ├── Scripts/ # Windows executables
│ └── lib/ # Installed packages
└── launcher/
├── __init__.py
├── core/
│ ├── __init__.py
│ ├── venv_manager.py
│ └── colors.py
└── docker/
├── __init__.py
└── docker_deploy_launcher.py
MCP Project (external, operated on via --path):
dice/
├── docker/ # Created by deployment
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── .dockerignore
├── docs/docker/ # Generated documentation
│ ├── DOCKER-README.md
│ ├── DOCKER-QUICKSTART.md
│ └── ...
└── catalog/ # Generated catalog
└── catalog.json最佳实践
1.使用正向划水(跨平台)
# Good (works everywhere)
python launcher.py deploy mcp --path G:/projects/mcp
# Also good (Linux/Mac)
python launcher.py deploy mcp --path /home/user/projects/mcp
# Avoid (Windows shell issues)
python launcher.py deploy mcp --path G:\projects\mcp2.使用相对路径实现可移植性
# Portable across machines
python launcher.py deploy dice --path ../dice
# Machine-specific
python launcher.py deploy dice --path G:/Coding/mcpserver/dice3.部署前验证
# Always check setup first
python launcher.py verify dice --path ./dice
# Then deploy
python launcher.py deploy dice --path ./dice4.使用环境文件保密
# Create .env (DON'T commit to git!)
cat > .env << EOF
API_KEY=your-key-here
DB_PASSWORD=secret
EOF
# Load and deploy
source .env # Linux/Mac
# or
set -a && source .env && set +a
python launcher.py deploy dice --path ./dice --api-key $API_KEY常见问题解答
Q: 我可以部署多个MCP吗?
对!该工具是独立的,可以部署任何MCP:
python launcher.py deploy dice-roller --path /path/to/dice
python launcher.py deploy weather-api --path /path/to/weather
python launcher.py deploy custom-mcp --path /path/to/customQ: venv是在哪里创建的?
在 deploy-mcp-docker/ 目录(工具目录),不在MCP项目中。
Q: Docker文件是在哪里创建的?
在指定的MCP目录中 --path。该工具在外部目录上运行。
Q: 我需要自己安装PyYAML吗?
不!它在第一次运行时会自动安装在隔离的静脉中。
Q: 我可以在任何地方使用这个工具吗?
对!只需提供您的MCP的完整路径:
python /opt/deploy-mcp-docker/launcher.py deploy dice --path ~/projects/diceQ: 这在Windows、Linux和Mac上有效吗?
对!该工具自动规范路径并处理平台差异。
支持
对于问题或疑问:
- 查看此自述文件
- 与一起跑步
--help获取特定命令的帮助 - 尝试
verify检查设置的命令
许可证
麻省理工学院
______________________________________________________________________
独立MCP Docker部署工具 -在任何地方、任何平台上部署任何MCP。
