ProxmoxMCP-Plus
ProxmoxMCP-Plus
Platform Overview
ProxmoxMCP-Plus provides a unified Proxmox VE control surface in two forms:
MCPfor Claude Desktop, Open WebUI, and other LLM or AI agent clientsOpenAPIfor HTTP automation, dashboards, internal tools, and no-code workflows
Instead of stitching together raw Proxmox API calls, shell scripts, and custom glue code, the project consolidates core operational workflows in one interface:
VM and LXC lifecycle actions
snapshot create, rollback, and delete
backup and restore workflows
ISO download and cleanup
node, storage, and cluster inspection
SSH-backed container command execution with guardrails
persistent job tracking for async Proxmox tasks
Related MCP server: mcp-proxmox
Design Priorities
ProxmoxMCP-Plus is designed for the gap between low-level Proxmox primitives and production-facing workflows that need to be usable from both LLM-native clients and standard automation systems.
Dual-surface architecture: MCP for conversational workflows, OpenAPI for standard automationOperator-oriented scope: focused on day-2 tasks, not just raw low-level endpointsSafer-by-default execution: auth, command policy, and explicit execution pathsObservable long-running workflows: stableJob IDs, progress polling, retry, cancel, and audit historyOperationally grounded: documented workflows are backed by live-environment verification
Quick Start
1. Prepare Proxmox access
Read the official Proxmox docs first if you are setting up a fresh lab:
At minimum, proxmox-config/config.json needs:
proxmox.hostproxmox.portauth.userauth.token_nameauth.token_value
Add 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.
Minimal job persistence config:
{
"jobs": {
"sqlite_path": "proxmox-jobs.sqlite3"
}
}2. Choose one runtime path
PyPI
uvx proxmox-mcp-plusOr install it first:
pip install proxmox-mcp-plus
proxmox-mcp-plusDocker / GHCR
docker run --rm -p 8811:8811 \
-v "$(pwd)/proxmox-config/config.json:/app/proxmox-config/config.json:ro" \
ghcr.io/rekklesna/proxmoxmcp-plus:latestSource
git clone https://github.com/RekklesNA/ProxmoxMCP-Plus.git
cd ProxmoxMCP-Plus
uv venv
uv pip install -e ".[dev]"
python main.py3. Run the HTTP/OpenAPI surface
docker compose up -d
curl -f http://localhost:8811/health
curl http://localhost:8811/openapi.json4. Point an MCP client at the server
Minimal MCP client shape:
{
"mcpServers": {
"proxmox-mcp-plus": {
"command": "python",
"args": ["/path/to/ProxmoxMCP-Plus/main.py"],
"env": {
"PROXMOX_MCP_CONFIG": "/path/to/ProxmoxMCP-Plus/proxmox-config/config.json"
}
}
}
}Client-specific examples for Claude Desktop and Open WebUI are in the Integrations Guide.
Demo
This demo is a direct terminal recording of qwen/qwen3.6-plus driving a live MCP session in English against a local Proxmox lab. It shows natural-language control flowing through MCP tools to create and start an LXC, execute a container command, and confirm the HTTP /health surface.

Core Platform Capabilities
ProxmoxMCP-Plus provides a unified control surface for the operational tasks most teams actually need in Proxmox VE. The same server can expose these workflows to MCP clients for LLM and AI-agent use cases, and to HTTP consumers through the OpenAPI bridge.
Supported workflow areas:
Capability Area | Availability |
VM create / start / stop / delete | Available |
VM snapshot create / rollback / delete | Available |
Backup create / restore | Available |
ISO download / delete | Available |
LXC create / start / stop / delete | Available |
Container SSH-backed command execution | Available |
Container authorized_keys update | Available |
Persistent job store for long tasks | Available |
MCP job control tools ( | Available |
OpenAPI | Available |
Local OpenAPI | Available |
Docker image build and | Available |
Validation and contract entry points in this repository:
pytest -qtests/integration/test_real_contract.pytests/scripts/run_real_e2e.py
tests/scripts/run_real_e2e.py now prefers proxmox-config/config.live.json or PROXMOX_MCP_E2E_CONFIG.
This avoids accidentally running live checks against a machine-specific default config.json.
Long-Running Jobs
Many Proxmox mutations are asynchronous. ProxmoxMCP-Plus now wraps those tasks in a persistent job layer so MCP and OpenAPI clients can track them through a stable Job ID.
Long-running tools such as VM create/start/stop, container create/start/stop, snapshot changes, backup/restore, and ISO download/delete now return both:
task_id: the raw ProxmoxUPIDjob_id: the stable server-side job record
The job record stores:
current status and progress
retry count and prior
UPIDslatest result payload or failure reason
audit history for create, poll, retry, and cancel actions
By default the job store persists to proxmox-jobs.sqlite3, so restart does not lose in-flight or completed job metadata.
MCP Job Tools
list_jobsget_jobpoll_jobcancel_jobretry_job
OpenAPI Job Routes
When the OpenAPI proxy is enabled and a local JobStore is available, these routes are exposed directly:
Path | Method | Purpose | Success Codes |
|
| list persisted jobs |
|
|
| fetch one job, optional |
|
|
| refresh status from Proxmox |
|
|
| request cancellation |
|
|
| replay a stored retry recipe |
|
Common error codes:
404: unknownjob_id409: the job exists but that operation is not valid now503: the OpenAPI proxy was started without a localJobStore
test_scripts/run_real_e2e.py now prefers proxmox-config/config.live.json or PROXMOX_MCP_E2E_CONFIG.
This avoids accidentally running live checks against a machine-specific default config.json.
Long-Running Jobs
Many Proxmox mutations are asynchronous. ProxmoxMCP-Plus now wraps those tasks in a persistent job layer so MCP and OpenAPI clients can track them through a stable Job ID.
Long-running tools such as VM create/start/stop, container create/start/stop, snapshot changes, backup/restore, and ISO download/delete now return both:
task_id: the raw ProxmoxUPIDjob_id: the stable server-side job record
The job record stores:
current status and progress
retry count and prior
UPIDslatest result payload or failure reason
audit history for create, poll, retry, and cancel actions
By default the job store persists to proxmox-jobs.sqlite3, so restart does not lose in-flight or completed job metadata.
MCP Job Tools
list_jobsget_jobpoll_jobcancel_jobretry_job
OpenAPI Job Routes
When the OpenAPI proxy is enabled and a local JobStore is available, these routes are exposed directly:
Path | Method | Purpose | Success Codes |
|
| list persisted jobs |
|
|
| fetch one job, optional |
|
|
| refresh status from Proxmox |
|
|
| request cancellation |
|
|
| replay a stored retry recipe |
|
Common error codes:
404: unknownjob_id409: the job exists but that operation is not valid now503: the OpenAPI proxy was started without a localJobStore
Positioning Against Common Approaches
Capability | Official Proxmox API | One-off scripts | ProxmoxMCP-Plus |
MCP for LLM and AI agent workflows | No | No | Yes |
OpenAPI surface for standard HTTP tooling | No | Usually no | Yes |
VM and LXC operations in one interface | Low-level only | Depends | Yes |
Snapshot, backup, and restore workflows | Low-level only | Depends | Yes |
Persistent async job tracking and retry | No | Rare | Yes |
Container command execution with policy controls | No | Custom only | Yes |
Docker distribution path | No | Rare | Yes |
Repository-level live-environment verification | N/A | Rare | Yes |
Scenario Templates
Ready-to-copy examples live in docs/examples/:
These are written for both human operators and LLM-driven usage.
Documentation
The README is intentionally optimized for fast GitHub comprehension. Longer operational docs live in docs/wiki/ and can also be published to the GitHub Wiki.
If you need to... | Start here |
Understand the project and deployment flow | |
Configure and run against a Proxmox environment | |
Connect Claude Desktop or Open WebUI | |
Install from MCP-aware IDEs and agents | |
Review security and command policy | |
Inspect tool parameters, prerequisites, and behavior | |
Debug startup, auth, or health issues | |
Work on the codebase or release it | |
Review release and upgrade notes |
Published wiki:
Repo Layout
src/proxmox_mcp/: MCP server, config loading, security, OpenAPI bridgemain.py: MCP entrypoint for local and client-driven usagedocker-compose.yml: HTTP/OpenAPI runtimerequirements/: auxiliary dependency sources and runtime install listsscripts/: helper startup scripts for local workflowstests/scripts/run_real_e2e.py: live Proxmox and Docker/OpenAPI pathtests/: unit and integration coveragedocs/examples/: scenario-driven prompts and HTTP examplesdocs/wiki/: longer-form operator, integration, and reference docs
Development Checks
pytest -q
ruff check .
mypy src tests main.py tests/scripts/run_real_e2e.py
python -m buildLicense
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnhanced MCP server for managing Proxmox virtualization platforms with complete VM lifecycle management, LXC container support, and OpenAPI integration. Enables natural language VM creation, power management, and comprehensive cluster monitoring through secure API access.1MIT
- AlicenseAqualityCmaintenanceMCP server for managing Proxmox VE clusters — provision VMs and containers, manage snapshots and backups, execute commands, browse storage, and monitor resources through natural language2513MIT
- Alicense-qualityDmaintenanceA Model Context Protocol (MCP) server for Proxmox Virtual Environment that enables AI assistants to manage virtual machines, containers, nodes, and resources through natural language interactions.3MIT
- AlicenseAqualityBmaintenanceAI-powered MCP server for managing Proxmox VE VMs and containers with built-in governance, audit logging, and reversibility.432MIT
Related MCP Connectors
Hosted MCP server to manage a restaurant menu from AI agents - 39 tools over the DuckHub API.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/RekklesNA/ProxmoxMCP-Plus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server