Skip to main content
Glama

mcp-proxmox

MCP server for managing Proxmox VE clusters through AI assistants like Claude, Cursor, and Cline.

Provision, manage, and monitor your entire Proxmox infrastructure through natural language. Create VMs and containers, manage snapshots, browse storage, and more.

Quick Start

# Run directly with uvx (no install needed)
uvx mcp-proxmox

# Or install with pip
pip install mcp-proxmox

Related MCP server: pve-mcp

Configuration

Set these environment variables (or create a .env file):

PROXMOX_HOST=192.168.1.100          # Your Proxmox VE host
PROXMOX_TOKEN_ID=user@pam!mcp       # API token ID
PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  # API token secret

Optional:

PROXMOX_PORT=8006                   # Default: 8006
PROXMOX_VERIFY_SSL=false            # Default: false

Creating a Proxmox API Token

  1. Log into your Proxmox web UI

  2. Go to Datacenter > Permissions > API Tokens

  3. Click Add and create a token for your user

  4. Uncheck "Privilege Separation" for full access, or assign specific permissions:

    • VM.Audit — read VM/CT status and config

    • VM.PowerMgmt — start/stop/shutdown/reboot

    • VM.Snapshot — create/rollback/delete snapshots

    • VM.Allocate — create/delete/clone VMs and containers

    • VM.Clone — clone operations

    • Datastore.Audit — list storages and browse content

    • Datastore.AllocateSpace — allocate disk space for new VMs/CTs

    • Sys.Audit — read node status and tasks

    • VM.Config.Disk — resize disks

    • VM.Config.CPU — change CPU allocation

    • VM.Config.Memory — change memory allocation

    • VM.Monitor — access QEMU monitor (for metrics)

    • VM.Console — console interaction tools (screenshots, keyboard input)

    • VM.Migrate — migrate VMs/CTs between nodes

    • Sys.Modify — manage firewall rules

    • VM.Config.Cloudinit — configure cloud-init parameters

Integration

Claude Desktop

Add to ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": ["mcp-proxmox"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_ID": "user@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}

Claude Code

Add to .claude/settings.json or ~/.claude/settings.json:

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": ["mcp-proxmox"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_ID": "user@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}

Cursor

Add to Cursor Settings > MCP with the same configuration as above.

Available Tools

Discovery

Tool

Description

list_nodes

List all cluster nodes with CPU, memory, and uptime

get_node_status

Detailed node info: CPU model, memory, disk, versions

list_vms

List QEMU VMs (filter by node or status)

list_containers

List LXC containers (filter by node or status)

get_guest_status

Detailed VM/CT status by VMID (auto-detects type and node)

Lifecycle

Tool

Description

start_guest

Start a stopped VM or container

stop_guest

Force-stop (requires confirmation)

shutdown_guest

Graceful ACPI/init shutdown

reboot_guest

Reboot (requires confirmation)

Storage

Tool

Description

list_storages

List storage pools with capacity and usage (filter by node)

list_storage_content

Browse ISOs, templates, backups, and disk images

Provisioning

Tool

Description

create_vm

Create a QEMU VM with configurable CPU, memory, disk, ISO, and network

create_container

Create an LXC container from a template

clone_guest

Clone a VM or CT (full or linked clone, cross-node support)

delete_guest

Permanently delete a stopped VM or CT (requires confirmation)

Backup & Restore

Tool

Description

list_backups

List backup files (filter by node, storage, or VMID)

create_backup

Create a vzdump backup (snapshot/suspend/stop modes, zstd/lzo/gzip)

restore_backup

Restore a VM or CT from a backup file (requires confirmation)

Command Execution

Tool

Description

exec_command

Run a command inside a QEMU VM via guest agent

Note: exec_command requires qemu-guest-agent installed and running inside the VM. Not supported for LXC containers (Proxmox API limitation).

Console Interaction

Tool

Description

vm_screenshot

Capture a PNG screenshot of a QEMU VM's display (login prompt, boot messages, installer, GUI)

vm_send_key

Send a key or combination to a VM console (requires confirmation)

vm_send_text

Type ASCII text into a VM console (US layout; requires confirmation)

Note: Console tools do not require qemu-guest-agent and need only the VM.Console privilege. vm_screenshot opens the same VNC websocket tunnel the Proxmox web UI uses (RFB 3.8 with DES-based VNC auth) and is implemented in pure stdlib (custom WebSocket client + DES). Only QEMU VMs are supported. Text entry is layout-dependent: vm_send_text maps ASCII to a US keyboard layout (Shift-mapping for uppercase and symbols); non-ASCII input (e.g. Cyrillic) is not supported by the sendkey protocol.

Snapshots

Tool

Description

list_snapshots

List all snapshots for a VM/CT

create_snapshot

Create a new snapshot

rollback_snapshot

Rollback to a snapshot (requires confirmation)

delete_snapshot

Delete a snapshot (requires confirmation)

Network

Tool

Description

list_networks

List bridges, bonds, and physical interfaces on a node

Resize

Tool

Description

resize_guest

Resize CPU, memory, and/or disk of a VM or container (requires confirmation)

Monitoring

Tool

Description

get_guest_metrics

CPU, memory, network, disk I/O over time

list_tasks

Recent tasks on a node (backups, migrations, etc.)

Firewall

Tool

Description

list_firewall_rules

List firewall rules for a VM/CT, node, or the cluster

add_firewall_rule

Add a firewall rule (action, direction, protocol, port, source/dest)

delete_firewall_rule

Delete a firewall rule by position (requires confirmation)

Migration

Tool

Description

migrate_guest

Live or offline migrate a VM/CT to another node (requires confirmation)

Templates & Cloud-init

Tool

Description

list_templates

List all VM templates available for cloning

create_template

Convert a stopped VM into a template (requires confirmation, irreversible)

configure_cloud_init

Set user, password, SSH keys, IP config, and DNS on a VM

Safety

Destructive operations (stop_guest, reboot_guest, rollback_snapshot, delete_snapshot, delete_guest, resize_guest, restore_backup, delete_firewall_rule, migrate_guest, create_template) require explicit confirm=true. The first call returns a warning describing the impact; only a second call with confirmation executes the action.

Examples

Once connected, you can ask your AI assistant:

  • "List all my VMs and their status"

  • "How much memory is VM 100 using?"

  • "Shut down container 105"

  • "Create a snapshot of VM 200 called before-upgrade"

  • "Show me the CPU usage of VM 100 over the last day"

  • "What tasks ran on node pve recently?"

  • "Which VMs are stopped?"

  • "What storage pools do I have and how full are they?"

  • "Show me available ISO images"

  • "Create a new Ubuntu VM with 4 cores and 8GB RAM"

  • "Clone VM 100 as a test environment"

  • "Create a Debian container from template"

  • "Delete the old test VM 999"

  • "Back up VM 100 to the zfs-backup-storage"

  • "Show me all backups for VM 200"

  • "Restore the latest backup of container 101"

  • "Run 'df -h' on VM 100"

  • "Check if nginx is running on VM 200"

  • "Take a screenshot of VM 100 so I can see the console"

  • "The VM is stuck at a login prompt — type 'root' and press Enter"

  • "Show me the network bridges on node pve"

  • "Give VM 100 more CPU — bump it to 8 cores"

  • "Add 50GB of disk to container 101"

  • "Show me the firewall rules on VM 100"

  • "Allow TCP port 443 on container 101"

  • "Migrate VM 200 to node pve2"

  • "List all templates in the cluster"

  • "Convert VM 102 into a template"

  • "Set cloud-init on VM 100: user admin, IP dhcp, DNS 8.8.8.8"

Troubleshooting

Missing required environment variables

This error means one or more required connection settings are not available to the server process. Copy .env.example to .env, then set PROXMOX_HOST, PROXMOX_TOKEN_ID, and PROXMOX_TOKEN_SECRET. If you configure an MCP client directly, make sure the same variables are present in that client's env block.

403 Permission check failed

A 403 usually means the API token is valid but does not have enough Proxmox privileges for the requested operation. Revisit Creating a Proxmox API Token and either uncheck "Privilege Separation" for full access or assign the specific privileges listed there, such as VM.Audit, VM.PowerMgmt, VM.Snapshot, or storage permissions for datastore operations.

exec_command fails for guest-agent or LXC reasons

exec_command only works for QEMU VMs with qemu-guest-agent installed and running inside the guest. If the tool reports that the QEMU guest agent is not responding, start or install the agent in the VM and retry. LXC containers are not supported by this Proxmox API path, so use another container access method instead.

ModuleNotFoundError: No module named 'mcp.server.fastmcp'

The MCP Python SDK 2.0 removed the mcp.server.fastmcp module that mcp-proxmox 1.2.1 and earlier import. Fresh installs (uvx mcp-proxmox, uv tool install, pip install) resolved mcp 2.x and failed on startup — in Claude Desktop this only shows up as "Server disconnected". Upgrade to mcp-proxmox 1.2.2 or later, which pins mcp<2. If you must stay on an older mcp-proxmox, constrain the SDK yourself: uvx --with "mcp<2" mcp-proxmox.

Self-signed certificate or connection errors

Proxmox commonly runs on port 8006, so check that PROXMOX_HOST and PROXMOX_PORT point to the same endpoint you use for the Proxmox web UI. For homelab clusters with self-signed certificates, leave PROXMOX_VERIFY_SSL=false or set it explicitly. Use PROXMOX_VERIFY_SSL=true only when the Proxmox certificate chains to a CA trusted by your runtime.

Development

git clone https://github.com/felhen-ai/mcp-proxmox.git
cd mcp-proxmox
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check src/ tests/
ruff format src/ tests/

# Type check
mypy src/

License

MIT

Repository and registry compatibility

The canonical repository is https://github.com/felhen-ai/mcp-proxmox. Existing GitHub clone and issue URLs redirect to this repository. Do not recreate a repository at the old address, which would remove those redirects.

The canonical MCP Registry identifier is io.github.felhen-ai/mcp-proxmox. The legacy identifier io.github.antonio-mello-ai/mcp-proxmox remains supported with a separate server.legacy.json manifest. Both identifiers install the same mcp-proxmox package from PyPI, and the package name and CLI command remain unchanged. Keep both ownership markers in this README so future releases can be registered under either identifier.

New Docker publications use ghcr.io/felhen-ai/mcp-proxmox. Existing images and tags at ghcr.io/antonio-mello-ai/mcp-proxmox are retained for compatibility; they are not deleted or silently replaced. The legacy Glama badge above remains a discovery link until that directory migrates its entry.

Available Tools

37 tools
add_firewall_ruleA

Add a firewall rule to a VM/CT, node, or cluster.

Args: action: Rule action: 'ACCEPT', 'DROP', or 'REJECT'. type_: Rule direction: 'in' (incoming) or 'out' (outgoing). vmid: Optional. Add rule to this VM/container. node: Optional. Add rule to this node. Ignored if vmid is provided. proto: Optional. Protocol: 'tcp', 'udp', 'icmp', etc. dport: Optional. Destination port or range (e.g. '80', '8000-9000', '80,443'). sport: Optional. Source port or range. source: Optional. Source IP/CIDR (e.g. '192.168.1.0/24'). dest: Optional. Destination IP/CIDR. iface: Optional. Network interface (e.g. 'net0'). enable: Enable rule immediately (default true). comment: Optional description for the rule. pos: Optional position in the rule chain (0 = first). If neither vmid nor node is provided, adds a cluster-level rule.

Inputs: type_ (required), action (required), pos, dest, +9 more. Returns: result

clone_guestA

Clone an existing VM or container. Auto-detects type and node.

Creates a full (independent) clone by default. Set full_clone=false for a linked clone.

Args: vmid: Source VM/container VMID to clone. new_name: Optional name for the clone. target_node: Optional target node for the clone (for cross-node cloning). full_clone: Full clone (true, default) or linked clone (false). target_storage: Optional target storage for the clone's disks. new_vmid: Optional VMID for the clone. Auto-assigned if not provided.

Inputs: vmid (required), new_name, new_vmid, full_clone, +2 more. Returns: result

configure_cloud_initA

Configure cloud-init settings on a VM for automated provisioning.

At least one parameter must be provided. Changes take effect on next boot.

Args: vmid: The numeric ID of the VM. user: Default user name for cloud-init. password: Password for the default user. ssh_keys: SSH public keys (URL-encoded, newline-separated for multiple keys). ip_config: IP configuration string (e.g. 'ip=dhcp' or 'ip=10.0.0.5/24,gw=10.0.0.1'). nameserver: DNS server IP(s), space-separated. searchdomain: DNS search domain(s), space-separated.

Inputs: vmid (required), user, password, ssh_keys, +3 more. Returns: result

create_backupA

Create a backup (vzdump) of a VM or container.

Args: vmid: The numeric ID of the VM or container to back up. storage_name: Target storage for the backup (default 'local'). mode: Backup mode: 'snapshot' (no downtime, default), 'suspend', or 'stop'. compress: Compression: 'zstd' (default), 'lzo', 'gzip', or '0' (none). notes: Optional notes/description for the backup.

Inputs: vmid (required), mode, notes, compress, +1 more. Returns: result

create_containerA

Create a new LXC container from a template.

Args: node: Target node name (e.g. 'pve'). name: Container hostname. template: Template volume ID (e.g. 'local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst'). Use list_storage_content with content_type='vztmpl' to find available templates. cores: Number of CPU cores (default 1). memory: Memory in MB (default 512). disk_size: Root disk size in GB (default 8). storage_pool: Storage for rootfs (default 'local-lvm'). net_bridge: Network bridge (default 'vmbr0'). password: Optional root password. ssh_public_keys: Optional SSH public keys for root access. start_after_create: Start container after creation (default false). vmid: Optional specific VMID. Auto-assigned if not provided.

Inputs: name (required), node (required), template (required), vmid, +8 more. Returns: result

create_snapshotC

Create a new snapshot for a VM or container.

Args: vmid: The numeric ID of the VM or container. name: Snapshot name (alphanumeric, hyphens, underscores). description: Optional description for the snapshot.

Inputs: name (required), vmid (required), description. Returns: result

create_templateA

Convert a stopped VM into a template. IRREVERSIBLE.

Once converted, the VM can no longer be started — it can only be cloned.

Args: vmid: The numeric ID of the VM to convert. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), confirm. Returns: result

create_vmA

Create a new QEMU virtual machine.

The VM is created stopped by default. Use start_after_create=true to auto-start.

Args: node: Target node name (e.g. 'pve'). name: VM name. cores: Number of CPU cores (default 1). memory: Memory in MB (default 2048). disk_size: Disk size with unit (default '32G'). Examples: '10G', '100G', '1T'. storage_pool: Storage for disk (default 'local-lvm'). iso: Optional ISO volume ID for installation (e.g. 'local:iso/ubuntu-24.04.iso'). os_type: OS type (default 'l26' for Linux). Options: l26, l24, win11, win10, other. net_bridge: Network bridge (default 'vmbr0'). start_after_create: Start VM after creation (default false). vmid: Optional specific VMID. Auto-assigned if not provided.

Inputs: name (required), node (required), iso, vmid, +7 more. Returns: result

delete_firewall_ruleA

Delete a firewall rule by its position number.

Use list_firewall_rules first to see rule positions.

Args: pos: Position of the rule to delete (from list_firewall_rules output). vmid: Optional. Delete from this VM/container's rules. node: Optional. Delete from this node's rules. Ignored if vmid is provided. confirm: Must be true to execute. First call without confirm shows a warning. If neither vmid nor node is provided, deletes from cluster-level rules.

Inputs: pos (required), node, vmid, confirm. Returns: result

delete_guestA

Permanently delete a VM or container. IRREVERSIBLE.

The guest must be stopped before deletion. All disk images will be destroyed.

Args: vmid: The numeric ID of the VM or container to delete. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), confirm. Returns: result

delete_snapshotA

Delete a snapshot from a VM or container.

Args: vmid: The numeric ID of the VM or container. name: Name of the snapshot to delete. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: name (required), vmid (required), confirm. Returns: result

exec_commandA

Execute a command inside a QEMU VM via the guest agent.

Requires qemu-guest-agent to be installed and running inside the VM. Not supported for LXC containers.

Args: vmid: The numeric ID of the VM. command: The command to execute (e.g. 'hostname', 'df -h', 'systemctl status nginx'). timeout: Max seconds to wait for command completion (default 30, max 300).

Inputs: vmid (required), command (required), timeout. Returns: result

get_guest_metricsB

Get resource usage metrics (CPU, memory, network, disk I/O) for a VM or container.

Args: vmid: The numeric ID of the VM or container. timeframe: Time range for metrics. Options: 'hour', 'day', 'week', 'month', 'year'.

Inputs: vmid (required), timeframe. Returns: result

get_guest_statusB

Get detailed status of a VM or container by VMID. Auto-detects type and node.

Args: vmid: The numeric ID of the VM or container (e.g. 100, 200).

Inputs: vmid (required). Returns: result

get_node_statusA

Get detailed status for a specific node including CPU model, memory, disk, and versions.

Args: node: Name of the Proxmox node (e.g. 'pve', 'node1').

Inputs: node (required). Returns: result

list_backupsC

List backup files across storages.

Args: node: Optional. Filter by node name. storage_name: Optional. Filter by storage name. vmid: Optional. Filter by VMID to see backups of a specific guest.

Inputs: node, vmid, storage_name. Returns: result

list_containersB

List all LXC containers across the cluster.

Args: node: Optional. Filter by node name. status: Optional. Filter by status ('running', 'stopped').

Inputs: node, status. Returns: result

list_firewall_rulesA

List firewall rules. Can target a specific VM/CT, a node, or the cluster.

Args: vmid: Optional. List rules for this VM/container. node: Optional. List rules for this node. Ignored if vmid is provided. If neither vmid nor node is provided, lists cluster-level rules.

Inputs: node, vmid. Returns: result

list_networksB

List network interfaces, bridges, and bonds on a Proxmox node.

Args: node: Name of the Proxmox node (e.g. 'pve').

Inputs: node (required). Returns: result

list_nodesA

List all nodes in the Proxmox cluster with status, CPU, memory, and uptime.

Inputs: no named parameters. Returns: result

list_snapshotsC

List all snapshots for a VM or container.

Args: vmid: The numeric ID of the VM or container.

Inputs: vmid (required). Returns: result

list_storage_contentA

List content of a storage pool (ISOs, templates, backups, disk images).

Args: node: Name of the Proxmox node. storage_name: Name of the storage pool (e.g. 'local', 'local-lvm'). content_type: Optional. Filter by type: 'iso', 'vztmpl', 'backup', 'images', 'rootdir'.

Inputs: node (required), storage_name (required), content_type. Returns: result

list_storagesB

List storage pools across the cluster with capacity and usage info.

Args: node: Optional. Filter by node name.

Inputs: node. Returns: result

list_tasksB

List recent tasks on a Proxmox node (backups, migrations, snapshots, etc.).

Args: node: Name of the Proxmox node. limit: Maximum number of tasks to return (default 20, max 100). status: Optional. Filter by task status ('ok', 'error', 'running').

Inputs: node (required), limit, status. Returns: result

list_templatesA

List all VM templates available in the cluster for cloning.

Inputs: no named parameters. Returns: result

list_vmsA

List all QEMU virtual machines across the cluster.

Args: node: Optional. Filter by node name. status: Optional. Filter by status ('running', 'stopped').

Inputs: node, status. Returns: result

migrate_guestA

Live migrate a VM or container to another node in the cluster.

Args: vmid: The numeric ID of the VM or container to migrate. target_node: Name of the destination node (e.g. 'pve2'). online: Live migration (true, default) or offline (false). Online keeps the guest running. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), target_node (required), online, confirm. Returns: result

reboot_guestA

Reboot a running VM or container.

Args: vmid: The numeric ID of the VM or container to reboot. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), confirm. Returns: result

resize_guestA

Resize CPU, memory, and/or disk of a VM or container.

At least one of cores, memory, or disk_size must be provided. CPU and memory changes take effect on next reboot for running guests. Disk resize is immediate but IRREVERSIBLE (disks can only grow).

Args: vmid: The numeric ID of the VM or container. cores: New number of CPU cores. memory: New memory size in MB. disk_size: Disk size change. Use '+10G' to add 10GB, or '50G' for absolute size. Supported units: K, M, G, T. disk: Disk name to resize (default 'scsi0' for VMs, auto-mapped to 'rootfs' for CTs). confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), disk, cores, memory, +2 more. Returns: result

restore_backupA

Restore a VM or container from a backup file.

Args: volid: Volume ID of the backup (e.g. 'local:backup/vzdump-qemu-100-2024_03_04.vma.zst'). Use list_backups to find available backups. node: Target node for the restored guest. vmid: Optional VMID for the restored guest. Auto-assigned if not provided. storage_pool: Storage for restored disks (default 'local-lvm'). guest_type: Type of guest: 'vm' or 'container'. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: node (required), volid (required), vmid, confirm, +2 more. Returns: result

rollback_snapshotA

Rollback a VM or container to a previous snapshot.

WARNING: All changes since the snapshot will be LOST.

Args: vmid: The numeric ID of the VM or container. name: Name of the snapshot to rollback to. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: name (required), vmid (required), confirm. Returns: result

shutdown_guestA

Gracefully shut down a VM or container via ACPI signal (VMs) or init (containers).

Args: vmid: The numeric ID of the VM or container to shut down.

Inputs: vmid (required). Returns: result

start_guestA

Start a stopped VM or container.

Args: vmid: The numeric ID of the VM or container to start.

Inputs: vmid (required). Returns: result

stop_guestA

Force-stop a running VM or container. WARNING: May cause data loss.

Args: vmid: The numeric ID of the VM or container to stop. confirm: Must be true to execute. First call without confirm shows a warning.

Inputs: vmid (required), confirm. Returns: result

vm_screenshotA

Capture a PNG screenshot of a QEMU VM's display.

The VM must be running. Returns the screenshot as a PNG image. Use this to see the current state of the VM console (login prompt, GUI, boot messages, installer screens, etc.).

Args: vmid: The numeric ID of the QEMU VM.

Inputs: vmid (required).

vm_send_keyA

Send a key or key combination to a QEMU VM's console.

The VM must be running. Key names are human-readable and auto-converted to QEMU Monitor key codes. Use vm_screenshot first to see the console state.

Common keys and combos: - 'enter' — Enter key - 'esc' — Escape key - 'tab' — Tab key - 'space' — Space bar - 'backspace' — Backspace - 'up', 'down', 'left', 'right' — Arrow keys - 'f1'-'f12' — Function keys - 'ctrl-alt-delete' — Ctrl+Alt+Del (reboot) - 'ctrl-c' — Ctrl+C - 'win-r' — Win+R (opens Run dialog on Windows) - 'a'-'z', '0'-'9' — Single character keys

Args: vmid: The numeric ID of the QEMU VM. key: Key name or hyphen-separated combo (e.g. 'enter', 'ctrl-alt-delete', 'win-r'). confirm: Must be true to send the key to the VM console.

Inputs: key (required), vmid (required), confirm. Returns: result

vm_send_textA

Type a text string into a QEMU VM's console, character by character.

Each character is sent as an individual keypress. Use this to type
login credentials, commands, or other text into the VM console.
Combine with vm_screenshot to verify the result.

Supports printable ASCII characters. Newlines ('

') are sent as Enter. Note: characters requiring Shift (uppercase, symbols like '!', '@') are sent with shift automatically.

Args:
    vmid: The numeric ID of the QEMU VM.
    text: Text string to type into the VM console (e.g. 'administrator

admin '). delay: Delay between keypresses in seconds (default 0.05). confirm: Must be true to type the text into the VM console.

Inputs: text (required), vmid (required), delay, confirm. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 37 tools

    Disambiguation4/5

    Most tools target a distinct resource/action pair, such as list_vms vs list_containers vs list_snapshots. A few boundaries are fuzzy—list_storage_content with content_type='backup' overlaps list_backups, and stop_guest (force) vs shutdown_guest (graceful) could be confused—but descriptions make the intended use clear.

    Naming Consistency4/5

    The set predominantly uses verb_noun naming with list_*, get_*, create_*, and delete_* prefixes, and guest lifecycle verbs consistently use the _guest suffix. The vm_screenshot/vm_send_key/vm_send_text prefix and generic exec_command are minor deviations from the dominant pattern.

    Tool Count3/5

    At 37 tools, the surface is heavy for a typical MCP server, but the broad Proxmox domain (guests, storage, backups, snapshots, network, firewall, console) justifies much of it. Some near-duplicate listing tools (list_storage_content vs list_backups vs list_templates) make it feel slightly larger than necessary.

    Completeness4/5

    The toolset covers the main guest lifecycle, snapshots, backups/restore, migration, resizing, firewall, and console workflows. Notable gaps include generic guest configuration updates beyond resize/cloud-init and backup deletion, but agents can work around these or they fall outside the core surface.

    Maintenance

    ActivityMaintained
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server for Proxmox VE that enables AI assistants to inspect and manage LXC containers, VMs, snapshots, and resource pools via the Proxmox API.
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for managing Proxmox VE resources, VM/CT lifecycle, snapshots, backups, and clones via natural language.
      23
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for managing Proxmox VE virtualization infrastructure, providing tools for VMs, containers, snapshots, storage, cluster nodes, and tasks. Compatible with Claude Desktop, Cline, and other MCP clients via natural language.
      49 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server for interacting with the Proxmox Virtual Environment API, enabling management of VMs, containers, storage, and cluster resources through natural language.
      MIT