Proxmox VE MCP server for VMs, LXCs, snapshots, backups, storage, and cluster operations.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Operate Proxmox VE from MCP clients, AI agents, and OpenAPI tooling through one security-conscious control plane for VMs, LXCs, snapshots, backups, ISOs, container commands, and persistent long-running jobs.
Quick Start | Client Install | Demo | Tools | Safety | Scenarios | Docs | Wiki
ProxmoxMCP-Plus sits between AI clients and Proxmox VE so operators do not have to stitch together raw API calls, one-off shell scripts, and custom job polling for every workflow.
It exposes the same operational surface in two ways:
MCP for Claude Desktop, Cursor, VS Code, Open WebUI, Codex, and other MCP-capable agentsOpenAPI for HTTP automation, dashboards, internal tools, and no-code workflowsWhat you get:
| Priority | How the project handles it |
|---|---|
| Dual access paths | Native MCP for agent workflows and OpenAPI for standard HTTP automation |
| Proxmox-oriented workflows | Day-2 VM, LXC, snapshot, backup, ISO, storage, and cluster operations |
| Long-running operations | Stable job_ids, Proxmox UPID tracking, polling, retry, cancel, and audit history |
| Safer execution | Proxmox API tokens, OpenAPI bearer auth, command policy, approval tokens, TLS validation, and MCP HTTP Host/Origin controls |
| Real validation | Unit, integration, Docker/OpenAPI, and live Proxmox e2e entry points are documented in the repo |
Create a Proxmox API token with only the permissions your workflows need. Then create the local config file:
Then edit proxmox-config/config.json with your environment. At minimum, it needs:
proxmox.hostproxmox.portauth.userauth.token_nameauth.token_valueAdd an ssh section as well if you want container command execution.
Add a jobs section if you want job state persisted somewhere other than the default local SQLite file.
For real live verification, use a separate proxmox-config/config.live.json created from proxmox-config/config.live.example.json.
Do not point live e2e at a placeholder or local-only config.json unless you intentionally run a local API tunnel there.
Optional job persistence config:
Optional tool exposure filtering can reduce the schemas sent to MCP clients. It is
disabled by default, so existing configurations continue to expose every available
tool. Configure exactly one mode under mcp:
Alternatively, use tool_denylist, or the comma-separated environment variables
MCP_TOOL_ALLOWLIST and MCP_TOOL_DENYLIST. Do not configure both modes. Environment
selection replaces the file-level filtering mode. An empty allowlist exposes no tools;
an empty denylist hides none. Exact lowercase tool names are required, and unknown names
fail startup so a typo cannot silently widen access. Restart or reconnect the MCP server
after changing the filter.
| Path | Best for | Start command | Verify |
|---|---|---|---|
| MCP stdio from PyPI | Claude Desktop, Cursor, VS Code, Codex, local agents | uvx proxmox-mcp-plus | client lists get_nodes, get_vms, and job tools |
| Native MCP HTTP from Docker | remote MCP clients that support Streamable HTTP | docker compose --profile mcp-http up -d proxmox-mcp-http | connect to http://localhost:8000/mcp |
| OpenAPI bridge from Docker | HTTP clients, dashboards, scripts, no-code tools | docker compose up -d | curl -f http://localhost:8811/livez |
Or install it first:
Use this path when the MCP client launches a local stdio server.
Code Mode is disabled by default to preserve the legacy full tool catalog. Enable it
with mcp.code_mode: true in the config file or MCP_CODE_MODE=true. When enabled,
MCP exposes three tools instead: proxmox_code_search, proxmox_code_get_schema, and
proxmox_code_execute. Code execution runs in an isolated sandbox and reaches domain
tools through the existing validation, policy, and approval path. Discovery uses the
filtered runtime catalog, so it also works in installed wheels. For example:
The final expression is returned as data.result; tool results use MCP JSON content
blocks (and structured content where supplied). Use proxmox_code_get_schema for
arguments, including target and approval tokens. Scripts have no filesystem or
network access except registered tool calls. Limits: 64,000 source characters,
100 MB sandbox memory, 25 tool calls, 16 KB final JSON, and two concurrent executions.
Execution has a 30-second budget; cancelling or failing a script does not roll back
tool side effects. Do not automatically retry a failed mutation script.
Use this path when a remote MCP client supports Streamable HTTP:
Point MCP clients at:
Send Authorization: Bearer <MCP_API_KEY> with every native MCP HTTP request.
The key is independent of Proxmox credentials. Native Streamable HTTP and SSE
require a key by default. For an endpoint protected by an external access-control
layer such as Tailscale ACLs, explicitly set MCP_ALLOW_UNAUTHENTICATED_HTTP=true
or mcp.allow_unauthenticated_http: true in JSON configuration. This allows
keyless startup and logs a warning; it does not configure or verify the external
access controls. A configured MCP_API_KEY is always enforced, even with opt-out.
This setting does not change OpenAPI authentication or DNS rebinding protection.
When serving MCP HTTP behind a reverse proxy, keep DNS rebinding protection enabled and allow only the hostnames you expect:
OpenAPI mode is the default Docker runtime and requires an API key:
Verify the OpenAPI surface:
For local unauthenticated development only, set PROXMOX_ALLOW_NO_AUTH=true.
The 8811 service is the OpenAPI/REST bridge. The 8000 service is the native MCP HTTP endpoint.
Use the one-click buttons when your client supports MCP install deeplinks, or copy the JSON config below.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/proxmoxmcp-plus)<a href="https://allmcps.com/mcp/proxmoxmcp-plus"><img src="https://allmcps.com/api/badge/proxmoxmcp-plus?style=directory" alt="ProxmoxMCP Plus on AllMCPs" /></a>