Skip to main content
Glama

mcp-proxmox

A comprehensive Model Context Protocol (MCP) server for Proxmox VE. Exposes 68 tools and 4 resources covering VMs, containers, storage, networking, clusters, HA, backups, firewall, access control, pools, and tasks.

Features

  • Nodes — list nodes, get node status

  • VMs (QEMU) — full CRUD, power management (start/stop/shutdown/reboot/suspend/resume/reset), clone, migrate, resize disks, snapshots, guest agent

  • Containers (LXC) — full CRUD, power management, snapshots

  • Storage — list storage, browse content, download ISOs/templates from URL

  • Networking — list/create/update/delete network interfaces

  • Cluster — cluster status and resource overview

  • High Availability — manage HA resources and groups

  • Backups — scheduled backup jobs and immediate vzdump

  • Firewall — cluster and node-level firewall rules

  • Access Control — list users, groups, roles, permissions (read-only)

  • Resource Pools — full CRUD for resource pools

  • Tasks — list and inspect task status

Related MCP server: Proxmox MCP Enhanced

Installation

npm install
npm run build

Configuration

Set the following environment variables:

Variable

Required

Default

Description

PROXMOX_HOST

Yes

—

Proxmox host (IP or hostname)

PROXMOX_PORT

No

8006

API port

PROXMOX_TOKEN_ID

Yes

—

API token ID (user@realm!tokenid)

PROXMOX_TOKEN_SECRET

Yes

—

API token secret (UUID)

PROXMOX_ALLOW_SELF_SIGNED_CERTS

No

true

Accept self-signed TLS certificates

Creating a Proxmox API Token

  1. Log into the Proxmox web UI

  2. Go to Datacenter → Permissions → API Tokens

  3. Click Add, select a user, give the token an ID, and uncheck Privilege Separation if you want the token to inherit the user's permissions

  4. Copy the token ID and secret

Usage with Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "proxmox": {
      "command": "node",
      "args": ["/path/to/mcp-proxmox/dist/index.js"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_ID": "root@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  }
}

Tools (68 total)

Nodes (2)

list_nodes, get_node_status

VMs (22)

list_vms, get_vm_status, get_vm_config, create_vm, update_vm_config, delete_vm, start_vm, stop_vm, shutdown_vm, reboot_vm, suspend_vm, resume_vm, reset_vm, clone_vm, migrate_vm, resize_vm_disk, list_vm_snapshots, create_vm_snapshot, delete_vm_snapshot, rollback_vm_snapshot, get_vm_agent_info, execute_vm_command

Containers (14)

list_containers, get_container_status, get_container_config, create_container, update_container_config, delete_container, start_container, stop_container, shutdown_container, reboot_container, list_container_snapshots, create_container_snapshot, delete_container_snapshot, rollback_container_snapshot

Storage (3)

list_storage, get_storage_content, download_url_to_storage

Network (4)

list_networks, create_network, update_network, delete_network

Cluster (2)

get_cluster_status, get_cluster_resources

High Availability (4)

list_ha_resources, create_ha_resource, delete_ha_resource, list_ha_groups

Backups (3)

list_backup_jobs, create_backup_job, run_backup

Firewall (3)

list_firewall_rules, create_firewall_rule, delete_firewall_rule

Access Control (4)

list_users, list_groups, list_roles, get_permissions

Pools (5)

list_pools, create_pool, get_pool, update_pool, delete_pool

Tasks (2)

list_tasks, get_task_status

Resources (4)

URI

Description

proxmox://nodes

List of all cluster nodes

proxmox://nodes/{node}/vms

VMs on a specific node

proxmox://nodes/{node}/containers

Containers on a specific node

proxmox://cluster/status

Cluster status

Development

npm run dev          # Watch mode
npm run build        # Compile TypeScript
npm start            # Run the server

Testing with MCP Inspector

PROXMOX_HOST=your-host PROXMOX_TOKEN_ID=user@realm!token PROXMOX_TOKEN_SECRET=secret \
  npx @modelcontextprotocol/inspector node dist/index.js

License

MIT

Available Tools

68 tools
clone_vmC

Clone a VM

Inputs: node (required), vmid (required), newid (required), full, +3 more.

create_backup_jobC

Create a scheduled backup job

Inputs: storage (required), schedule (required), mode, vmid, +3 more.

create_containerC

Create LXC container

Inputs: node (required), vmid (required), ostemplate (required), net0, +9 more.

create_container_snapshotC

Create a container snapshot

Inputs: node (required), vmid (required), snapname (required), description.

create_firewall_ruleB

Create a firewall rule

Inputs: type (required), action (required), dest, dport, +6 more.

create_ha_resourceC

Add a resource to HA management

Inputs: sid (required), group, state, max_restart, +1 more.

create_networkB

Create network interface

Inputs: node (required), type (required), iface (required), address, +4 more.

create_poolB

Create a resource pool

Inputs: poolid (required), comment.

create_vmC

Create a new VM

Inputs: node (required), vmid (required), boot, ide2, +9 more.

create_vm_snapshotC

Create a snapshot of a VM

Inputs: node (required), vmid (required), snapname (required), description.

delete_containerD
Destructive

Delete container

Inputs: node (required), vmid (required), force, purge.

delete_container_snapshotB
Destructive

Delete a container snapshot

Inputs: node (required), vmid (required), snapname (required).

delete_firewall_ruleC
Destructive

Delete a firewall rule

Inputs: pos (required), scope.

delete_ha_resourceB
Destructive

Remove resource from HA

Inputs: sid (required).

delete_networkC
Destructive

Delete network interface

Inputs: node (required), iface (required).

delete_poolB
Destructive

Delete a resource pool

Inputs: poolid (required).

delete_vmB
Destructive

Delete a VM

Inputs: node (required), vmid (required), purge, destroy-unreferenced-disks.

delete_vm_snapshotA
Destructive

Delete a snapshot of a VM

Inputs: node (required), vmid (required), snapname (required).

download_url_to_storageB

Download from URL to storage

Inputs: url (required), node (required), content (required), storage (required), +1 more.

execute_vm_commandC
Destructive

Execute command via QEMU guest agent

Inputs: node (required), vmid (required), command (required).

get_cluster_resourcesC
Read-only

Get all cluster resources

Inputs: type.

get_cluster_statusC
Read-only

Get cluster status

Inputs: no named parameters.

get_container_configC
Read-only

Get container config

Inputs: node (required), vmid (required).

get_container_statusC
Read-only

Get container status

Inputs: node (required), vmid (required).

get_node_statusA
Read-only

Get detailed status of a specific node

Inputs: node (required).

get_permissionsB
Read-only

Get permissions for a path

Inputs: path.

get_poolB
Read-only

Get pool details

Inputs: poolid (required).

get_storage_contentA
Read-only

List content of a storage

Inputs: node (required), storage (required), content.

get_task_statusA
Read-only

Get status of a specific task

Inputs: node (required), upid (required).

get_vm_agent_infoB
Read-only

Get QEMU guest agent info

Inputs: node (required), vmid (required).

get_vm_configC
Read-only

Get VM configuration

Inputs: node (required), vmid (required).

get_vm_statusA
Read-only

Get current status of a VM

Inputs: node (required), vmid (required).

list_backup_jobsB
Read-only

List scheduled backup jobs

Inputs: no named parameters.

list_containersB
Read-only

List LXC containers

Inputs: node.

list_container_snapshotsB
Read-only

List container snapshots

Inputs: node (required), vmid (required).

list_firewall_rulesC
Read-only

List firewall rules

Inputs: scope.

list_groupsB
Read-only

List groups

Inputs: no named parameters.

list_ha_groupsD
Read-only

List HA groups

Inputs: no named parameters.

list_ha_resourcesB
Read-only

List HA managed resources

Inputs: no named parameters.

list_networksC
Read-only

List network interfaces

Inputs: node (required), type.

list_nodesB
Read-only

List all nodes in the Proxmox cluster

Inputs: no named parameters.

list_poolsA
Read-only

List resource pools

Inputs: no named parameters.

list_rolesB
Read-only

List roles

Inputs: no named parameters.

list_storageD
Read-only

List storage

Inputs: node.

list_tasksC
Read-only

List recent tasks

Inputs: node (required), vmid, limit, start.

list_usersC
Read-only

List users

Inputs: enabled.

list_vmsA
Read-only

List all VMs across all nodes or on a specific node

Inputs: node.

list_vm_snapshotsB
Read-only

List all snapshots of a VM

Inputs: node (required), vmid (required).

migrate_vmB

Migrate a VM to another node

Inputs: node (required), vmid (required), target (required), online.

reboot_containerB

Reboot a container

Inputs: node (required), vmid (required).

reboot_vmC

Reboot a VM

Inputs: node (required), vmid (required).

reset_vmC

Reset a VM (immediate)

Inputs: node (required), vmid (required).

resize_vm_diskC

Resize a VM disk

Inputs: disk (required), node (required), size (required), vmid (required).

resume_vmA

Resume a suspended VM

Inputs: node (required), vmid (required).

rollback_container_snapshotB
Destructive

Rollback a container to a snapshot

Inputs: node (required), vmid (required), snapname (required).

rollback_vm_snapshotB
Destructive

Rollback a VM to a snapshot

Inputs: node (required), vmid (required), snapname (required).

run_backupC

Run an immediate backup (vzdump)

Inputs: node (required), vmid (required), storage (required), mode, +1 more.

shutdown_containerA

Gracefully shutdown a container

Inputs: node (required), vmid (required).

shutdown_vmA

Gracefully shutdown a VM

Inputs: node (required), vmid (required).

start_containerC

Start a container

Inputs: node (required), vmid (required).

start_vmC

Start a VM

Inputs: node (required), vmid (required).

stop_containerB

Stop a container (immediate)

Inputs: node (required), vmid (required).

stop_vmB

Stop a VM (immediate)

Inputs: node (required), vmid (required).

suspend_vmB

Suspend a VM

Inputs: node (required), vmid (required).

update_container_configB
Idempotent

Update container config

Inputs: node (required), vmid (required), swap, cores, +3 more.

update_networkC
Idempotent

Update network interface

Inputs: node (required), type (required), iface (required), address, +4 more.

update_poolA
Idempotent

Update pool (add/remove members)

Inputs: poolid (required), vms, delete, comment, +1 more.

update_vm_configB
Idempotent

Update VM configuration

Inputs: node (required), vmid (required), name, cores, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 68 tools

    Disambiguation5/5

    Each tool has a clear target resource (VM, container, network, etc.) and action, with descriptions that prevent confusion even among similar operations like reboot vs reset.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with underscores, using clear verbs (create, delete, list, get, update, etc.) and noun phrases.

    Tool Count3/5

    With 68 tools, the set is large but justified by the broad scope of Proxmox management; however, it exceeds the typical well-scoped range and may feel overwhelming.

    Completeness4/5

    Covers most lifecycle operations for VMs, containers, networking, HA, backups, and permissions, but lacks tools for user/role management beyond listing.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Minimal MCP server for Proxmox VE — 38 tools for nodes, VMs, LXC, storage, and snapshots. Read-only by default, single Docker image, multi-arch.
      38
      81 PyPI
      7
      MIT