MCP Proxmox Server 是一个用 Python 编写的高级 Proxmox 模型上下文协议(MCP)服务器,它提供了丰富的 Proxmox 实用工具,可用于发现、生命周期管理、网络配置、快照/备份、指标监控、资源池/权限管理以及编排等操作。
git clone https://github.com/bsahane/mcp-proxmox.git
cd mcp-proxmox
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install -r requirements.txt
# (可选)在本地安装包
pip install -e .
.env 文件.env.example 文件到 .env 并编辑相关值:cp .env.example .env
.env 文件中的键值示例:
PROXMOX_API_URL="https://proxmox.example.com:8006"
PROXMOX_TOKEN_ID="root@pam!mcp-proxmox"
PROXMOX_TOKEN_SECRET=""
PROXMOX_VERIFY="true"
PROXMOX_DEFAULT_NODE="pve"
PROXMOX_DEFAULT_STORAGE="local-lvm"
PROXMOX_DEFAULT_BRIDGE="vmbr0"
⚠️ 重要提示
- 请使用具有适当访问控制列表(ACL)的 API 令牌;对于发现操作,根目录下的
PVEAuditor权限已足够;对于生命周期管理操作,请在资源池上授予更窄的角色(例如PVEVMAdmin)。- 使用
.env文件可以避免 zsh 历史扩展中因令牌 ID 包含!而导致的问题。
source .venv/bin/activate
python -m proxmox_mcp.server
source .venv/bin/activate
proxmox-mcp
编辑 ~/.cursor/mcp.json 文件(可移植示例):
{
"mcpServers": {
"proxmox-mcp": {
"command": "python",
"args": ["-m", "proxmox_mcp.server"]
}
}
}
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json 文件:
{
"mcpServers": {
"proxmox-mcp": {
"command": "python",
"args": ["-m", "proxmox_mcp.server"]
}
}
}
| 工具名称 | 描述 | 示例问题 | 可能的答案 |
|---|---|---|---|
proxmox-list-nodes |
列出集群节点(包含名称、状态、CPU/RAM/磁盘摘要) | "List cluster nodes" | [ { "node": "pve", "status": "online", ... } ] |
proxmox-node-status |
详细的节点健康信息(负载、正常运行时间、版本) | { "node": "pve" } |
{ "kversion": "...", "uptime": 123456, ... } |
proxmox-list-vms |
列出虚拟机(可按节点、状态、名称子串过滤) | { "node": "pve", "status": "running" } |
[ { "vmid": 100, "name": "web01", ... } ] |
proxmox-vm-info |
根据 vmid 或 name(可选节点)获取虚拟机详细信息,包括配置 |
{ "name": "web01" } |
{ "selector": {...}, "config": {...} } |
proxmox-list-lxc |
列出 LXC 容器(可过滤) | { "node": "pve" } |
[ { "vmid": 50001, "name": "ct01", ... } ] |
proxmox-lxc-info |
根据 vmid 或 name(可选节点)获取 LXC 容器详细信息 |
{ "vmid": 50001 } |
{ "selector": {...}, "config": {...} } |
proxmox-list-storage |
列出存储(类型、可用/已用空间) | {} |
[ { "storage": "local-lvm", "type": "lvmthin", ... } ] |
proxmox-storage-content |
列出存储内容(ISO、模板、镜像) | { "node": "pve", "storage": "local" } |
[ { "volid": "local:iso/foo.iso", ... } ] |
proxmox-list-bridges |
列出节点网桥(vmbr...) | { "node": "pve" } |
[ { "iface": "vmbr0", ... } ] |
proxmox-list-tasks |
最近的任务(可按节点、用户过滤) | { "node": "pve", "limit": 20 } |
[ { "upid": "UPID:...", "status": "OK" }, ... ] |
proxmox-task-status |
检查任务状态 | { "upid": "UPID:..." } |
{ "status": "stopped", "exitstatus": "OK" } |
proxmox-clone-vm:将模板虚拟机克隆到新的 VMID/名称(支持目标节点、存储)proxmox-create-vm:从 ISO/模板创建新的虚拟机(最小配置)proxmox-delete-vm:删除虚拟机(需确认、可清除)proxmox-start-vm / proxmox-stop-vm / proxmox-reboot-vm / proxmox-shutdown-vm:管理虚拟机电源状态(停止操作支持硬停止和超时设置)proxmox-migrate-vm:实时/离线迁移到其他节点proxmox-resize-vm-disk:扩展目标磁盘(如 scsi0)的大小(GB)proxmox-configure-vm:设置白名单参数(核心数、内存、气球、网络、代理等)proxmox-create-lxc:从模板创建容器(CPU/内存、根文件系统大小、网络、存储)proxmox-delete-lxc / proxmox-start-lxc / proxmox-stop-lxc / proxmox-configure-lxc:管理容器生命周期和配置proxmox-cloudinit-set:设置云初始化参数(ipconfig0、ssh 密钥、ci 用户/密码)proxmox-vm-nic-add / proxmox-vm-nic-remove:添加/移除网卡(网桥、模型、VLAN)proxmox-vm-firewall-get / proxmox-vm-firewall-set:获取/设置每个虚拟机的防火墙状态和规则proxmox-upload-iso / proxmox-upload-template:将 ISO 或 LXC 模板上传到存储proxmox-template-vm:将虚拟机转换为模板proxmox-list-snapshots / proxmox-create-snapshot / proxmox-delete-snapshot / proxmox-rollback-snapshot:管理快照;回滚操作支持 wait 参数proxmox-backup-vm / proxmox-restore-vm:运行 vzdump 备份和恢复存档proxmox-vm-metrics:获取虚拟机的 RRD 指标(时间范围、合并函数)proxmox-node-metrics:获取节点的 RRD 指标proxmox-list-pools / proxmox-create-pool / proxmox-delete-pool / proxmox-pool-add / proxmox-pool-removeproxmox-list-users / proxmox-list-roles / proxmox-assign-permissionproxmox-wait-task:轮询任务直到完成或超时proxmox-register-vm-as-host:为 Ansible 清单生成 JSON/INI 片段(主机名、IP、SSH 用户/密钥)proxmox-guest-exec(可选):通过 QEMU 来宾代理运行命令(需要来宾中安装代理){}
用于 proxmox-list-nodes 工具。
pve 上的虚拟机:{ "node": "pve" }
用于 proxmox-list-vms 工具。
{ "source_vmid": 101, "new_vmid": 50009, "name": "web01", "storage": "local-lvm", "confirm": true, "wait": true }
用于 proxmox-clone-vm 工具。
{ "name": "web01", "ipconfig0": "ip=192.168.1.50/24,gw=192.168.1.1", "confirm": true }
用于 proxmox-cloudinit-set 工具。
bsahane/mcp-ansible.env 文件。node 参数。本项目采用 MIT 许可证。