
ProxmoxMCP-Plus, a community MCP server for Proxmox VE
Lets your AI assistant check, create, start, snapshot and back up the VMs and containers on your Proxmox VE server.
ProxmoxMCP-Plus is a community server that connects Claude, Cursor, VS Code and other assistants to your Proxmox VE host through a Proxmox API token. You can ask it about nodes, storage and logs, or have it create, clone, start, stop and delete VMs and containers and manage snapshots and backups. Proxmox does not make its own MCP server, and this is the most starred community one. Before you connect it, decide how much it may change: the token you give it can delete real machines unless you limit it or use read-only mode.
Good for
- Homelab owners who want to ask Claude what is running and spin up test VMs by describing them
- Infrastructure admins who want snapshots, backups and restores done from chat with a job log
- People running local models with Ollama or Open WebUI who want them to manage Proxmox
- Teams that want a read-only view of nodes, storage and logs for troubleshooting
Works in
5 supported · 7 should work
Tap an app to see how to set it up and any known problems.
The setup guide includes a Claude Desktop example config; restart Claude and check the read-only tools show up. GitHub
Install with the one-click link in the README, or connect Cursor to the HTTP mode. GitHub
The one-click install link asks for your host, user and token. GitHub
The setup guide shows the command to add in Codex's config file. GitHub
Example OpenCode configs with an env file ship in the repo. GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install ProxmoxMCP-Plus MCP
Claude Code
- 1
Copy this prompt.
Add the ProxmoxMCP-Plus MCP server to Claude Code. Run this command: claude mcp add proxmoxmcp-plus -e PROXMOX_HOST=<PROXMOX_HOST> -e PROXMOX_USER=<PROXMOX_USER> -e PROXMOX_TOKEN_NAME=<PROXMOX_TOKEN_NAME> -e PROXMOX_TOKEN_VALUE=<PROXMOX_TOKEN_VALUE> -e PROXMOX_PORT=8006 -e PROXMOX_VERIFY_SSL=true -- uvx proxmox-mcp-plus Ask me for PROXMOX_HOST, PROXMOX_USER, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv, Python 3.11+, Proxmox API token.
Read-only mode: Point PROXMOX_MCP_CONFIG at a config.json whose target has "readonly": true. The server then refuses anything that would change a VM or container.
Create an API token in Proxmox under Datacenter, Permissions, API Tokens, and give it only the privileges you need. Use a dedicated user rather than root where you can.
Instead of putting the token in this config, you can set only PROXMOX_MCP_CONFIG to the path of a config.json. You need that file for read-only mode, approval rules, SSH command tools and several Proxmox targets.
Self-signed certificates are rejected unless you turn on development mode.
Built from the package data we hold. Not yet tested by us.
Tools
Lists every virtual machine with its status and resource use
Shows all VMs across your Proxmox cluster, whether each is running, and how much CPU and memory it uses.
Try: “Which VMs are running right now and how much memory is each using?”
Read ·
get_vmsLists your LXC containers, optionally on one node, with their status
Shows the LXC containers across the cluster or on one node, with status and optional resource stats.
Try: “List all containers on node pve1 and show which are stopped.”
Read ·
get_containersLists the nodes in your cluster with status, CPU and memory
Shows each Proxmox node, whether it is online, and its CPU and memory use.
Try: “Show me all my Proxmox nodes and how loaded they are.”
Read ·
get_nodesShows detailed status for one node
Gives detailed CPU, memory and status figures for a single Proxmox node.
Try: “How is node pve1 doing right now?”
Read ·
get_node_statusShows overall cluster health and quorum
Reports the health and configuration of the whole Proxmox cluster, including quorum.
Try: “Is my cluster healthy and does it have quorum?”
Read ·
get_cluster_statusLists storage pools with usage across the cluster
Shows every storage pool in the cluster, how full it is and how it is configured.
Try: “Which storage pools are almost full?”
Read ·
get_storageShows storage capacity on one node
Shows how much space each storage has on a specific node, optionally for one storage ID.
Try: “How much free space is left on local-lvm on pve2?”
Read ·
get_node_storageShows a VM's full hardware and boot settings
Returns a VM's configuration: CPU, memory, disks, network, BIOS and boot order.
Try: “Show me the config of VM 101.”
Read ·
get_vm_configShows a container's full configuration
Returns an LXC container's configuration, such as cores, memory, disks and network.
Try: “What are the network settings of container 200?”
Read ·
get_container_configFinds a running VM's IP addresses
Reads a running VM's network interfaces and IP addresses through the QEMU guest agent.
Try: “What IP did VM 105 get?”
Read ·
get_vm_ip_addressesFinds a running container's IP addresses
Returns the current IP addresses of a running LXC container.
Try: “What is the IP address of container 210?”
Read ·
get_container_ipLists the snapshots of a VM or container
Shows all snapshots taken of a given VM or container.
Try: “What snapshots exist for VM 101?”
Read ·
list_snapshotsLists backups, filtered by node, storage or VM
Shows the backups available across the cluster, optionally for one node, storage or VM ID.
Try: “When was VM 101 last backed up?”
Read ·
list_backupsLists ISO images you can install from
Shows the installer ISO images stored in your cluster, optionally on one node or storage.
Try: “Which ISOs do I have available?”
Read ·
list_isosLists OS templates for new containers
Shows the OS templates you can use to create LXC containers.
Try: “Which Debian container templates can I use?”
Read ·
list_templatesLists network bridges on a node
Shows the network bridges and VNets on a node that VMs and containers can attach to.
Try: “Which network bridges are on pve1?”
Read ·
list_bridgesFinds the next free VM or container ID
Returns the next unused ID in the cluster, handy before creating or cloning a machine.
Try: “What's the next free VM ID?”
Read ·
get_next_vmidReads a node's system log
Reads system log entries from a Proxmox node, with optional time range and service filter.
Try: “Show the last 100 syslog lines from pve1 about pveproxy.”
Read ·
get_node_syslogReads the log of a Proxmox task
Shows the output of a specific Proxmox task, such as a backup or VM start.
Try: “Why did the last backup task on pve1 fail?”
Read ·
get_task_logReads recent cluster-wide log entries
Shows the most recent log entries for the whole cluster.
Try: “What happened in the cluster in the last hour?”
Read ·
get_cluster_logReads a node's firewall log
Shows the host firewall log of a Proxmox node.
Try: “Show blocked connections in pve1's firewall log today.”
Read ·
get_node_firewall_logReads the firewall log of a VM or container
Shows the firewall log for a specific VM or container.
Try: “Show the firewall log for container 200.”
Read ·
get_guest_firewall_logShows CPU, I/O wait, memory, disk and network metrics for a node
Reads recent performance metrics for one node to help find what is slowing it down. It does not run commands.
Try: “Why is pve1 slow? Check its I/O wait and memory.”
Read ·
get_node_diagnosticsChecks a node's clock and timezone
Reads a node's time and timezone to spot clock drift that breaks Proxmox logins.
Try: “Is the clock on pve2 out of sync?”
Read ·
get_node_timeShows public cluster join details and fingerprints
Returns the public information needed to join a node to the cluster, without credentials.
Try: “Give me the join information for my cluster.”
Read ·
get_cluster_join_infoChecks whether a VM can be moved to another node
Assesses if a stopped VM can be migrated offline to another node, checking storage, bridges and HA. It moves nothing.
Try: “Can VM 110 be migrated to pve2?”
Read ·
preflight_vm_migrationChecks whether a container can be moved to another node
Assesses if a container can be migrated, checking storage, space, mounts, HA and backups. It moves nothing.
Try: “Check whether container 220 can move to pve3.”
Read ·
preflight_container_migrationCreates a new virtual machine
Creates a VM with the CPU, memory, disk, storage and network you specify, optionally booting from an ISO.
Try: “Create a VM called test-web with 2 CPUs, 4 GB RAM and a 32 GB disk on pve1.”
Write ·
create_vmCopies an existing VM or template into a new VM
Clones a VM or template, fully or linked, into a new VM ID, optionally on another node.
Try: “Clone template 9000 into a new VM 120 named k8s-node-1.”
Write ·
clone_vmCreates a new LXC container from a template
Creates a container from an OS template with the cores, memory, disk and network you choose.
Try: “Create a Debian 12 container with 1 core and 512 MB RAM on pve1.”
Write ·
create_containerStarts a virtual machine
Powers on a VM.
Try: “Start VM 105.”
Write ·
start_vmStarts one or more containers
Starts the LXC containers you name.
Try: “Start container 200 and 201.”
Write ·
start_containerShuts a VM down cleanly
Asks the VM's operating system to shut down gracefully.
Try: “Shut down VM 105 cleanly.”
Write ·
shutdown_vmForce-stops a virtual machine
Stops a VM immediately, like pulling the power. Use shutdown for a clean stop.
Try: “Force stop VM 105, it's frozen.”
Write ·
stop_vmStops one or more containers
Stops LXC containers, gracefully by default or by force.
Try: “Stop container 200.”
Write ·
stop_containerHard-restarts a virtual machine
Resets a VM, restarting it without a clean shutdown.
Try: “Reset VM 105.”
Write ·
reset_vmReboots one or more containers
Restarts the LXC containers you name.
Try: “Reboot container 210.”
Write ·
restart_containerChanges a VM's size, cloud-init, ISO, boot order or bridge
Updates an existing VM's memory, cores, cloud-init user and SSH keys, IP settings, ISO media, boot order or network bridge. Treated as high risk.
Try: “Give VM 120 8 GB of RAM and add my SSH key via cloud-init.”
Write ·
update_vm_configChanges a container's cores, memory, swap or disk size
Adjusts CPU, memory and swap, or grows a container's disk. Each disk call adds space again.
Try: “Give container 200 2 cores and grow its disk by 8 GB.”
Write ·
update_container_resourcesChanges a container's IP, gateway or bridge
Edits the network settings of a container's interface. This can cut its connection.
Try: “Set container 200 to IP 192.168.1.50/24 with gateway 192.168.1.1.”
Write ·
update_container_networkReplaces a VM's notes
Sets the description shown in the Notes field for a VM.
Try: “Set VM 105's notes to 'Nextcloud, owner: Sam'.”
Write ·
set_vm_descriptionReplaces a container's notes
Sets the description shown in the Notes field for a container.
Try: “Add a note to container 200 saying it runs Pi-hole.”
Write ·
set_container_descriptionTakes a snapshot of a VM or container
Saves the current state of a VM or container so you can roll back later.
Try: “Snapshot VM 101 as before-upgrade.”
Write ·
create_snapshotRolls a VM or container back to a snapshot
Restores a VM or container to an earlier snapshot, discarding changes since then.
Try: “Roll VM 101 back to before-upgrade.”
Write ·
rollback_snapshotBacks up a VM or container to storage
Creates a backup on the storage you choose. Stop or suspend modes can interrupt the guest.
Try: “Back up VM 101 to backup-nfs with zstd.”
Write ·
create_backupRestores a backup into a new VM or container
Restores a backup archive into a new ID; it does not overwrite the original.
Try: “Restore last night's backup of VM 101 as VM 151.”
Write ·
restore_backupDownloads an ISO image to Proxmox storage
Has Proxmox download an installer ISO from a URL into storage, optionally checking its checksum.
Try: “Download the Ubuntu 24.04 server ISO to local storage.”
Write ·
download_isoDownloads a container template from an HTTPS URL
Has Proxmox download an LXC template archive into template storage.
Try: “Download this Alpine container template to local.”
Write ·
download_templateAttaches an uploaded cloud image as a VM disk
Imports a disk image already in import storage into an empty disk slot on a stopped VM.
Try: “Import debian-12.qcow2 into VM 130's scsi1.”
Write ·
import_cloud_imageSets up a serial console on a stopped VM
Adds a serial socket and switches the VM's display to serial, for console access.
Try: “Enable a serial console on VM 130.”
Write ·
configure_vm_serial_consoleMoves a stopped VM to another node
Submits an offline migration of a stopped VM after checks and your explicit confirmations. High risk.
Try: “Migrate stopped VM 110 to pve2.”
Write ·
migrate_vmMoves a container to another node
Submits a container migration after fresh checks, with downtime confirmation for running containers. High risk.
Try: “Move container 220 to pve3, restart allowed.”
Write ·
migrate_containerDeletes a virtual machine completely
Removes a VM and its disks; purge also removes HA, backup job and replication references.
Try: “Delete VM 199, it was only a test.”
Delete ·
delete_vmDeletes one or more containers completely
Removes LXC containers and their disks.
Try: “Delete container 299.”
Delete ·
delete_containerDeletes a snapshot
Removes a snapshot from a VM or container.
Try: “Delete the before-upgrade snapshot on VM 101.”
Delete ·
delete_snapshotDeletes a backup file
Removes a backup volume from storage.
Try: “Delete the oldest backup of VM 101.”
Delete ·
delete_backupDeletes an ISO or template from storage
Removes an ISO image or template file from storage.
Try: “Delete the old Debian 11 ISO.”
Delete ·
delete_isoRuns a command inside a running VM
Runs a command in a VM through the QEMU guest agent, subject to your command policy.
Try: “Run 'df -h' inside VM 105.”
Runs code ·
execute_vm_commandRuns a shell command inside a running container
Runs a command in an LXC container over SSH to the Proxmox node. Only appears if you add SSH settings.
Try: “Run 'apt list --upgradable' in container 200.”
Runs code ·
execute_container_commandRuns an allowed command on a Proxmox host
Runs a command on a physical Proxmox node over SSH, only if you enable it and it matches your allowlist.
Try: “Run uptime on pve1.”
Runs code ·
execute_node_commandAdds or replaces root SSH keys in a container
Writes SSH authorized keys for root in a container, over SSH to the node. High risk.
Try: “Add my public key to container 200.”
Write ·
update_container_ssh_keysUsed by the assistant behind the scenes
Lists the Proxmox environments it is set up to manage
Shows configured Proxmox targets, their reachability and node names, without credentials.
Try: “Which Proxmox targets can you reach?”
Read ·
list_targetsLists tracked long-running jobs
Shows the background jobs, such as backups or VM creation, that it is tracking.
Try: “Which jobs are still running?”
Read ·
list_jobsShows the state of one tracked job
Returns the status, progress and result of a tracked job.
Try: “Is the backup job finished?”
Read ·
get_jobRefreshes a tracked job's status from Proxmox
Checks Proxmox for the latest progress of a tracked job.
Try: “Check on the VM clone job again.”
Read ·
poll_jobCancels a running job
Tries to cancel a long-running Proxmox task it is tracking.
Try: “Cancel the ISO download.”
Write ·
cancel_jobRetries a failed job
Runs a failed tracked job again with the same settings.
Try: “Retry the failed backup job.”
Write ·
retry_jobSettles a job whose outcome was uncertain
Records the real outcome of a job whose submission was uncertain, after you check Proxmox's task history.
Try: “Mark that uncertain migration job as not submitted.”
Write ·
reconcile_job
Read from the source code
Pros and cons
Good
- Covers the whole VM and container lifecycle, plus snapshots, backups, ISOs, storage and logs.
- Read-only mode per target, plus allow and deny lists to hide tools.
- Every tool is marked as read-only or risky, so your client can ask before risky calls.
- Long tasks get a job ID you can poll, retry or cancel.
- Runs locally with one command, or as a remote HTTP server with a key or sign-in.
- Actively maintained, with frequent releases and every reported issue closed.
- Free and MIT licensed.
Watch out
- Community project, not made by Proxmox.
- Approval checks for risky operations are off until you turn them on.
- The full tool set is large and costs context on small models.
- Read-only mode and approval rules need a config file, not just environment variables.
- Running commands inside containers needs SSH access to the Proxmox host.
- Needs Python 3.11 or later.
Permissions
high risk · 5 things to watch
High risk
The assistant can delete or roll back VMs, containers, snapshots and backups if your API token allows it. Use a token with only the privileges you need, and start in read-only mode.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can stop, delete and roll back VMs
With a broad token the assistant can delete VMs, containers, snapshots and backups or force-stop guests. Give it a token limited to what you need, or use read-only mode. github.com
Approval checks are off by default
Risky operations are only logged unless you switch the high-risk policy to enforce and set an approval token. Do that before using it on machines you care about. github.com
SSH command tools reach the Proxmox host
Container and node command tools appear only if you add SSH settings, and their command filter is not a sandbox. Leave SSH out unless you need it. github.com
The examples use the root account
The sample config uses root@pam. Create a separate Proxmox user and token with only the privileges you need. github.com
The HTTP mode needs a key
The Docker HTTP mode will not start without a key and listens only on your own machine unless you change it. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Define a named target in config.json with "readonly": true and point PROXMOX_MCP_CONFIG at the file; every mutating tool is then rejected. Pair it with an API token that only has audit privileges, and optionally hide tools with MCP_TOOL_ALLOWLIST or mcp.tool_allowlist. |
|---|---|
| Talks to | Your Proxmox VE API. Your Proxmox node over SSH (only if you add SSH settings) |
| Sign-in and keys | Proxmox API token in environment variables in your client config, or in a local config.json. |
Alternatives
Use ProxmoxMCP-Plus for day-to-day VM and container work with read-only and approval controls. Pick Proximo if you also run Proxmox Backup Server or Mail Gateway, and Servosity if you only want read-only reports.
| Server | Official | Runs | Can change things | GitHub stars |
|---|---|---|---|---|
| ProxmoxMCP-PlusThis page | Community | Local | Yes | 630 |
| proxmox-mcp | Community | Local | – | 226 |
| Proximo | Community | Local | – | 64 |
| Proxmox VE MCP Server | Community | Local | – | 26 |
| Servosity Proxmox | Community | Local | No | – |
What people say
People like how fast the maintainer responds and mostly asked for ways to load fewer tools, which now exist.
What people like
- The maintainer fixes reported bugs quickly, such as four Windows bugs fixed and released the next day.
- Feature requests like a tool allowlist and resource pools were added within weeks.
- People run it with local models, including Ollama and Open WebUI on a Jetson Orin Nano.
Common complaints
- With every tool loaded it uses a lot of tokens, which hurts on small local models.
- The HTTP mode demanded a key even behind Tailscale until an opt-out was added.
In their words
“In an effort to reduce tokens on my LOCAL LLMs, I learned that JUST the fact of having MCP tools (enabled), not even USING them, but simply that they exist causes a significant amount of tokens (each added up).”DAE51DGitHub issueJul 2026
“An opt-in allowlist is backward-compatible and solves more than token cost. It reduces the action surface the model can even see.”Keesan12
Questions
Is there an official Proxmox MCP server?
No. Proxmox does not publish one. ProxmoxMCP-Plus is a community project and the most starred Proxmox server.
Is ProxmoxMCP-Plus free?
Yes. It is open source under the MIT license and runs on your own machine or server.
Can I make it read-only?
Yes. Mark your Proxmox target as read-only in the config file, and the server rejects anything that would change a VM or container. Give it a token that can only read as well.
What permissions should the API token have?
Only what you plan to let the assistant do. Create a separate Proxmox user instead of using root, and add privileges such as VM.Audit for viewing or VM.Migrate for migrations only when you need them.
Can it delete my VMs?
Yes, if your token allows it. It can delete VMs, containers, snapshots and backups, so use read-only mode or a limited token until you trust it.
Can it run commands inside a VM or container?
Yes. VMs need the QEMU Guest Agent installed. Containers need SSH access to the Proxmox host, which you have to set up separately.
Does it work with a self-signed certificate?
Not by default. It refuses to start with certificate checks turned off unless you enable development mode, so add a trusted certificate to Proxmox instead.
How do I stop it from using so much context?
List only the tools you want in an allowlist, or turn on Code Mode, which swaps the full set for three tools.
Can I use it from a remote assistant or local model?
Yes. Run the Docker HTTP mode with a key and point your client at its address. A community guide runs it with Ollama and Open WebUI.
How do I add it to Claude Desktop or Cursor?
Use the steps in the install box above. You will need your Proxmox host, user, token name and token secret.
Examples
Create and start a container, then run a command inside it
SourceSnapshot a VM before a risky change and roll it back if it breaks
Take a snapshot of VM 105 called pre-upgrade, then roll back to it if the upgrade fails.
Download an installer ISO and create a container from a template
SourceClone a cloud-init template into a new VM and get its IP address
Clone template 9000 into a new VM with 4 GB of RAM, start it and tell me its IP.
Run a local chat assistant on a Jetson Orin Nano that manages Proxmox
Source
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
proxmox-mcp-plus- Registry
- PyPI
- Transport
- stdio, Streamable HTTP
- Auth
- token in env
- Version
- 0.6.8
- License
- MIT
- Last commit
- Oct 29, 2026
- Open issues
- 0
- Listed in
- Official MCP registry
Other Proxmox MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 13Hide
- github.com · github.com
- Client Setup · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- pypi.org · pypi.org