使用 Python 实现的高级 Proxmox 模型上下文协议(MCP)服务器,提供丰富的 Proxmox 工具,用于发现、生命周期管理、网络配置、快照/备份、指标、池/权限以及编排。
bsahane/mcp-ansiblegit 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.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="<secret>"
PROXMOX_VERIFY="true"
PROXMOX_DEFAULT_NODE="pve"
PROXMOX_DEFAULT_STORAGE="local-lvm"
PROXMOX_DEFAULT_BRIDGE="vmbr0"
注意事项:
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"]
}
}
}
所有工具均可通过 MCP 访问。破坏性工具接受 confirm,大多数写操作支持 dry_run、wait、timeout、poll_interval。
以下格式按工具:
proxmox-list-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
{ "node": "pve" }[ { "vmid": 50001, "name": "ct01", ... } ]proxmox-lxc-info
vmid 或 name 获取 LXC 详情(+可选节点){ "vmid": 100 }{ "selector": {...}, "config": {...} }proxmox-list-storage
{}[ { "storage": "local-lvm", "type": "lvmthin", ... } ]proxmox-storage-content
{ "node": "pve", "storage": "local" }[ { "volid": "local:iso/foo.iso", ... } ]proxmox-list-bridges
{ "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
{ "source_vmid": 101, "new_vmid": 50009, "name": "web01", "storage": "local-lvm", "confirm": true, "wait": true }{ "upid": "UPID:...", "status": {...} }proxmox-create-vm
{ "node": "pve", "vmid": 200, "name": "web02", "iso": "debian.iso", "confirm": true }{ "upid": "UPID:..." }proxmox-delete-vm
{ "name": "web01", "purge": true, "confirm": true }{ "upid": "UPID:..." }proxmox-start-vm / proxmox-stop-vm / proxmox-reboot-vm / proxmox-shutdown-vm
{ "name": "web01", "wait": true }{ "upid": "UPID:...", "status": {...} }proxmox-migrate-vm
{ "name": "web01", "target_node": "pve2", "live": true }{ "upid": "UPID:..." }proxmox-resize-vm-disk
{ "name": "web01", "disk": "scsi0", "grow_gb": 10, "confirm": true, "wait": true }{ "upid": "UPID:...", "status": {...} }proxmox-configure-vm
{ "name": "web01", "params": { "memory": 4096, "cores": 4 }, "confirm": true }{ "upid": "UPID:..." } 或 { "result": null }proxmox-create-lxc
{ "node": "pve", "vmid": 50050, "hostname": "ct01", "ostemplate": "debian-12.tar.zst", "confirm": true }{ "upid": "UPID:..." }proxmox-delete-lxc / proxmox-start-lxc / proxmox-stop-lxc / proxmox-configure-lxc
proxmox-cloudinit-set
{ "name": "web01", "ipconfig0": "ip=192.168.1.50/24,gw=192.168.1.1", "confirm": true }{ "upid": "UPID:..." } 或 { "result": null }proxmox-vm-nic-add / proxmox-vm-nic-remove
proxmox-vm-firewall-get / proxmox-vm-firewall-set
proxmox-upload-iso / proxmox-upload-template
proxmox-template-vm
proxmox-list-snapshots / proxmox-create-snapshot / proxmox-delete-snapshot / proxmox-rollback-snapshot
waitproxmox-backup-vm / proxmox-restore-vm
proxmox-vm-metrics
proxmox-node-metrics
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
proxmox-guest-exec(可选)
{} 对于 proxmox-list-nodespve 上的虚拟机:{ "node": "pve" } 对于 proxmox-list-vms{ "source_vmid": 101, "new_vmid": 50009, "name": "web01", "storage": "local-lvm", "confirm": true, "wait": true }{ "name": "web01", "ipconfig0": "ip=192.168.1.50/24,gw=192.168.1.1", "confirm": true }.env 文件。node。# 按需进行代码检查/类型检查(默认不包含)
MIT