cursor-proxmox-mcp是一个专注于Cursor的基于Python的模型上下文协议(MCP)服务器,用于与Proxmox虚拟化平台进行交互,并进行了修复和增强。
在开始之前,请确保您拥有:
pip install uv)# 克隆仓库
git clone https://github.com/agentify-sh/cursor-proxmox-mcp.git
cd ProxmoxMCP-Plus
# 创建并激活虚拟环境
uv venv
# 或者强制使用3.11(用于mcpo依赖)
python3.11 -m venv .venv
# 然后激活它
source .venv/bin/activate # Linux/macOS
# 或者
.\.venv\Scripts\Activate.ps1 # Windows
# 安装开发依赖项
uv pip install -e ".[dev]"
# 或者通过pip安装
pip install -e .
pip install pytest pytest-asyncio black mypy ruff types-requests
pip install mcpo # 需要python 3.11
# 创建配置目录并复制模板
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 -c "import proxmox_mcp; print('Installation OK')"
pytest
# Linux/macOS
PROXMOX_MCP_CONFIG="proxmox-config/config.json" python -m proxmox_mcp.server
# Windows (PowerShell)
$env:PROXMOX_MCP_CONFIG="proxmox-config\config.json"; python -m proxmox_mcp.server
用于测试和开发:
# 首先激活虚拟环境
source .venv/bin/activate # Linux/macOS
# 或者
.\.venv\Scripts\Activate.ps1 # Windows
# 运行服务器
python -m proxmox_mcp.server
将ProxmoxMCP Plus部署为标准的OpenAPI REST端点,以便与Open WebUI和其他应用程序集成。
# 安装mcpo(MCP到OpenAPI代理)
pip install mcpo
# 在端口8811上启动OpenAPI服务
./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
docker-compose up -d
部署完成后,通过以下地址访问您的服务:
对于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": []
}
}
}
✨ 完整的VM生命周期管理
create_vm 工具 - 支持使用自定义配置创建虚拟机delete_vm 工具 - 安全删除VM(带有强制删除选项)🔧 扩展的电源管理功能
start_vm - 启动虚拟机stop_vm - 强制停止虚拟机shutdown_vm - 正常关闭虚拟机reset_vm - 重启虚拟机🐳 新的容器支持
get_containers - 列出所有LXC容器及其状态📊 增强的监控和显示
🌐 完整的OpenAPI集成
🛡️ 生产级的安全性和稳定性
服务器提供11个全面的MCP工具和相应的REST API端点:
创建具有指定资源的新虚拟机。
参数:
node(字符串,必需):节点名称vmid(字符串,必需):新VM的IDname(字符串,必需):VM的名称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
}
示例响应:
🎉 VM 200创建成功!
📋 VM配置:
• 名称: my-vm
• 节点: pve
• VM ID: 200
• CPU核心数: 1
• 内存: 2048 MB (2.0 GB)
• 磁盘: 10 GB (local-lvm, raw格式)
• 存储类型: lvmthin
• 网络: virtio (bridge=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}
列出集群中的所有LXC容器。
API端点: POST /get_containers
示例响应:
🐳 容器
🐳 nginx-server (ID: 200)
• 状态: RUNNING
• 节点: pve
• CPU核心数: 2
• 内存: 1.5 GB / 2.0 GB (75.0%)
POST /get_nodes
示例响应:🖥️ Proxmox节点
🖥️ pve-compute-01
• 状态: ONLINE
• 正常运行时间: ⏳ 156d 12h
• CPU核心数: 64
• 内存: 186.5 GB / 512.0 GB (36.4%)
node(字符串,必需):节点名称
API端点: POST /get_node_statusPOST /get_vmsPOST /get_storagePOST /get_cluster_statusnode(字符串,必需):VM运行的节点名称vmid(字符串,必需):VM的IDcommand(字符串,必需):要执行的命令
API端点: POST /execute_vm_command
要求:{
"name": "Proxmox MCP API Plus",
"base_url": "http://your-server:8811",
"api_key": "",
"description": "增强的Proxmox虚拟化管理API"
}
用户现在可以使用自然语言请求创建VM:
AI助手将自动调用相应的API并提供详细反馈。
ProxmoxMCP Plus自动检测存储类型并选择合适的磁盘格式:
rawqcow2ProxmoxMCP-Plus/
├── 📁 src/ # 源代码
│ └── proxmox_mcp/
│ ├── server.py # 主要的MCP服务器实现
│ ├── config/ # 配置处理
│ ├── core/ # 核心功能
│ ├── formatting/ # 输出格式和主题
│ ├── tools/ # 工具实现
│ │ ├── vm.py # VM管理(创建/电源) 🆕
│ │ ├── container.py # 容器管理 🆕
│ │ └── console/ # VM控制台操作
│ └── utils/ # 实用工具(认证、日志记录)
│
├── 📁 tests/ # 单元测试套件
├── 📁 test_scripts/ # 集成测试和演示
│ ├── README.md # 测试文档
│ ├── test_vm_power.py # VM电源管理测试 🆕
│ ├── test_vm_start.py # VM启动测试
│ ├── test_create_vm.py # VM创建测试 🆕
│ └── test_openapi.py # OpenAPI服务测试
│
├── 📁 proxmox-config/ # 配置文件
│ └── config.json # 服务器配置
│
├── 📄 Configuration Files
│ ├── pyproject.toml # 项目元数据
│ ├── docker-compose.yml # Docker编排
│ ├── Dockerfile # Docker镜像定义
│ └── requirements.in # 依赖项
│
├── 📄 Scripts
│ ├── start_server.sh # MCP服务器启动脚本
│ └── start_openapi.sh # OpenAPI服务启动脚本
│
└── 📄 Documentation
├── README.md # 本文档
├── VM_CREATION_GUIDE.md # VM创建指南
├── OPENAPI_DEPLOYMENT.md # OpenAPI部署文档
└── LICENSE # MIT许可证
pytest
cd test_scripts
# 测试VM电源管理
python test_vm_power.py
# 测试VM启动
python test_vm_start.py
# 测试VM创建
python test_create_vm.py
# 测试OpenAPI服务
python test_openapi.py
# 测试节点列表
curl -X POST "http://your-server:8811/get_nodes" \
-H "Content-Type: application/json" \
-d "{}"
# 测试VM创建
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访问:
export PROXMOX_API_KEY="your-secure-api-key"
export PROXMOX_MCP_CONFIG="/app/proxmox-config/config.json"
示例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
# 测试Proxmox连接性
curl -k https://your-proxmox:8006/api2/json/version
# 查看服务日志
tail -f proxmox_mcp.log
# Docker日志
docker logs proxmox-mcp-api -f
ProxmoxMCP Plus现在已完全准备好用于生产环境!
当用户说 "能否创建一个具有1个CPU核心、2GB内存和10GB存储磁盘的VM" 时,AI助手可以:
create_vm API激活虚拟环境后:
pytestblack .mypy .ruff .本项目采用MIT许可证。
本项目基于优秀的开源项目 ProxmoxMCP 构建,感谢原作者 @RekklesNA 提供的基础框架和创意灵感!我将继续针对Cursor IDE进行更新。
准备好部署了! 🎉 您的支持OpenAPI集成的增强型Proxmox MCP服务已准备好用于生产环境。