proxmox-mcp-server
MCP server for managing Proxmox Virtual Environment VMs, containers, storage, and cluster resources
Install / Use
claude mcp add ry-ops -- npx -y github:ry-ops/proxmox-mcp-serverIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of proxmox-mcp-server
proxmox-mcp-server scores 84/100 on our quality scale, 2830th of 4,609 Development & Engineering skills we index.
Its MCP Server is 19 KB long, well organised into 16 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
It has 44 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 7 days ago, so proxmox-mcp-server is actively maintained.
- Our last check on 2026-08-13 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
proxmox-mcp-server compared with similar skills
All 4 of these similar skills score higher than proxmox-mcp-server; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| proxmox-mcp-server (this skill)by ry-ops | 84 | 44 | 7d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 103.3k | 1d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 102.9k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.9k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 66.3k | today | CLAUDE.md |
Frequently asked questions
- How do I install proxmox-mcp-server?
- Run
claude mcp add ry-ops -- npx -y github:ry-ops/proxmox-mcp-server. The install tabs above show the steps for each supported agent. - Which AI agents does proxmox-mcp-server work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is proxmox-mcp-server safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is proxmox-mcp-server still maintained?
- The repository was last updated 7 days ago, so proxmox-mcp-server is actively maintained.
Skill content
View source on GitHub✨ Highlights
- 🧰 The whole API, not a demo. 340 tools across 14 areas: nodes, QEMU VMs, LXC containers, storage and backup, cluster and HA, access control, firewall, disks, Ceph, ACME, SDN, notifications, pools and appliances.
- 🖥️ Inside your guests too. Run commands through the QEMU guest agent (
vm_agent_exec→vm_agent_exec_status) and read back the exit code and output. - 🔒 Look-but-don't-touch with one switch.
PROXMOX_READ_ONLY=truerefuses every write inside the server, and 149 read-only tools keep working. - 🔑 API tokens or passwords. Tokens are recommended; pair them with a
PVEAuditorrole for monitoring. - 🐳 Runs anywhere. Use
uvfrom a clone, or the multi-arch image onghcr.io. - 🤝 A2A-ready.
agent-card.jsonlists every tool in 14 skill categories, for agent-to-agent discovery. - 🛡️ Appliances.
deploy_fortigate_vmbuilds a FortiGate-VM from Fortinet's KVM image, with WAN/LAN NICs on the bridges and VLANs you choose.deploy_cloud_vmsbuilds cluster-ready VMs from a cloud image, with your SSH key and a static IP each, ready for k3s-mcp-server'screate_cluster.
<a id="talk"></a>
💬 Talk to your cluster
<p align="center"> <img src="docs/chat.svg" width="100%" alt="A chat runs df -h inside VM 120 via the QEMU guest agent and shows the disk usage; a side panel cycles through more questions and the tools that answer them."> </p>Once it's connected, just ask:
"Can you list all VMs in my Proxmox cluster?" "What's the status of VM 100 on node pve1?" "Create a snapshot called 'backup-2025' for VM 100 on pve1." "Show me the storage usage on all nodes." "List all running tasks in the cluster." "Clone VM 9000 to a new VM called web-02 and start it." "Run
df -hinside VM 120 using the guest agent and show me the output." "Make three Ubuntu VMs on pve1 at 192.168.1.181–183 with my SSH key, ready for a K3s cluster."
There are more worked examples in USAGE.md.
<a id="how"></a>
⚙️ How it works
<p align="center"> <img src="docs/how-it-works.svg" width="100%" alt="MCP clients talk to proxmox-mcp-server over stdio; the server calls the Proxmox VE API over HTTPS on port 8006. With read-only mode on, GET requests pass and POST, PUT and DELETE are refused inside the server."> </p>- Your MCP client (Claude Desktop, Claude Code, or anything that speaks MCP) starts the server and talks to it over stdio.
- The server (Python,
httpx, the MCP SDK) turns each tool call into a request to the Proxmox VE REST API over HTTPS on port 8006, authenticated with an API token or a password. - Read-only mode is checked in the server's HTTP client, so a refused write never leaves your machine.
<a id="tools"></a>
🧰 340 tools, 14 areas
<p align="center"> <img src="docs/tools.svg" width="100%" alt="A tile map of the 340 tools by API area: QEMU VMs 46, nodes 38, cluster and HA 37, access control 33, Ceph 33, firewall 31, LXC 28, notifications 23, disks 17, ACME 17, SDN 16, storage and backup 14, pools 5, appliances 2."> </p>| Area | Tools | Highlights |
|------|------:|------------|
| Nodes | 38 | Status, config, DNS/hosts/time, network interfaces, services, APT updates, syslog, power |
| QEMU VMs | 46 | Lifecycle, create/clone/delete, config, snapshots, migration, disk resize/move, RRD metrics, guest agent (vm_agent_exec, vm_agent_exec_status), VNC proxy |
| LXC containers | 28 | Lifecycle, create/clone/delete, config, snapshots, migration, resize |
| Storage & backup | 14 | Storage definitions, content and volumes, URL downloads, vzdump backup and restore |
| Cluster | 37 | Status, resources, options, log, tasks, HA resources/groups, replication, backup jobs |
| Access control | 33 | Users, API tokens, groups, roles, ACLs, realms |
| Firewall | 31 | Cluster and node rules, security groups, aliases, IP sets, macros, logs (per-VM and per-container rules are in the guest modules) |
| Disks | 17 | SMART, wipe, GPT init, LVM, LVM-thin, ZFS, directory storage |
| Ceph | 33 | Status, OSDs, monitors, managers, MDS, pools, flags, CRUSH |
| ACME & certificates | 17 | ACME accounts and plugins, node certificate ordering, custom certs |
| SDN | 16 | Zones, VNets, subnets, apply |
| Notifications | 23 | Gotify, sendmail, SMTP and webhook endpoints, matchers |
| Pools | 5 | Resource pool CRUD |
| Appliances | 2 | deploy_fortigate_vm: FortiGate-VM from Fortinet's KVM image, WAN/LAN NICs on chosen bridges and VLANs, sized for the free evaluation license. deploy_cloud_vms: VMs from a cloud image (e.g. Ubuntu's) with cloud-init user, SSH key and a static IP or DHCP each, disk grown and started |
Tool names follow the Proxmox API: list_*, get_*, create_*, update_*/set_*, delete_*, plus actions such as start_vm, migrate_container or apply_sdn. Each area is one module in proxmox_mcp/tools/. Your MCP client shows every tool with its full input schema, or you can list them all locally:
uv run python -c "from proxmox_mcp.server import ALL_TOOLS; print('\n'.join(sorted(t.name for t in ALL_TOOLS)))"
Handy recipes
| Task | Tools |
|------|-------|
| Inventory | list_nodes, get_cluster_resources, list_vms, list_containers, list_storage |
| VM lifecycle | start_vm, shutdown_vm, stop_vm, reboot_vm, create_vm, clone_vm, migrate_vm |
| Disk images | download_url_to_storage with content=import, then create_vm with scsi0=local-lvm:0,import-from=local:import/<image>, or import_vm_disk |
| Snapshots | create_vm_snapshot, list_vm_snapshots, rollback_vm_snapshot, delete_vm_snapshot |
| Monitoring | get_node_status, get_vm_status, get_vm_rrddata, get_node_storage_status |
| Tasks | list_cluster_tasks, list_node_tasks, get_task_status, get_task_log |
| Guest agent | vm_agent_exec (returns a PID), then vm_agent_exec_status for the exit code and output |
| Cluster nodes | download_url_to_storage for a cloud image with content=import, then deploy_cloud_vms; hand the IPs to k3s-mcp-server's create_cluster |
<a id="quick-start"></a>
🚀 Quick start
You need Python 3.10+ with uv, or Docker, and Proxmox VE 6.0 or later.
1. Make an API token. In the Proxmox UI, go to Datacenter → Permissions → API Tokens → Add. For full access, uncheck Privilege Separation so the token inherits your user's permissions. Copy the secret; you won't see it again. The full token ID looks like root@pam!automation.
2. Run the server with one of these:
<details open> <summary><b>uv, from a clone</b></summary>curl -LsSf https://astral.sh/uv/install.sh | sh # if you don't have uv
git clone https://github.com/ry-ops/proxmox-mcp-server && cd proxmox-mcp-server
./setup.sh # or: uv sync
export PROXMOX_HOST="192.168.1.100"
export PROXMOX_USER="root@pam"
export PROXMOX_TOKEN_NAME="automation"
export PROXMOX_TOKEN_VALUE="your-token-here"
./test-connection.sh # checks connection, auth and permissions
A .env file in the project directory is loaded automatically; see .env.example.
A multi-arch image is published to GitHub Container Registry on every push to main and for each release tag:
docker pull ghcr.io/ry-ops/proxmox-mcp-server:latest # or a version tag, e.g. :2.4.0
docker run -i --rm --env-file .env ghcr.io/ry-ops/proxmox-mcp-server:latest
MCP clients talk over stdio, so run the container interactively (-i). docker-compose.yaml does the same using your .env.
3. Connect your MCP client. For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%/Claude/claude_desktop_config.json on Windows:
{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/proxmox-mcp-server", "run", "proxmox-mcp-server"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_USER": "root@pam",
"PROXMOX_TOKEN_NAME": "automation",
"PROXMOX_TOKEN_VALUE": "your-token-value-here"
}
}
}
}
Use the absolute path to your clone.
</details> <details> <summary><b>uv + password</b></summary>{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/proxmox-mcp-server", "run", "proxmox-mcp-server"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_USER": "root@pam",
"PROXMOX_PASSWORD": "your-password-here"
}
}
}
}
</details>
<details>
<summary><b>Docker</b></summary>
{
"mcpServers": {
"proxmox": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "PROXMOX_HOST", "-e", "PROXMOX_USER", "-e", "PROXMOX_TOKEN_NAME", "-e", "PROXMOX_TOKEN_VALUE",
"ghcr.io/ry-ops/proxmox-mcp-server:latest"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_USER": "root@pam",
"PROXMOX_TOKEN_NAME": "automation",
"PROXMOX_TOKEN_VALUE": "your-token-value-here"
}
}
}
}
</details>
4. Restart your client completely (quit it, don't just close the window), and ask it to list your VMs. More detail in QUICKSTART.md and SETUP.md.
🔧 Configuration
| Variable | Required | Default | What it does |
|---|:---:|---|---|
| PROXMOX_HOST | ✅ | | Hostname or IP, without scheme or port (192.168.1.100, not https://192.168.1.100:8006) |
| PROXMOX_USER | ✅ | | e.g. root@pam, admin@pve |
| PROXMOX_TOKEN_NAME + PROXMOX_TOKEN_VALUE | one of | | API token auth (recommended) |
| PROXMOX_PASSWORD | one of | | Password auth |
| PROXMOX_PORT | | 8006 | API port |
| PROXMOX_VERIFY_SSL | | false | Verify the server's TLS certificate |
| PROXMOX_READ_ONLY | | false | Refuse every write; see below |
<a id="read-only"></a>
🔒 Read-only mode and security
PROXMOX_READ_ONLY=true makes the server look-but-don't-touch. Only GET requests are sent, and every create,
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
103.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
102.9kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
77.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
66.3kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
