On this page
The most used Proxmox MCP server is
ProxmoxMCP-Plus. Run it
with uvx proxmox-mcp-plus and point it at your Proxmox host with an API
token. It can create, stop and delete VMs, so give it its own token with the
smallest role that works. TrustedMCP grades it B.
Which Proxmox MCP server?
Search "proxmox mcp" or "proxmox-mcp" and you will see a few projects. None of them is made by Proxmox.
- ProxmoxMCP-Plus (
RekklesNA/ProxmoxMCP-Plus): Python, MIT, about 640 GitHub stars, on PyPI asproxmox-mcp-plusand on GHCR as a Docker image. v0.6.9 shipped on 2026-11-04. This is the one we graded. - ProxmoxMCP (
canvrno/ProxmoxMCP): the earlier, smaller server. Its last push was in February 2025. - Others, such as
GethosTheWalrus/proxmox-mcp, are newer and smaller. We haven't graded them yet.
ProxmoxMCP-Plus covers what most homelabs need: VMs and LXC containers
(create, start, stop, migrate, delete), snapshots and rollback, backups and
restore, ISO and template downloads, storage and cluster status, and logs.
Long Proxmox tasks come back with a job_id you can poll, retry or cancel.
Step 1: Make a Proxmox API token just for MCP
Don't hand the server your root@pam password or a full-power token. The
server can do anything its token can, so the token is your real safety
setting. On a Proxmox node shell, using the commands from the
Proxmox user management docs:
# a separate user for the agent
pveum user add mcp@pve -comment "MCP agent"
# a token with privilege separation (the default), so it gets only the ACLs you give it
pveum user token add mcp@pve agent -privsep 1
# start read-only: PVEAuditor can see everything and change nothing
pveum acl modify / -user mcp@pve -role PVEAuditor
pveum acl modify / -token 'mcp@pve!agent' -role PVEAuditor
The token secret is shown once. Copy it now.
Why both lines? A privilege-separated token gets only what both the user and the token have. In Proxmox's words, "its effective permissions are calculated by intersecting user and token permissions." So when you raise a role later, raise it for the user and the token on the same path.
When you are ready to let the agent do more, add a bigger role on a smaller path instead of making the token stronger everywhere:
| You want the agent to | Give the user and the token | On |
|---|---|---|
| Look around only | PVEAuditor ("read only access") |
/ |
| Start, stop and back up existing guests | PVEVMUser |
/vms, or one resource pool |
| Create and delete guests | PVEVMAdmin |
one resource pool such as /pool/lab |
Proxmox describes PVEVMUser as able to view, back up, change CD-ROM settings,
use the console and manage VM power, and PVEVMAdmin as able to fully
administer VMs. If you create guests inside a pool with the pool option,
ProxmoxMCP-Plus's tool reference says pool-scoped tokens also need
Pool.Allocate on that pool.
Two more Proxmox features worth using:
- Expiry:
pveum user token addtakes--expire <unix-time>, so a token you forget about stops working on its own. - Revoke:
pveum user token remove mcp@pve agentkills the token without touching the user.
Check what the token can really do with
pveum user token permissions mcp@pve agent.
Step 2: Install and connect ProxmoxMCP-Plus
It needs Python 3.11 or later. The README's recommended setup runs it with
uvx. For Claude Desktop, Cursor and other JSON-config clients:
{
"mcpServers": {
"proxmox-mcp-plus": {
"command": "uvx",
"args": ["proxmox-mcp-plus"],
"env": {
"PROXMOX_HOST": "your-proxmox-host",
"PROXMOX_USER": "mcp@pve",
"PROXMOX_TOKEN_NAME": "agent",
"PROXMOX_TOKEN_VALUE": "your-token-secret",
"PROXMOX_PORT": "8006",
"PROXMOX_VERIFY_SSL": "true"
}
}
}
}
That is the README's snippet with the mcp@pve user from step 1 in place of
its root@pam example. The README also offers a version that keeps the token
out of your client config: set only PROXMOX_MCP_CONFIG to the path of a
config.json file (copied from proxmox-config/config.example.json). We
recommend that one, because client config files tend to end up in backups and
dotfile repos. (More on this in
where MCP API keys should live.)
Claude Code has no snippet in the README, but the same command works with
claude mcp add:
claude mcp add proxmox --env PROXMOX_MCP_CONFIG=/path/to/config.json -- uvx proxmox-mcp-plus
Then run /mcp and ask for get_nodes to check it connects. Our
Claude Code MCP setup guide explains the
--env and -- parts.
The self-signed certificate catch
Homelab Proxmox hosts usually have a self-signed certificate, and
ProxmoxMCP-Plus checks TLS by default. Setting verify_ssl to false is
refused unless you also turn on dev mode. Don't. Instead, either make the
machine that runs the server trust your Proxmox CA (Proxmox says to copy
/etc/pve/pve-root-ca.pem from a node "out of band"), or give Proxmox a real
certificate with its built-in ACME (Let's Encrypt) support. Both are in the
Proxmox certificate docs.
Step 3: Lock down the risky tools
ProxmoxMCP-Plus has good guardrails, but most of them are off until you turn
them on. In the config.json file:
- Make deletes and rollbacks need your OK. A list of "high-risk"
operations (
delete_vm,delete_container,rollback_snapshot,restore_backup,migrate_vm,update_vm_configand more) is only logged by default (high_risk_mode: "audit_only"). To require an approval token that you hand the agent when you mean it, set"high_risk_require_approval_token": trueand a long random"high_risk_approval_token"undercommand_policy. - Hide tools you don't use.
mcp.tool_allowlist(orMCP_TOOL_ALLOWLIST) shows the model only the tools you list, for example["get_nodes", "get_vms", "get_containers", "get_storage"]. A typo stops startup instead of quietly exposing more. See why fewer tools is safer and cheaper. - Leave command execution blocked.
execute_vm_command(through the QEMU guest agent) runs commands inside a guest. The defaultcommand_policymode isdeny_all, which blocks every command that doesn't match anallow_patternsentry. The SSH-based container and node command tools don't even appear unless you add ansshsection. - Mark a host read-only. With the
targetsconfig you can list several Proxmox hosts and set"readonly": trueon any of them. The server then refuses changes there even if the token could make them.
The Proxmox role is still the real limit. These settings sit on top of it, not in place of it.
Running it over HTTP
For a remote client, the Docker image serves MCP over Streamable HTTP on
127.0.0.1:8000 and won't start without an MCP_API_KEY (sent as a Bearer
token), unless you opt out on purpose. There is an optional OAuth sign-in that
stores its state in PostgreSQL. The server itself speaks plain HTTP, so if you
reach it from another machine, put it behind an HTTPS reverse proxy or a
private network such as Tailscale. Never expose port 8000, the OpenAPI
bridge on 8811 or your Proxmox web UI to the open internet.
Is the Proxmox MCP server safe? Our grade
TrustedMCP grades the ProxmoxMCP-Plus listing B (see how we score servers):
- Auth (lost points): one Proxmox API token per host, scoped only as far as
you scope it in Proxmox. The README example uses
root@pam, and high-risk actions are only logged by default. This is the biggest deduction. - Maintenance (full marks): v0.6.9 on 2026-11-04, with commits from six people in the last 60 days and dependency updates handled through Dependabot.
- Known CVEs (full marks): no GitHub, PyPI or OSV advisories for the server. A CVE in its SSH library (paramiko, CVE-2026-44405) was dealt with by requiring paramiko 5.
- Transport (lost points): stdio by default, and the Docker HTTP mode binds to localhost and needs a key, but it has no built-in TLS. Command execution is opt-in and blocked by default.
Why not lower? We found no advisories and real safety work: forced TLS checks, a deny-all command policy, opt-in SSH and a required key for HTTP. Why not an A? A stolen or over-powered token can wipe VMs, and the approval gate is off until you set it.
Our advice for a homelab: a dedicated mcp@pve token with privilege
separation, PVEAuditor until you need more, a pool for anything the agent
creates, approval tokens on, and snapshots before you let it change a guest.
Keep tool approval on in your client too. For more, see
MCP security best practices.
Running Proxmox at work and want an MCP server with your own approval rules and audit trail built in? Tell us about it.
Frequently asked questions
Is there an official Proxmox MCP server?
No. Proxmox doesn't publish one. ProxmoxMCP-Plus is a community project (MIT license) and the most used one, with about 640 GitHub stars. It talks to the normal Proxmox VE API with an API token.
How do I add the Proxmox MCP server to Claude Code?
Put your Proxmox host and token in a config.json file, then run
claude mcp add proxmox --env PROXMOX_MCP_CONFIG=/path/to/config.json -- uvx proxmox-mcp-plus.
Run /mcp to check it is connected.
What permissions does the Proxmox API token need?
As few as you can manage. Start with PVEAuditor on / to only read. Add
PVEVMUser to start, stop and back up guests, and PVEVMAdmin on a resource
pool to let it create and delete guests only in that pool. Use a token with
privilege separation, and give the same roles to both the user and the token,
because the token only gets what both have.
Which Proxmox MCP server should I use?
ProxmoxMCP-Plus is the one we graded (B) and the most used, with about 640
GitHub stars and a release on 2026-11-04 (v0.6.9). canvrno/ProxmoxMCP is the
earlier, smaller server and its last push was in February 2025.
GethosTheWalrus/proxmox-mcp and others are newer and smaller, and we haven't
graded them. See the ProxmoxMCP-Plus listing.
Is the Proxmox MCP server safe to use?
It is a B on our scale. We found no advisories and it has real guardrails
(forced TLS checks, a deny-all command policy, a required key for HTTP mode),
but high-risk actions like deletes are only logged until you turn on
high_risk_require_approval_token. Use a dedicated, privilege-separated token
as in step 1. More in MCP security best practices.
Why does it fail with a TLS or certificate error?
ProxmoxMCP-Plus checks the Proxmox certificate and won't let you turn that off
outside dev mode. Trust your Proxmox CA (/etc/pve/pve-root-ca.pem) on the
machine running the server, or give Proxmox a Let's Encrypt certificate with
its ACME support. Also check the hostname in your config matches the
certificate.
Can the AI delete my VMs?
Yes, if the token allows it. delete_vm, delete_container and
rollback_snapshot are tools the model can call. Stop that in Proxmox (no
PVEVMAdmin role, or only on a test pool), and turn on
high_risk_require_approval_token so deletes need a token you give it.