list_nodes
List all nodes in the Proxmox cluster with status, CPU, memory, and uptime.
无需输入参数。

io.github.felhen-ai由 GitHub 账号 felhen-ai 发布v1.2.4更新于 Nov 4, 2026
Manage Proxmox VE clusters through AI assistants — VMs, containers, and more
让 AI 助手管理 Proxmox VE 集群:查看节点、虚拟机与容器,控制电源、快照、备份、存储、防火墙与迁移。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
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.
Set these environment variables (or create a .env file):
Optional:
VM.Audit — read VM/CT status and configVM.PowerMgmt — start/stop/shutdown/rebootVM.Snapshot — create/rollback/delete snapshotsVM.Allocate — create/delete/clone VMs and containersVM.Clone — clone operationsDatastore.Audit — list storages and browse contentDatastore.AllocateSpace — allocate disk space for new VMs/CTsSys.Audit — read node status and tasksVM.Config.Disk — resize disksVM.Config.CPU — change CPU allocationVM.Config.Memory — change memory allocationVM.Monitor — access QEMU monitor (for metrics)VM.Console — console interaction tools (screenshots, keyboard input)VM.Migrate — migrate VMs/CTs between nodesSys.Modify — manage firewall rulesVM.Config.Cloudinit — configure cloud-init parametersAdd to ~/.claude/claude_desktop_config.json:
Add to .claude/settings.json or ~/.claude/settings.json:
Add to Cursor Settings > MCP with the same configuration as above.
Note:
exec_commandrequiresqemu-guest-agentinstalled and running inside the VM. Not supported for LXC containers (Proxmox API limitation).
Note: Console tools do not require
qemu-guest-agentand need only theVM.Consoleprivilege.vm_screenshotopens 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_textmaps 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.
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.
Once connected, you can ask your AI assistant:
Missing required environment variablesThis 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 failedA 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 reasonsexec_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.
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.
MIT
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.
来源:README.md,提交 e440334
List all nodes in the Proxmox cluster with status, CPU, memory, and uptime.
无需输入参数。
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').
node必填List all QEMU virtual machines across the cluster. Args: node: Optional. Filter by node name. status: Optional. Filter by status ('running', 'stopped').
nodestatusList all LXC containers across the cluster. Args: node: Optional. Filter by node name. status: Optional. Filter by status ('running', 'stopped').
nodestatusGet 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).
vmid必填Start a stopped VM or container. Args: vmid: The numeric ID of the VM or container to start.
vmid必填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.
vmid必填confirmGracefully 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.
vmid必填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.
vmid必填confirmList all snapshots for a VM or container. Args: vmid: The numeric ID of the VM or container.
vmid必填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.
name必填vmid必填descriptionRollback 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.
name必填vmid必填confirmDelete 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.
name必填vmid必填confirmList storage pools across the cluster with capacity and usage info. Args: node: Optional. Filter by node name.
nodeList 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'.
node必填content_typestorage_name必填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.
isoname必填node必填vmidcoresmemoryos_typedisk_sizenet_bridgestorage_poolstart_after_createCreate 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.
name必填node必填vmidcoresmemorypasswordtemplate必填disk_sizenet_bridgestorage_poolssh_public_keysstart_after_createClone 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.
vmid必填new_namenew_vmidfull_clonetarget_nodetarget_storagePermanently 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.
vmid必填confirmList 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.
nodevmidstorage_nameCreate 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.
modevmid必填notescompressstorage_nameRestore 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.
node必填vmidvolid必填confirmguest_typestorage_poolExecute 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).
vmid必填command必填timeoutCapture 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.
vmid必填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.
key必填vmid必填confirmType 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.
text必填vmid必填delayconfirmGet 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'.
vmid必填timeframeList 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').
node必填limitstatusList network interfaces, bridges, and bonds on a Proxmox node. Args: node: Name of the Proxmox node (e.g. 'pve').
node必填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.
diskvmid必填coresmemoryconfirmdisk_sizeList 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.
nodevmidAdd 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.
posdestnodevmiddportifaceprotosporttype_必填action必填enablesource另有 1 个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.
pos必填nodevmidconfirmLive 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.
vmid必填onlineconfirmtarget_node必填List all VM templates available in the cluster for cloning.
无需输入参数。
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.
vmid必填confirmConfigure 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.
uservmid必填passwordssh_keysip_confignameserversearchdomain已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
# Run directly with uvx (no install needed)uvx mcp-proxmox
# Or install with pippip install mcp-proxmoxPROXMOX_HOST=192.168.1.100 # Your Proxmox VE hostPROXMOX_TOKEN_ID=user@pam!mcp # API token IDPROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # API token secretPROXMOX_PORT=8006 # Default: 8006PROXMOX_VERIFY_SSL=false # Default: false{ "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" } } }}{ "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" } } }}git clone https://github.com/felhen-ai/mcp-proxmox.gitcd mcp-proxmoxpython -m venv .venvsource .venv/bin/activatepip install -e ".[dev]"
# Run testspytest
# Lintruff check src/ tests/ruff format src/ tests/
# Type checkmypy src/