Provides comprehensive management of Proxmox VE infrastructure including virtual machines (QEMU), LXC containers, storage, cluster resources, access control, high availability, backups, and network configuration through the Proxmox API.
Proxmox MCP Server
MCP (Model Context Protocol) server for the Proxmox VE API. Manage virtual machines, containers, storage, and cluster resources through Claude Code.
Features
120+ tools covering the full Proxmox VE API:
Access Control: Users, groups, roles, ACLs, authentication domains
Cluster: Status, resources, options, backup jobs, HA, firewall, replication
Nodes: Status, services, network, storage, disks, certificates, APT
QEMU VMs: Full lifecycle (create, start, stop, migrate, clone, snapshot, backup)
LXC Containers: Full lifecycle (create, start, stop, migrate, clone, snapshot)
Storage: Configuration, content management, uploads, downloads
Resource Pools: Pool management and membership
Quick Install
The installer will:
Clone this repository
Build the TypeScript source
Prompt for your Proxmox credentials
Configure Claude Code automatically
Prerequisites
Node.js 18+ - Download
Proxmox VE 7.0+ with API access
API Token - Create one in Proxmox UI:
Datacenter → Permissions → API Tokens → Add
Uncheck "Privilege Separation" for full access
Save the Token ID and Secret
Manual Installation
Add to your Claude Code config (~/.config/claude/claude_desktop_config.json on Linux or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Environment Variables
Variable | Description | Example |
| Proxmox API URL |
|
| API Token ID |
|
| API Token Secret |
|
Available Tools
Access Control
pve_list_users,pve_get_user,pve_create_user,pve_update_user,pve_delete_userpve_list_groups,pve_get_group,pve_create_group,pve_update_group,pve_delete_grouppve_list_roles,pve_get_role,pve_create_role,pve_update_role,pve_delete_rolepve_get_acl,pve_update_aclpve_list_domains,pve_get_domain
Cluster
pve_cluster_status,pve_cluster_resources,pve_cluster_taskspve_cluster_options,pve_cluster_set_options,pve_cluster_nextid,pve_cluster_logpve_list_backup_jobs,pve_get_backup_job,pve_create_backup_job,pve_update_backup_job,pve_delete_backup_jobpve_ha_status,pve_list_ha_resources,pve_get_ha_resource,pve_create_ha_resource,pve_update_ha_resource,pve_delete_ha_resourcepve_list_ha_groups,pve_get_ha_group,pve_create_ha_group,pve_update_ha_group,pve_delete_ha_grouppve_cluster_firewall_options,pve_set_cluster_firewall_options,pve_list_cluster_firewall_rules,pve_create_cluster_firewall_rulepve_list_security_groups,pve_create_security_group,pve_list_ipsets,pve_create_ipsetpve_list_firewall_aliases,pve_create_firewall_aliaspve_list_replication_jobs,pve_get_replication_job,pve_create_replication_job,pve_delete_replication_job
Nodes
pve_list_nodes,pve_get_node_status,pve_get_node_versionpve_get_node_time,pve_set_node_time,pve_get_node_dns,pve_set_node_dnspve_get_node_syslog,pve_get_node_journal,pve_get_node_subscription,pve_get_node_reportpve_node_start_all,pve_node_stop_allpve_list_node_services,pve_get_node_service_state,pve_node_service_start,pve_node_service_stop,pve_node_service_restart,pve_node_service_reloadpve_list_node_networks,pve_get_node_network,pve_create_node_network,pve_update_node_network,pve_delete_node_network,pve_apply_node_network,pve_revert_node_networkpve_list_node_tasks,pve_get_node_task_status,pve_get_node_task_log,pve_stop_node_taskpve_list_node_storage,pve_get_node_storage_status,pve_list_node_storage_content,pve_upload_to_storage,pve_download_url_to_storage,pve_delete_storage_contentpve_list_node_disks,pve_get_node_disk_smart,pve_initialize_disk_gpt,pve_wipe_diskpve_list_node_certificates,pve_get_node_acme,pve_order_node_certificate,pve_renew_node_certificatepve_list_apt_updates,pve_apt_update,pve_apt_changelog,pve_apt_versions
QEMU Virtual Machines
pve_list_vms,pve_get_vm_status,pve_get_vm_configpve_create_vm,pve_update_vm_config,pve_delete_vmpve_start_vm,pve_stop_vm,pve_shutdown_vm,pve_reboot_vm,pve_reset_vmpve_suspend_vm,pve_resume_vmpve_clone_vm,pve_migrate_vm,pve_convert_vm_to_templatepve_resize_vm_disk,pve_move_vm_diskpve_list_vm_snapshots,pve_create_vm_snapshot,pve_get_vm_snapshot_config,pve_rollback_vm_snapshot,pve_delete_vm_snapshotpve_backup_vmpve_get_vm_firewall_options,pve_set_vm_firewall_options,pve_list_vm_firewall_rules,pve_create_vm_firewall_rule
LXC Containers
pve_list_containers,pve_get_container_status,pve_get_container_configpve_create_container,pve_update_container_config,pve_delete_containerpve_start_container,pve_stop_container,pve_shutdown_container,pve_reboot_containerpve_suspend_container,pve_resume_containerpve_clone_container,pve_migrate_container,pve_convert_container_to_templatepve_resize_container_diskpve_list_container_snapshots,pve_create_container_snapshot,pve_rollback_container_snapshot,pve_delete_container_snapshotpve_get_container_firewall_options,pve_set_container_firewall_options,pve_list_container_firewall_rules
Storage
pve_list_storage,pve_get_storage,pve_create_storage,pve_update_storage,pve_delete_storage
Resource Pools
pve_list_pools,pve_get_pool,pve_create_pool,pve_update_pool,pve_delete_pool
Example Usage
Once configured, you can ask Claude things like:
"List all VMs in my Proxmox cluster"
"Show the status of node pve1"
"Create a new Ubuntu VM with 4GB RAM, 2 cores, and a 32GB disk"
"Start VM 100"
"Create a snapshot of container 101 named 'before-upgrade'"
"Migrate VM 102 to node pve2"
"Show available storage on the cluster"
"List backup jobs"
"Create a new user claude@pve with PVEAdmin role"
Security Notes
API tokens are stored in the Claude Code config file
The server accepts self-signed certificates (common for Proxmox)
Use least-privilege API tokens when possible
Consider creating dedicated tokens for Claude with limited permissions
Creating an API Token
Log into Proxmox web UI
Go to Datacenter → Permissions → API Tokens
Click Add
Select a user (e.g.,
root@pam)Enter a Token ID (e.g.,
claude)Uncheck "Privilege Separation" for full access (or leave checked and assign specific permissions)
Click Add
Copy the Token Secret immediately - it won't be shown again!
Your Token ID will be: root@pam!claude
License
MIT