proxmox-mcp
ActiveDriving a Proxmox cluster from the web UI means clicking through nodes, guests, and task logs one panel at a time. proxmox-mcp hands the whole cluster to your agent over API-token auth: inventory VMs and containers, boot or clone a guest, trace a UPID, and manage snapshots and backups in plain language, with a three-tier write gate so nothing changes state by accident.
See it work
one question, the tools it calls, the answer
Representative session. Illustrative values, RFC 5737 addresses. The write took confirm: true; destructive tools stay gated behind an env flag.
What it does
proxmox-mcp is an MCP server that turns a Proxmox VE cluster into tools an agent can call: cluster and node status, VM and LXC inventory, configs, RRD metrics, task tracing, snapshots, backups, gated guest reads and shell exec, and full provision/clone/destroy lifecycle, all over Proxmox API-token auth. It exists because your homelab lives in Proxmox and you want an assistant to inventory it or boot a guest without you clicking through the web UI or handing it a root shell. What sets it apart is the write-safety model: 96 tools split across four tiers where reads are open, safe writes need confirm: true, and destructive ops need confirm: true plus destructive: true plus a process-level PROXMOX_ENABLE_DESTRUCTIVE=1 env flag, so a hallucinated call fails closed before any HTTP traffic reaches Proxmox.
Capabilities
96 tools across four write tiers
Set it up
Set PROXMOX_URL, PROXMOX_TOKEN_ID, PROXMOX_TOKEN_SECRET (all required). PROXMOX_TLS_INSECURE=false for homelab self-signed certs; PROXMOX_ENABLE_DESTRUCTIVE=1 to unlock tier-3.
MCP client config
{ "mcpServers": { "proxmox": { "command": "npx", "args": ["-y", "@solomonneas/proxmox-mcp"], "env": { "PROXMOX_URL": "https://192.0.2.10:8006", "PROXMOX_TOKEN_ID": "pve-admin@pam!api-token-1", "PROXMOX_TOKEN_SECRET": "00000000-0000-0000-0000-000000000000", "PROXMOX_TLS_INSECURE": "false" } } } }Every tool's tier is enforced in code, not just documented. Reads are open; safe writes require confirm: true and throw WriteGateError before any HTTP call when the flag is missing; the 8 destructive tools also require destructive: true plus the process-level PROXMOX_ENABLE_DESTRUCTIVE=1 env flag, staying inert until you set it. The token secret is registered with a redactor at startup and masked from all log and error output. The bundled proxmoxctl CLI is read-only, so shells, cron, and CI never touch a write path. Recommended start: a read-only token (Datastore.Audit + VM.Audit + Sys.Audit), graded up only after confirming the gates hold.