drumfire-proxmox-mcp
Provides management of a Proxmox cluster, including inventory of nodes, VMs, and containers; power control; live configuration changes; creating, cloning, and snapshotting VMs/containers; cluster, network, and firewall visibility; running commands inside guests; and writing files to guest filesystems via the QEMU Guest Agent.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@drumfire-proxmox-mcplist all VMs on the cluster and their statuses"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
drumfire-proxmox-mcp
A remote MCP server that lets Claude manage the DRUMFIRE Proxmox cluster over chat — inventory, power control, live config changes, creating/cloning VMs and containers, snapshots, network/firewall/cluster visibility, running commands inside a guest, and pushing a file straight onto a VM's filesystem via the QEMU Guest Agent (used here to update the net worth calculator running on VM 107 with a fresh export from Firefly III).
It's a Cloudflare Worker, deployed the same way as the existing Firefly III MCP server: click the button, set a few secrets, add it to Claude as a custom connector.
What it deliberately does NOT do
There are no VM/container/disk/snapshot delete or snapshot rollback tools — not "ask before," just not present in the code, so they can't happen through this server even by mistake.
That said, read the security note below: because creating VMs/containers is in scope, the underlying Proxmox token technically can delete them too (Proxmox ties those permissions together) — the guarantee here is software-enforced (no such tool exists, and Claude is instructed to always ask before anything destructive), not a hard credential-level wall the way v1 of this server was. See "Security model" below.
Related MCP server: proxmox-mcp
Tools this server exposes
Tool | What it does |
| List cluster nodes and their status |
| List QEMU VMs / LXC containers on a node (or all nodes) |
| Status of one VM/container |
| Power management ( |
| Check the QEMU Guest Agent is alive inside a VM |
| Write text content to an absolute path inside any VM via the guest agent |
| Convenience wrapper around |
| Cluster/node health and quorum |
| A node's bridges/VLANs/bonds |
| Read-only firewall rules at datacenter/node/guest level |
| A VM's actual live IPs/interfaces, reported from inside the guest |
| Run a command inside a VM (e.g. |
| Next free VM/container ID |
| Change CPU/memory/network/disk-attach/etc config |
| Grow a disk (Proxmox only allows growing via this API, never shrinking) |
| Create a new VM / LXC container |
| Clone an existing VM or template |
| Create and list snapshots (no rollback/delete tool) |
Security model
Power/status/config/create/clone/snapshot-create tools: treated as "fair game" to run without asking first, per how you scoped this — nothing here is inherently destructive.
run_guest_command: runs whatever it's told inside the guest, equivalent to SSH/RDP access. Fine for diagnostics and routine changes; Claude is instructed to pause and confirm with you before anything that looks destructive or irreversible inside the guest.Nothing in this server deletes or rolls back a VM, container, disk, or snapshot. That's the actual backstop, not the Proxmox token's permissions — see the role below, which does grant
VM.Allocate(required for creation, and which Proxmox also uses for deletion — there's no way to split those at the permission level).
1. Create a scoped Proxmox API token
Don't reuse a root/admin token. In the Proxmox web UI:
Datacenter → Permissions → Roles → Create Name:
ClaudeHomelabOps. Privileges:VM.Audit,VM.Monitor,VM.PowerMgmt,Sys.Audit,VM.Allocate,VM.Clone,VM.Snapshot,VM.Config.CPU,VM.Config.Memory,VM.Config.Disk,VM.Config.Network,VM.Config.Options,VM.Config.HWType,VM.Config.CDROM,VM.Config.Cloudinit.Deliberately excludes
VM.Snapshot.Rollback(rollback discards current disk state — genuinely destructive) andVM.Backup/VM.Migrate/VM.Console(not needed for anything this server does). As covered above,VM.Allocateis required forcreate_vm/create_container/clone_vmand Proxmox also uses it for guest deletion — there's no finer-grained split available, so the "can't delete" guarantee here comes from this server simply not having a delete tool, not from the token's permissions.If you'd rather keep the harder credential-level guarantee day-to-day and only grant creation temporarily, you can instead create a second, more restricted token (this same role minus
VM.Allocate/VM.Config.*) and switch which secret this Worker uses when you actually want to create/reconfigure something — the tradeoff question earlier defaulted to one token for simplicity, but nothing here requires that.Datacenter → Permissions → Users → Add a dedicated user, e.g.
claude-agent@pve(no password needed, it'll only ever authenticate via API token).Datacenter → Permissions → Add → Path
/, Userclaude-agent@pve, RoleClaudeHomelabOps.Datacenter → Permissions → API Tokens → Add → User
claude-agent@pve, Token ID e.g.homelab-mcp. Leave "Privilege Separation" checked and grant the same/→ClaudeHomelabOpsACL to the token itself. Copy the Token ID (claude-agent@pve!homelab-mcp) and the secret (shown once) — you'll need both below.
2. Make sure the calculator VM's guest agent is enabled
The write_vm_file / update_networth_calculator tools need the QEMU Guest Agent
running inside VM 107 (VM-OnPremTest):
In the VM's Options tab in Proxmox, confirm "QEMU Guest Agent" is enabled.
Inside the Windows VM, install the guest agent service if it isn't already (it ships on the virtio-win ISO as
qemu-ga-x86_64.msi) and make sure the "QEMU Guest Agent" Windows service is running.Note which Windows user account the app's data folder lives under — the guest agent service runs as SYSTEM, so file writes need a full absolute path, e.g.
C:\Users\<username>\Documents\net-worth\data.json, not a relative one.
3. Deploy
(Push this repo to GitHub first, then replace REPLACE_WITH_THIS_REPO_URL above
with https://github.com/<you>/<repo> — GitHub doesn't let the button link to
itself before the repo exists.)
Clicking the button forks/connects the repo into Cloudflare Workers Builds and runs the deploy for you. It won't be usable yet, though — see step 4.
Manual deploy (alternative to the button)
npm install
npx wrangler secret put PROXMOX_TOKEN_ID
npx wrangler secret put PROXMOX_TOKEN_SECRET
npx wrangler secret put MCP_BEARER_TOKEN # any long random string you generate
npx wrangler deploy4. After deploying, set the secrets
Whether you used the button or the CLI, three secrets are required and are
intentionally not in this repo (they're not in wrangler.jsonc, which is fine to
be public):
Secret | Value |
|
|
| the token secret (from step 1) |
| any long random string you generate yourself, e.g. |
Set them in the Cloudflare dashboard under your Worker → Settings → Variables and
Secrets → Add → Encrypt, or via npx wrangler secret put <NAME>.
Also double check the plain (non-secret) variable NETWORTH_VM_PATH in
wrangler.jsonc — it ships with a placeholder
(C:\Users\CHANGE_ME\Documents\net-worth\data.json) that needs the real Windows
username from step 2. Edit it in the Cloudflare dashboard under the same
Variables and Secrets page (as a plaintext var, not a secret), or edit
wrangler.jsonc and redeploy.
5. Add it to Claude as a custom connector
In Claude's connector settings, add a custom connector pointing at:
https://<your-worker-subdomain>.workers.dev/mcpThis Worker checks every request for Authorization: Bearer <MCP_BEARER_TOKEN>
before doing anything — without it, every tool call gets a 401. If your Claude
connector setup lets you attach a custom header/API key, set that header there. If
it doesn't, the two options are:
Put a Cloudflare Access policy in front of the Worker's route instead (recommended — this is the standard way to lock down a personal MCP endpoint when the client can't send a custom header), or
As a lower-security fallback, delete the bearer-token check in
src/index.ts(fetch(), top of the function) and rely on the Worker's URL itself being unguessable. Not recommended for anything that can touch Proxmox.
6. Try it
Once connected, in a Claude chat: "list the VMs on drumfire03" or "what's the
status of VM 107" should return real data. For the net worth workflow, Claude
pulls data from Firefly III (already connected), builds the JSON the calculator
expects, and calls update_networth_calculator with that JSON as a string.
Once that's working, try the newer tools too — "check the cluster's health", "what's VM 107's actual IP right now", "clone VM-OnPremTest into a test copy", "bump that VM to 4 cores".
Note on permissions: Proxmox's exact privilege requirements for firewall-rule
and some network-read endpoints vary a bit by version, and the role above is a
best-effort mapping, not something tested against your specific Proxmox version. If
a tool call comes back with a 403, the error message includes Proxmox's actual
response — the fix is almost always adding one more privilege to ClaudeHomelabOps
(commonly just re-confirming Sys.Audit is applied at /, not just a sub-path).
This server cannot be installed
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
- AlicenseCqualityDmaintenanceEnables management of Proxmox VE infrastructure through natural language, providing 120+ tools to control virtual machines, containers, storage, cluster resources, users, and network configurations via the Proxmox API.10024MIT
- AlicenseAqualityCmaintenanceProvides tools to manage Proxmox VE clusters via Claude Code, enabling listing nodes, VMs, templates, power actions, and creation of LXC containers and VMs through the Proxmox REST API.1024MIT
- AlicenseBqualityCmaintenanceEnables Claude to manage Proxmox VE infrastructure — VMs, LXC containers, snapshots, storage, and more.372MIT
- AlicenseCqualityDmaintenanceEnables management of Proxmox VE environments, including VMs, containers, storage, and cluster operations through natural language.7648MIT
Related MCP Connectors
Read, edit, publish, and preview your pepita websites from Claude.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
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/Drumfire01/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server