🚀 ProxmoxMCP-Plus - 增强版Proxmox MCP服务器
这是一个基于Python的增强型模型上下文协议(MCP)服务器,用于与Proxmox虚拟化平台进行交互。本项目基于 canvrno/ProxmoxMCP 构建,新增了众多功能并进行了改进,提供了完整的OpenAPI集成和更强大的虚拟化管理能力。
🚀 快速开始
本项目是一个增强版的Proxmox MCP服务器,旨在简化和增强与Proxmox虚拟化平台的交互。你可以通过以下步骤快速搭建并使用该服务器。
✨ 主要特性
与原版本相比的主要增强功能:
-
✨ 完整的虚拟机生命周期管理
- 全新的
create_vm
工具 - 支持使用自定义配置创建虚拟机
- 新的
delete_vm
工具 - 安全删除虚拟机(支持强制删除选项)
- 增强的智能存储类型检测(LVM/基于文件)
-
🔧 扩展的电源管理功能
start_vm
- 启动虚拟机
stop_vm
- 强制停止虚拟机
shutdown_vm
- 正常关闭虚拟机
reset_vm
- 重启虚拟机
-
🐳 新增容器支持
get_containers
- 列出所有LXC容器及其状态
-
📊 增强的监控和显示功能
- 改进的存储池状态监控
- 更详细的集群健康状态检查
- 丰富的输出格式和主题
-
🌐 完整的OpenAPI集成
- 11个完整的REST API端点
- 可用于生产环境的Docker部署
- 完美的Open WebUI集成
- 支持自然语言创建虚拟机
-
🛡️ 生产级的安全性和稳定性
- 增强的错误处理机制
- 全面的参数验证
- 生产级日志记录
- 完整的单元测试覆盖
其他特性:
- 🤖 与Cline和Open WebUI完全集成
- 🛠️ 使用官方MCP SDK构建
- 🔒 与Proxmox进行基于安全令牌的身份验证
- 🖥️ 完整的虚拟机生命周期管理(创建、启动、停止、重置、关闭、删除)
- 💻 执行虚拟机控制台命令
- 🐳 支持LXC容器管理
- 🗃️ 智能存储类型检测(LVM/基于文件)
- 📝 可配置的日志系统
- ✅ 使用Pydantic实现类型安全
- 🎨 丰富的输出格式和可自定义主题
- 🌐 用于集成的OpenAPI REST端点
- 📡 11个功能齐全的API端点
📦 安装指南
前提条件
- UV包管理器(推荐)
- Python 3.9或更高版本
- Git
- 具有API令牌凭据的Proxmox服务器访问权限
在开始之前,请确保你具备以下条件:
- [ ] Proxmox服务器主机名或IP地址
- [ ] Proxmox API令牌(请参阅 Proxmox API令牌设置)
- [ ] 已安装UV (
pip install uv
)
选项1:快速安装(推荐)
-
克隆并设置环境:
git clone https://github.com/RekklesNA/ProxmoxMCP-Plus.git
cd ProxmoxMCP-Plus
uv venv
source .venv/bin/activate
.\.venv\Scripts\Activate.ps1
-
安装依赖项:
uv pip install -e ".[dev]"
-
创建配置文件:
mkdir -p proxmox-config
cp proxmox-config/config.example.json proxmox-config/config.json
-
编辑 proxmox-config/config.json
:
{
"proxmox": {
"host": "PROXMOX_HOST", # 必需:你的Proxmox服务器地址
"port": 8006, # 可选:默认值为8006
"verify_ssl": false, # 可选:对于自签名证书设置为false
"service": "PVE" # 可选:默认值为PVE
},
"auth": {
"user": "USER@pve", # 必需:你的Proxmox用户名
"token_name": "TOKEN_NAME", # 必需:API令牌ID
"token_value": "TOKEN_VALUE" # 必需:API令牌值
},
"logging": {
"level": "INFO", # 可选:DEBUG可获取更多详细信息
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
"file": "proxmox_mcp.log" # 可选:将日志记录到文件
}
}
验证安装
-
检查Python环境:
python -c "import proxmox_mcp; print('Installation OK')"
-
运行测试:
pytest
-
验证配置:
PROXMOX_MCP_CONFIG="proxmox-config/config.json" python -m proxmox_mcp.server
$env:PROXMOX_MCP_CONFIG="proxmox-config\config.json"; python -m proxmox_mcp.server
📚 详细文档
Proxmox API令牌设置
- 登录到你的Proxmox Web界面
- 导航到数据中心 -> 权限 -> API令牌
- 创建一个新的API令牌:
- 选择一个用户(例如,root@pam)
- 输入一个令牌ID(例如,"mcp-token")
- 如果你需要完全访问权限,请取消选中“权限分离”
- 保存并复制令牌ID和密钥
运行服务器
开发模式
用于测试和开发:
source .venv/bin/activate
.\.venv\Scripts\Activate.ps1
python -m proxmox_mcp.server
OpenAPI部署(可用于生产环境)
将ProxmoxMCP Plus部署为标准的OpenAPI REST端点,以便与Open WebUI和其他应用程序集成。
快速启动OpenAPI服务
pip install mcpo
./start_openapi.sh
Docker部署
docker build -t proxmox-mcp-api .
docker run -d --name proxmox-mcp-api -p 8811:8811 \
-v $(pwd)/proxmox-config:/app/proxmox-config proxmox-mcp-api
docker-compose up -d
访问OpenAPI服务
部署完成后,可通过以下地址访问服务:
- 📖 API文档:http://your-server:8811/docs
- 🔧 OpenAPI规范:http://your-server:8811/openapi.json
- ❤️ 健康检查:http://your-server:8811/health
Cline桌面集成
对于Cline用户,请将以下配置添加到你的MCP设置文件中(通常位于 ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
):
{
"mcpServers": {
"ProxmoxMCP-Plus": {
"command": "/absolute/path/to/ProxmoxMCP-Plus/.venv/bin/python",
"args": ["-m", "proxmox_mcp.server"],
"cwd": "/absolute/path/to/ProxmoxMCP-Plus",
"env": {
"PYTHONPATH": "/absolute/path/to/ProxmoxMCP-Plus/src",
"PROXMOX_MCP_CONFIG": "/absolute/path/to/ProxmoxMCP-Plus/proxmox-config/config.json",
"PROXMOX_HOST": "your-proxmox-host",
"PROXMOX_USER": "username@pve",
"PROXMOX_TOKEN_NAME": "token-name",
"PROXMOX_TOKEN_VALUE": "token-value",
"PROXMOX_PORT": "8006",
"PROXMOX_VERIFY_SSL": "false",
"PROXMOX_SERVICE": "PVE",
"LOG_LEVEL": "DEBUG"
},
"disabled": false,
"autoApprove": []
}
}
}
可用工具和API端点
服务器提供11个全面的MCP工具和相应的REST API端点:
虚拟机管理工具
create_vm
使用指定的资源创建一个新的虚拟机。
参数:
node
(字符串,必需):节点名称
vmid
(字符串,必需):新虚拟机的ID
name
(字符串,必需):虚拟机名称
cpus
(整数,必需):CPU核心数(1 - 32)
memory
(整数,必需):内存(MB)(512 - 131072)
disk_size
(整数,必需):磁盘大小(GB)(5 - 1000)
storage
(字符串,可选):存储池名称
ostype
(字符串,可选):操作系统类型(默认:l26)
API端点:
POST /create_vm
Content-Type: application/json
{
"node": "pve",
"vmid": "200",
"name": "my-vm",
"cpus": 1,
"memory": 2048,
"disk_size": 10
}
示例响应:
🎉 虚拟机200创建成功!
📋 虚拟机配置:
• 名称:my-vm
• 节点:pve
• 虚拟机ID:200
• CPU核心数:1
• 内存:2048 MB(2.0 GB)
• 磁盘:10 GB(local-lvm,原始格式)
• 存储类型:lvmthin
• 网络:virtio(桥接=vmbr0)
• QEMU代理:已启用
🔧 任务ID:UPID:pve:001AB729:0442E853:682FF380:qmcreate:200:root@pam!mcp
虚拟机电源管理 🆕
POST /start_vm
{"node": "pve", "vmid": "200"}
POST /stop_vm
{"node": "pve", "vmid": "200"}
POST /shutdown_vm
{"node": "pve", "vmid": "200"}
POST /reset_vm
{"node": "pve", "vmid": "200"}
POST /delete_vm
{"node": "pve", "vmid": "200", "force": false}
🆕 容器管理工具
get_containers 🆕
列出集群中的所有LXC容器。
API端点: POST /get_containers
示例响应:
🐳 容器
🐳 nginx-server(ID:200)
• 状态:运行中
• 节点:pve
• CPU核心数:2
• 内存:1.5 GB / 2.0 GB(75.0%)
监控工具
get_nodes
列出Proxmox集群中的所有节点。
API端点: POST /get_nodes
示例响应:
🖥️ Proxmox节点
🖥️ pve-compute-01
• 状态:在线
• 正常运行时间:⏳ 156天12小时
• CPU核心数:64
• 内存:186.5 GB / 512.0 GB(36.4%)
get_node_status
获取特定节点的详细状态。
参数:
API端点: POST /get_node_status
get_vms
列出集群中的所有虚拟机。
API端点: POST /get_vms
get_storage
列出可用的存储池。
API端点: POST /get_storage
get_cluster_status
获取集群的整体状态和健康状况。
API端点: POST /get_cluster_status
execute_vm_command
使用QEMU Guest Agent在虚拟机的控制台中执行命令。
参数:
node
(字符串,必需):虚拟机运行所在的节点名称
vmid
(字符串,必需):虚拟机的ID
command
(字符串,必需):要执行的命令
API端点: POST /execute_vm_command
要求:
- 虚拟机必须正在运行
- 虚拟机中必须安装并运行QEMU Guest Agent
Open WebUI集成
配置Open WebUI
- 访问你的Open WebUI实例
- 导航到 设置 → 连接 → OpenAPI
- 添加新的API配置:
{
"name": "Proxmox MCP API Plus",
"base_url": "http://your-server:8811",
"api_key": "",
"description": "增强版Proxmox虚拟化管理API"
}
自然语言创建虚拟机
用户现在可以使用自然语言请求创建虚拟机:
- "能否创建一个具有1个CPU核心、2 GB内存和10 GB存储磁盘的虚拟机"
- "创建一个用于测试的最小资源虚拟机"
- "我需要一个具有4个核心和8 GB内存的开发服务器"
AI助手将自动调用相应的API并提供详细的反馈。
存储类型支持
智能存储检测
ProxmoxMCP Plus会自动检测存储类型并选择合适的磁盘格式:
LVM存储(local-lvm, vm-storage)
- ✅ 格式:
raw
- ✅ 高性能
- ⚠️ 不支持云初始化镜像
基于文件的存储(local, NFS, CIFS)
- ✅ 格式:
qcow2
- ✅ 支持云初始化
- ✅ 灵活的快照功能
项目结构
ProxmoxMCP-Plus/
├── 📁 src/ # 源代码
│ └── proxmox_mcp/
│ ├── server.py # 主要的MCP服务器实现
│ ├── config/ # 配置处理
│ ├── core/ # 核心功能
│ ├── formatting/ # 输出格式和主题
│ ├── tools/ # 工具实现
│ │ ├── vm.py # 虚拟机管理(创建/电源) 🆕
│ │ ├── container.py # 容器管理 🆕
│ │ └── console/ # 虚拟机控制台操作
│ └── utils/ # 实用工具(身份验证、日志记录)
│
├── 📁 tests/ # 单元测试套件
├── 📁 test_scripts/ # 集成测试和演示
│ ├── README.md # 测试文档
│ ├── test_vm_power.py # 虚拟机电源管理测试 🆕
│ ├── test_vm_start.py # 虚拟机启动测试
│ ├── test_create_vm.py # 虚拟机创建测试 🆕
│ └── test_openapi.py # OpenAPI服务测试
│
├── 📁 proxmox-config/ # 配置文件
│ └── config.json # 服务器配置
│
├── 📄 配置文件
│ ├── pyproject.toml # 项目元数据
│ ├── docker-compose.yml # Docker编排
│ ├── Dockerfile # Docker镜像定义
│ └── requirements.in # 依赖项
│
├── 📄 脚本
│ ├── start_server.sh # MCP服务器启动器
│ └── start_openapi.sh # OpenAPI服务启动器
│
└── 📄 文档
├── README.md # 本文件
├── VM_CREATION_GUIDE.md # 虚拟机创建指南
├── OPENAPI_DEPLOYMENT.md # OpenAPI部署
└── LICENSE # MIT许可证
测试
运行单元测试
pytest
运行集成测试
cd test_scripts
python test_vm_power.py
python test_create_vm.py
python test_openapi.py
使用curl进行API测试
curl -X POST "http://your-server:8811/get_nodes" \
-H "Content-Type: application/json" \
-d "{}"
curl -X POST "http://your-server:8811/create_vm" \
-H "Content-Type: application/json" \
-d '{
"node": "pve",
"vmid": "300",
"name": "test-vm",
"cpus": 1,
"memory": 2048,
"disk_size": 10
}'
生产环境安全
API密钥身份验证
设置安全的API访问:
export PROXMOX_API_KEY="your-secure-api-key"
export PROXMOX_MCP_CONFIG="/app/proxmox-config/config.json"
Nginx反向代理
示例Nginx配置:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8811;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
故障排除
常见问题
-
端口已被使用
netstat -tlnp | grep 8811
mcpo --port 8812 -- ./start_server.sh
-
配置错误
cat proxmox-config/config.json
-
连接问题
curl -k https://your-proxmox:8006/api2/json/version
查看日志
tail -f proxmox_mcp.log
docker logs proxmox-mcp-api -f
部署状态
✅ 功能完成度:100%
- [x] 虚拟机创建(用户需求:1个CPU + 2 GB内存 + 10 GB存储) 🆕
- [x] 虚拟机电源管理(启动VPN服务器ID:101) 🆕
- [x] 虚拟机删除功能 🆕
- [x] 容器管理(LXC) 🆕
- [x] 存储兼容性(LVM/基于文件)
- [x] OpenAPI集成(端口8811)
- [x] Open WebUI集成
- [x] 错误处理和验证
- [x] 完整的文档和测试
可用于生产环境!
ProxmoxMCP Plus现在已完全可以用于生产环境!
当用户说 "能否创建一个具有1个CPU核心、2 GB内存和10 GB存储磁盘的虚拟机" 时,AI助手可以:
- 📞 调用
create_vm
API
- 🔧 自动选择合适的存储和格式
- 🎯 创建符合要求的虚拟机
- 📊 返回详细的配置信息
- 💡 提供下一步建议
开发
激活虚拟环境后:
- 运行测试:
pytest
- 格式化代码:
black .
- 类型检查:
mypy .
- 代码检查:
ruff .
📄 许可证
本项目采用MIT许可证。
特别感谢
准备好部署了! 🎉 你拥有OpenAPI集成的增强版Proxmox MCP服务已可用于生产环境。