proxmox-mcp
Allows interacting with a Proxmox VE node/cluster, providing tools for listing nodes and guests, power management (start/stop/shutdown/reboot), reconfiguring CPU and memory, managing snapshots (list, create, rollback, delete), and performing one-shot backups (vzdump).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@proxmox-mcplist all guests with their CPU and memory usage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
proxmox-mcp
A small MCP server that exposes a Proxmox VE
node/cluster as tools any MCP client (Claude Code, Claude Desktop) can call —
so instead of hand-writing curl against the Proxmox REST API, the assistant
calls clean tools like list_guests or start_guest.
Scope: read, power control, limited reconfigure (CPU/memory), plus snapshots and one-shot backups. It can inspect everything, start/stop/shutdown/reboot guests, adjust a guest's cores/memory, and manage restore points and vzdump backups. It does not create or delete the guests themselves.
Tools
Tool | Effect |
| Nodes with status, CPU, memory (GB), uptime |
| All VMs ( |
| Detailed status of one guest |
| Full provisioning config: cores, memory (MB), disks/mounts, network |
| Live interfaces + IP addresses (LXC direct; QEMU needs guest agent) |
| Storage pools with real usage (GB, %) |
| What's on a storage pool: templates, ISOs, backups, disk images |
| Recent task log for a node |
| One task's status, exit status, and log tail (by UPID) |
| Start a stopped guest |
| Graceful shutdown (preferred) |
| Hard stop (pulls the cord) |
| Graceful reboot |
| Reconfigure CPU cores and/or memory |
| A guest's snapshots |
| Take a snapshot |
| Irreversible — roll back to a snapshot (typed-confirm) |
| Delete a snapshot |
| Backup archives on a storage (newest first) |
| Back up a guest now (vzdump) |
type is "qemu" (VM) or "lxc" (container). Use list_guests to find
vmid/node/type.
Related MCP server: proxmox-mcp
Example
Ask your assistant "which guests use the most memory, and is anything
stopped?" — it calls list_guests() and gets clean, ready-to-reason data:
[
{"vmid": 100, "name": "web", "node": "pve1", "type": "lxc", "status": "running", "cpu_pct": 0.4, "mem_used_gb": 0.21, "mem_max_gb": 1.0, "uptime_hours": 412.6},
{"vmid": 101, "name": "db", "node": "pve1", "type": "qemu", "status": "running", "cpu_pct": 3.1, "mem_used_gb": 6.84, "mem_max_gb": 8.0, "uptime_hours": 412.6},
{"vmid": 102, "name": "backups", "node": "pve2", "type": "lxc", "status": "stopped", "cpu_pct": 0.0, "mem_used_gb": 0.0, "mem_max_gb": 2.0, "uptime_hours": 0.0}
]From there it can start_guest("pve2", 102, "lxc") or set_guest_resources(...)
— each a single-purpose, confirmable action, not a freeform shell command.
Setup
Linux / macOS
git clone https://github.com/nrohozen/proxmox-mcp
cd proxmox-mcp
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
cp .env.example .env # then edit .env with your real valuesWindows (PowerShell)
git clone https://github.com/nrohozen/proxmox-mcp
cd proxmox-mcp
py -3.12 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
copy .env.example .env # then edit .env with your real valuesPrefer a package install?
pip install .exposes aproxmox-mcpconsole command; set thePROXMOX_*vars in the environment or a.envin the working directory.
Configuration (.env)
Config lives in a .env file next to server.py (gitignored). server.py
loads it automatically, so the MCP client config just launches the server — no
env block required. Copy .env.example to .env and set:
Var | Example | Notes |
|
| scheme + host (+ optional |
|
| API token id (see Security) |
|
| API token secret |
|
| set |
Proxmox's API is on
:8006with a self-signed certificate by default, soPROXMOX_VERIFY_TLS=falseis typical on a LAN. For stricter TLS, front the API with a reverse proxy holding a trusted cert and pointPROXMOX_BASE_URLthere.A variable set explicitly in the client's
envblock still overrides.env.
Register with Claude Code (CLI)
With config in .env, registration just points at the server — no -e flags.
Use absolute paths to the venv's Python and server.py.
Linux / macOS
claude mcp add proxmox -s user -- \
/path/to/proxmox-mcp/.venv/bin/python \
/path/to/proxmox-mcp/server.pyWindows (PowerShell)
claude mcp add proxmox -s user `
-- C:\path\to\proxmox-mcp\.venv\Scripts\python.exe `
C:\path\to\proxmox-mcp\server.py-s user makes it available in every project. Verify with claude mcp list.
Tools load in a new Claude Code session.
Register with Claude Desktop
Copy claude_desktop_config.example.json to
%APPDATA%\Claude\claude_desktop_config.json (it only points at server.py;
config comes from .env), then fully restart Claude Desktop. The Proxmox tools
appear under the 🔌 / tools menu.
Security
Use a dedicated, least-privilege token — never root@pam. This server needs
read, power, CPU/memory reconfigure, and snapshot/backup privileges. Create a
scoped token once, on a Proxmox node:
# a role with exactly the privileges this server uses
pveum role add ProxmoxMCP --privs "VM.Audit,VM.PowerMgmt,VM.Config.CPU,VM.Config.Memory,VM.Snapshot,VM.Snapshot.Rollback,VM.Backup,Sys.Audit,Datastore.Audit,Datastore.AllocateSpace"
# a dedicated, non-root user + API token
pveum user add mcp@pve
pveum aclmod / -user mcp@pve -role ProxmoxMCP
pveum user token add mcp@pve proxmox --privsep 0
# -> copy the printed token id (mcp@pve!proxmox) and value into .envA token scoped this way can power-manage, resize, snapshot, and back up guests
but cannot open a host shell, change node/network/firewall config, or create
users/tokens — so a leaked token can't own the hypervisor. (Datastore.AllocateSpace
is needed only for writing backups; drop it to make the token read-plus-power only.)
The token secret lives in
.envin plaintext (gitignored) — keep it private..env.example(no secret) is the committed template.MCP clients prompt before running a tool; that confirmation is the human guardrail on the power-control tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nrohozen/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server