Skip to main content
Glama

Proxmox MCP Server

A Model Context Protocol (MCP) server for managing Proxmox VE (Virtual Environment).

Features

  • Status Monitoring: Get status of nodes, storage, clusters, VMs, and containers

  • VM Management: Create, delete, start, stop, shutdown, restart VMs

  • Container Management: Create, delete, start, stop, shutdown, restart containers

  • Console Access: Access VM console via websocket or serial

  • ISO Management: Download, list, and manage ISO files

  • VM Guest Management: SSH, set IPs, manage users (requires Proxmox guest agent)

  • Maintenance: Get Proxmox version, check for updates, perform upgrades

  • Template Management: Create and manage VM/container templates

  • Backup and Restore: Create and restore backups for VMs and containers

  • HA Management: Enable/disable High Availability for VMs and containers

  • Migration: Migrate VMs and containers between nodes

  • Snapshots: Create and manage VM/container snapshots

  • Resource Pools: Manage resource pools and assign VMs to them

Related MCP server: Proxmox MCP Server

n8n Compatibility

This server supports both stdio and HTTP transports, making it compatible with n8n and other MCP clients.

HTTP Transport Mode (for n8n)

To use with n8n, set the HTTP_MODE environment variable to "true":

{
  "mcpServers": {
    "proxmox": {
      "command": "node",
      "args": ["/path/to/proxmox-mcp-server/build/index.js"],
      "env": {
        "PROXMOX_HOST": "YOUR_PROXMOX_HOSTNAME_OR_IP",
        "PROXMOX_USER": "YOUR_USERNAME@pam",
        "PROXMOX_PASSWORD": "YOUR_PASSWORD",
        "HTTP_MODE": "true",
        "HTTP_PORT": "3333"
      }
    }
  }
}

n8n will connect to http://localhost:3333/ for MCP communication.

Prerequisites

  • Node.js 18 or higher

  • Proxmox VE 7.x or higher

  • An account with appropriate permissions (e.g., PVEAuditor or PVEAdmin role)

Installation

1. Clone or navigate to the server directory

cd proxmox-mcp-server

2. Install dependencies

npm install

3. Build the server

npm run build

4. Configure environment variables

The server requires the following environment variables:

Variable

Description

Example

PROXMOX_HOST

Proxmox hostname or IP address

proxmox.example.com or 192.168.1.100

PROXMOX_USER

Proxmox username with full path

admin@pam or user@pve

PROXMOX_PASSWORD

Proxmox password

your_password

PROXMOX_PORT

(Optional) Proxmox API port (default: 8006)

8006

PROXMOX_VERIFY_SSL

(Optional) Verify SSL certificate (default: true)

true or false

5. Configure MCP settings

Add the server configuration to your MCP settings file:

For Roo Code (macOS/Linux): ~/.roo-code/settings/mcp_settings.json

For Roo Code (Windows): %APPDATA%\roo-code\settings\mcp_settings.json

For Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

For Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

Example configuration:

{
  "mcpServers": {
    "proxmox": {
      "command": "node",
      "args": ["/path/to/proxmox-mcp-server/build/index.js"],
      "env": {
        "PROXMOX_HOST": "proxmox.example.com",
        "PROXMOX_USER": "admin@pam",
        "PROXMOX_PASSWORD": "your_password"
      },
      "disabled": false,
      "alwaysAllow": [],
      "disabledTools": []
    }
  }
}

6. Restart your MCP client

Restart Roo Code or Claude Desktop to load the new MCP server configuration.

Usage

Once configured, you can use the Proxmox MCP server through your MCP client's interface. Available tools include:

Status Tools

  • get_node_status - Get status of Proxmox nodes

  • get_summary - Get summary of Proxmox node resources

  • get_storage_status - Get status of Proxmox storage

  • get_cluster_status - Get Proxmox cluster status

  • get_vm_status - Get status of Proxmox VMs

  • get_container_status - Get status of Proxmox containers

  • get_running_vms - Get all running VMs and containers on a node

VM Management

  • create_vm - Create a new VM with cloud-init, guest agent, and network interface configuration

  • delete_vm - Delete a VM

  • start_vm - Start a VM

  • stop_vm - Stop a VM

  • shutdown_vm - Shutdown a VM gracefully

  • restart_vm - Restart a VM

Container Management

  • create_container - Create a new container with OS configuration

  • delete_container - Delete a container

  • start_container - Start a container

  • stop_container - Stop a container

  • shutdown_container - Shutdown a container gracefully

  • restart_container - Restart a container

Console Access

  • vm_console - Access VM console (websocket or serial)

ISO Management

  • list_isos - List ISO files on a Proxmox node

  • download_iso - Download an ISO file to a Proxmox node

  • delete_iso - Delete an ISO file from a Proxmox node

  • get_iso_download_status - Get status of an ISO download task

Firewall Management

  • enable_vm_firewall - Enable firewall for a VM

  • disable_vm_firewall - Disable firewall for a VM

  • enable_container_firewall - Enable firewall for a container

  • disable_container_firewall - Disable firewall for a container

  • create_vm_firewall_rule - Create a firewall rule for a VM

  • create_container_firewall_rule - Create a firewall rule for a container

  • list_vm_firewall_rules - List firewall rules for a VM

  • list_container_firewall_rules - List firewall rules for a container

  • delete_vm_firewall_rule - Delete a firewall rule for a VM

  • delete_container_firewall_rule - Delete a firewall rule for a container

VM Guest Management (requires Proxmox Guest Agent)

  • ssh_to_vm - SSH into a VM using qm console

  • set_vm_ip - Set IP address for a VM

  • set_vm_hostname - Set hostname for a VM

  • create_vm_user - Create a new user in a VM

  • set_vm_user_password - Set password for an existing VM user

  • run_vm_command - Run a command in a VM

  • get_vm_interfaces - Get network interfaces from a VM

Maintenance

  • get_proxmox_version - Get Proxmox VE version

  • get_updates - Get available updates

  • upgrade_proxmox - Upgrade Proxmox VE

  • get_task_status - Get status of running tasks

Prerequisites for VM Guest Management

The create_vm tool enables the Proxmox Guest Agent when installGuestAgent is enabled (default: true). However, you still need to install the guest agent inside the VM:

  1. Install the Proxmox Guest Agent inside your VMs/containers

  2. For Linux VMs: apt install qemu-guest-agent or yum install qemu-guest-agent

  3. Ensure the guest agent service is running: systemctl enable --now qemu-guest-agent

Note: The VM is created in a stopped state. You need to start it manually after creation.

Network Interface Configuration

The create_vm tool supports multiple network interfaces with various configuration options:

Parameter

Description

Example

net0

Network interface 0

virtio=00:11:22:33:44:55,bridge=vmbr0

net1

Network interface 1

e1000=00:11:22:33:44:56,bridge=vmbr1

net2

Network interface 2

rtl8139=00:11:22:33:44:57,bridge=vmbr2

net3

Network interface 3

virtio=00:11:22:33:44:58,bridge=vmbr3

Network interface format: type=MAC_ADDRESS,bridge=BRIDGE_NAME

Supported NIC types: virtio, e1000, rtl8139, vmxnet3, ne2k_pci, pcnet

Cloud-init Configuration

The create_vm tool supports cloud-init for automated VM configuration:

Parameter

Description

Example

cloudinit

Enable cloud-init (default: true)

true

nameserver

DNS nameserver

8.8.8.8

searchdomain

Search domain

example.com

ipconfig

IP configuration

ip=192.168.1.100/24,gw=192.168.1.1

sshkeys

SSH public keys

ssh-rsa AAAA...

user

Username for cloud-init

ubuntu

password

Password for cloud-init user

your_password

ISO Management

To install an OS from an ISO file:

  1. Download the ISO:

{
  "method": "proxmox/download_iso",
  "params": {
    "node": "pve1",
    "storage": "local",
    "filename": "ubuntu-22.04.iso",
    "url": "https://releases.ubuntu.com/22.04/ubuntu-22.04.4-live-server-amd64.iso"
  }
}
  1. List ISOs to verify the download:

{
  "method": "proxmox/list_isos",
  "params": {
    "node": "pve1",
    "storage": "local"
  }
}
  1. Create a VM with the ISO as the boot device:

{
  "method": "proxmox/create_vm",
  "params": {
    "node": "pve1",
    "vmid": 100,
    "name": "ubuntu-server",
    "memory": 2048,
    "cores": 2,
    "disk": "virtio0: local:20",
    "ostype": "l26",
    "scsihw": "virtio-scsi-pci",
    "bootdisk": "virtio0",
    "net0": "virtio,bridge=vmbr0"
  }
}
  1. Attach the ISO to the VM (after creation):

{
  "method": "proxmox/create_vm",
  "params": {
    "node": "pve1",
    "vmid": 100,
    "name": "ubuntu-server",
    "memory": 2048,
    "cores": 2,
    "disk": "virtio0: local:20",
    "ostype": "l26",
    "scsihw": "virtio-scsi-pci",
    "bootdisk": "virtio0",
    "net0": "virtio,bridge=vmbr0",
    "ide2": "local:iso/ubuntu-22.04.iso,media=cdrom"
  }
}

Firewall Management

Enable firewall for a VM:

{
  "method": "proxmox/enable_vm_firewall",
  "params": {
    "node": "pve1",
    "vmid": 100
  }
}

Create a firewall rule:

{
  "method": "proxmox/create_vm_firewall_rule",
  "params": {
    "node": "pve1",
    "vmid": 100,
    "rule": "in,REJECT,22/tcp",
    "pos": 1
  }
}

List firewall rules:

{
  "method": "proxmox/list_vm_firewall_rules",
  "params": {
    "node": "pve1",
    "vmid": 100
  }
}

Development

Build

npm run build

Run directly (for testing)

PROXMOX_HOST=your-host PROXMOX_USER=your-user PROXMOX_PASSWORD=your-password npm start

License

MIT

Available Tools

76 tools
add_vm_to_poolB

Add a VM to a resource pool

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

create_containerC

Create a new container on Proxmox

Inputs: node (required), vmid (required), memory (required), hostname (required), +11 more.

create_container_backupC

Create a backup of a container

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

create_container_firewall_ruleB

Create a firewall rule for a container

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

create_container_snapshotC

Create a snapshot for a container

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

create_resource_poolC

Create a new resource pool

Inputs: poolid (required), comment.

create_template_from_containerC

Create a template from a container

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

create_template_from_vmC

Create a template from a VM

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

create_vmA

Create a new VM on Proxmox with optional cloud-init configuration

Inputs: node (required), vmid (required), memory (required), boot, +31 more.

create_vm_backupC

Create a backup of a VM

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

create_vm_firewall_ruleB

Create a firewall rule for a VM

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

create_vm_snapshotB

Create a snapshot for a VM

Inputs: node (required), vmid (required), snapshotname (required), memory, +2 more.

create_vm_userA

Create a new user in a VM (requires guest agent)

Inputs: node (required), vmid (required), username (required), shell, +3 more.

delete_backupD

Delete a backup

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

delete_containerB

Delete a container from Proxmox

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

delete_container_firewall_ruleC

Delete a firewall rule for a container

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

delete_container_snapshotB

Delete a container snapshot

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

delete_isoA

Delete an ISO file from a Proxmox node

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

delete_resource_poolB

Delete a resource pool

Inputs: poolid (required), force.

delete_templateB

Delete a template from Proxmox

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

delete_vmB

Delete a VM from Proxmox

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

delete_vm_firewall_ruleB

Delete a firewall rule for a VM

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

delete_vm_snapshotC

Delete a VM snapshot

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

disable_container_firewallB

Disable firewall for a container

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

disable_container_haB

Disable High Availability for a container

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

disable_vm_firewallB

Disable firewall for a VM

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

disable_vm_haC

Disable High Availability for a VM

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

download_isoB

Download an ISO file to a Proxmox node

Inputs: url (required), node (required), storage (required), filename (required).

enable_container_firewallB

Enable firewall for a container

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

enable_container_haB

Enable High Availability for a container

Inputs: node (required), vmid (required), group, state, +2 more.

enable_vm_firewallB

Enable firewall for a VM

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

enable_vm_haD

Enable High Availability for a VM

Inputs: node (required), vmid (required), group, state, +2 more.

get_cluster_statusB

Get Proxmox cluster status

Inputs: no named parameters.

get_container_statusC

Get status of Proxmox containers

Inputs: node, vmid.

get_ha_statusC

Get High Availability status

Inputs: node (required).

get_iso_download_statusC

Get status of an ISO download task

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

get_node_statusC

Get status of Proxmox nodes

Inputs: node.

get_proxmox_versionA

Get Proxmox VE version

Inputs: no named parameters.

get_resource_pool_statusB

Get status of a resource pool

Inputs: poolid (required).

get_running_vmsA

Get all running VMs and containers on a node

Inputs: node (required).

get_storage_statusB

Get status of Proxmox storage

Inputs: node, storage.

get_summaryC

Get summary of Proxmox node resources

Inputs: node (required).

get_task_statusC

Get status of a running task

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

get_updatesB

Get available updates for Proxmox

Inputs: node.

get_vm_interfacesA

Get network interfaces from a VM (requires guest agent)

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

get_vm_statusC

Get status of Proxmox VMs

Inputs: node, vmid.

list_backupsC

List available backups

Inputs: node (required), backupdir.

list_container_firewall_rulesA

List firewall rules for a container

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

list_container_snapshotsB

List snapshots for a container

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

list_isosB

List ISO files on a Proxmox node

Inputs: node (required), storage.

list_resource_poolsA

List all resource pools

Inputs: no named parameters.

list_templatesA

List templates on a Proxmox node

Inputs: node (required), type, storage.

list_vm_firewall_rulesA

List firewall rules for a VM

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

list_vm_snapshotsC

List snapshots for a VM

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

migrate_containerB

Migrate a container to another node

Inputs: node (required), vmid (required), target (required), stop, +4 more.

migrate_vmC

Migrate a VM to another node

Inputs: node (required), vmid (required), target (required), stop, +4 more.

remove_vm_from_poolA

Remove a VM from a resource pool

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

restart_containerB

Restart a container

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

restart_vmC

Restart a VM

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

restore_container_backupC

Restore a container from backup

Inputs: node (required), storage (required), backupfile (required), format, +4 more.

restore_container_snapshotC

Restore a container snapshot

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

restore_vm_backupB

Restore a VM from backup

Inputs: node (required), storage (required), backupfile (required), full, +5 more.

restore_vm_snapshotC

Restore a VM snapshot

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

run_vm_commandB

Run a command in a VM (requires guest agent)

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

set_vm_hostnameA

Set hostname for a VM (requires guest agent)

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

set_vm_ipB

Set IP address for a VM (requires guest agent)

Inputs: ip (required), node (required), vmid (required), interface (required), +2 more.

set_vm_user_passwordA

Set password for an existing VM user (requires guest agent)

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

shutdown_containerC

Shutdown a container gracefully

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

shutdown_vmC

Shutdown a VM gracefully

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

ssh_to_vmC

SSH into a VM using qm console

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

start_containerC

Start a container

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

start_vmC

Start a VM

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

stop_containerC

Stop a container

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

stop_vmC

Stop a VM

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

upgrade_proxmoxD

Upgrade Proxmox VE

Inputs: node (required), dist_upgrade.

vm_consoleC

Access VM console

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

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 76 tools

    Disambiguation4/5

    Most tools are clearly separated by resource type (VM vs container) and action (create, delete, start, etc.). Some minor overlap exists, such as get_vm_status vs get_running_vms, and ssh_to_vm vs vm_console, but descriptions help distinguish them.

    Naming Consistency5/5

    Tool names follow a consistent verb_noun pattern in snake_case (e.g., create_vm, delete_container, list_backups). Even compound names like create_template_from_vm or get_iso_download_status are structurally consistent.

    Tool Count2/5

    With 76 tools, the server is over-split, especially with many duplicated VM/container variants. While Proxmox is complex, the count exceeds the 'too many' threshold and would overwhelm agents.

    Completeness3/5

    The surface covers many lifecycles (VMs, containers, backups, snapshots, firewalls, HA, pools, ISO), but lacks update/edit operations for VM and container configurations. There is no get_vm_config or update_vm, leaving a significant CRUD gap.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      Enables 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.
      100
      25 npm
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables interaction with Proxmox VE for managing VMs, containers, storage, and cluster resources via natural language through the Model Context Protocol.
      73
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to manage Proxmox VE infrastructure, including VMs, containers, storage, and cluster operations via natural language.
      MIT