ProxmoxMCP-Plus — Claude Code MCP server for Proxmox VE
Lets an agent drive Proxmox VE: VMs, LXCs, snapshots, backups, ISOs and cluster checks. Useful when hypervisor chores run through chat.
claude mcp add --env PROXMOX_MCP_CONFIG=<PROXMOX_MCP_CONFIG> --env PROXMOX_HOST=<PROXMOX_HOST> --env PROXMOX_USER=<PROXMOX_USER> --env PROXMOX_TOKEN_NAME=<PROXMOX_TOKEN_NAME> --env PROXMOX_TOKEN_VALUE=<PROXMOX_TOKEN_VALUE> --transport stdio proxmoxmcp-plus -- uvx proxmox-mcp-plusWhat ProxmoxMCP-Plus does
The server sits between an MCP client and Proxmox VE. Your agent gets tools for VM and LXC lifecycle, snapshot handling, backup and restore, ISO download and cleanup, plus node, storage and cluster inspection. Long-running Proxmox tasks are tracked with job_id and UPID: polling, retry, cancel, audit history. The same operations are exposed over OpenAPI for scripts and dashboards.
You need a Proxmox API token scoped to your workflows and a proxmox-config/config.json file with proxmox.host, proxmox.port, auth.user, auth.token_name, auth.token_value. Add an ssh section if you want commands inside containers. A bad token stops the server from starting, and an unknown tool name in the filter fails startup — a typo cannot quietly widen access.
Run it locally with uvx proxmox-mcp-plus. Docker profiles cover MCP HTTP and OpenAPI, with host ports published on 127.0.0.1 by default. Tool filtering stays off until you set tool_allowlist or tool_denylist; restart the server after changing it.
What it helps with
- spin up a VM or LXC and bring it to a working state
- roll back a snapshot before a risky upgrade
- run a backup and restore from it
- download an ISO and clear out old images
- execute a command inside a container over SSH
Example prompts for the agent
- List the nodes and VMs in the cluster
- Take a snapshot of VM 101 before the upgrade
- Back up container 204 and show me the job status
How to install ProxmoxMCP-Plus
Platform CLI
claude mcp add --env PROXMOX_MCP_CONFIG=<PROXMOX_MCP_CONFIG> --env PROXMOX_HOST=<PROXMOX_HOST> --env PROXMOX_USER=<PROXMOX_USER> --env PROXMOX_TOKEN_NAME=<PROXMOX_TOKEN_NAME> --env PROXMOX_TOKEN_VALUE=<PROXMOX_TOKEN_VALUE> --transport stdio proxmoxmcp-plus -- uvx proxmox-mcp-plusReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-mcp-plus <command>
Platform CLI
codex mcp add proxmoxmcp-plus --env PROXMOX_MCP_CONFIG=<PROXMOX_MCP_CONFIG> --env PROXMOX_HOST=<PROXMOX_HOST> --env PROXMOX_USER=<PROXMOX_USER> --env PROXMOX_TOKEN_NAME=<PROXMOX_TOKEN_NAME> --env PROXMOX_TOKEN_VALUE=<PROXMOX_TOKEN_VALUE> -- uvx proxmox-mcp-plusReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-mcp-plus <command>
Config file
{
"mcpServers": {
"proxmoxmcp-plus": {
"command": "uvx",
"args": [
"proxmox-mcp-plus"
],
"env": {
"PROXMOX_MCP_CONFIG": "<PROXMOX_MCP_CONFIG>",
"PROXMOX_HOST": "<PROXMOX_HOST>",
"PROXMOX_USER": "<PROXMOX_USER>",
"PROXMOX_TOKEN_NAME": "<PROXMOX_TOKEN_NAME>",
"PROXMOX_TOKEN_VALUE": "<PROXMOX_TOKEN_VALUE>"
}
}
}
}Replace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-mcp-plus <command>
Config file
{
"servers": {
"proxmoxmcp-plus": {
"type": "stdio",
"command": "uvx",
"args": [
"proxmox-mcp-plus"
],
"env": {
"PROXMOX_MCP_CONFIG": "<PROXMOX_MCP_CONFIG>",
"PROXMOX_HOST": "<PROXMOX_HOST>",
"PROXMOX_USER": "<PROXMOX_USER>",
"PROXMOX_TOKEN_NAME": "<PROXMOX_TOKEN_NAME>",
"PROXMOX_TOKEN_VALUE": "<PROXMOX_TOKEN_VALUE>"
}
}
}
}Replace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-mcp-plus <command>
Platform CLI
gemini mcp add -e PROXMOX_MCP_CONFIG=<PROXMOX_MCP_CONFIG> -e PROXMOX_HOST=<PROXMOX_HOST> -e PROXMOX_USER=<PROXMOX_USER> -e PROXMOX_TOKEN_NAME=<PROXMOX_TOKEN_NAME> -e PROXMOX_TOKEN_VALUE=<PROXMOX_TOKEN_VALUE> proxmoxmcp-plus uvx proxmox-mcp-plusReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-mcp-plus <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about ProxmoxMCP-Plus
How do I install ProxmoxMCP-Plus in Claude Code?
One command: `claude mcp add proxmox-mcp-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> -- uvx proxmox-mcp-plus`. Fill in your Proxmox host, user and token values.
What does ProxmoxMCP-Plus do?
It gives an agent Proxmox VE operations: VMs and LXCs, snapshots, backups, ISOs, node and storage inspection. Long tasks are tracked by job_id and UPID.
What does the server need to run?
A Proxmox API token with the permissions your workflows need, plus a proxmox-config/config.json file with host, port and token details. Add an ssh section for commands inside containers.