MCP server for Proxmox VE infrastructure management
Project description
Proxmox MCP Server
Overview
This is a Model Context Protocol (MCP) server that provides tools for interacting with Proxmox VE infrastructure. It enables AI assistants and other MCP clients to manage virtual machines, containers, storage, networking, firewall rules, high availability, and more through a standardized interface. The server supports both API token and password-based authentication against local and remote Proxmox instances.
Distributions
Tools
Node Management
list_nodes- List all nodes in the Proxmox cluster with their status, CPU, memory, and uptimeget_node_status- Get detailed status of a specific node including CPU, memory, disk, uptime, and kernel infoget_node_config- Get the configuration of a node (description, wakeonlan, etc.)get_node_dns- Get DNS settings for a nodeget_node_network- Get network interface configuration for a nodeget_node_network_interface- Get details for a specific network interfacecreate_node_network_interface- Create a network interface on a nodelist_node_services- List all system services on a node (pve, ssh, cron, etc.)manage_node_service- Start, stop, restart, or reload a system service on a nodeget_node_syslog- Read system log (syslog) entries from a nodeget_node_journal- Read systemd journal entries from a nodelist_node_tasks- List recent tasks on a nodeget_task_status- Get the status of a specific task by its UPIDget_task_log- Get log output of a specific taskstop_task- Stop (abort) a running taskget_node_time- Get the current time and timezone of a nodeget_node_subscription- Get subscription status for a nodeget_node_apt_update- List available package updates on a noderun_apt_update- Refresh the package index on a node (apt update)get_node_report- Generate a system report for a node (useful for diagnostics)get_node_disks- List physical disks on a nodeget_disk_smart- Get S.M.A.R.T. health data for a diskget_node_hardware_pci- List PCI hardware devices on a node (for passthrough)get_node_hardware_usb- List USB hardware devices on a nodeget_node_capabilities_qemu- Get QEMU capabilities for a node: supported CPU models, machine types, etc.get_node_storage_scan- Scan for available storage targets (NFS, CIFS, iSCSI, LVM, ZFS, PBS)wakeonlan_node- Send a Wake-on-LAN magic packet to a nodestartall_node- Start all VMs and containers on a node (respecting boot order)stopall_node- Stop all VMs and containers on a nodeget_node_hosts- Get the /etc/hosts file content for a nodeget_node_version- Get Proxmox VE version information for a specific nodeget_node_netstat- Get network statistics for a node (per-interface traffic)get_node_aplinfo- List available appliance templates (LXC templates) that can be downloadeddownload_appliance_template- Download an appliance template to local storage
QEMU Virtual Machines
list_vms- List all QEMU virtual machines on a node with status, memory, CPU, and disk infoget_vm_status- Get the current runtime status of a VM (state, CPU, memory, disk, network, uptime)get_vm_config- Get the configuration of a VMget_vm_pending- Get pending configuration changes for a VM (not yet applied)get_vm_feature- Check if a specific feature is available/supported for a VM (e.g. snapshot, clone, copy)get_vm_rrddata- Get RRD statistics data for a VM (CPU, memory, disk, network over time)create_vm- Create a new QEMU virtual machineupdate_vm_config- Update the configuration of an existing VMdelete_vm- Delete a VM (must be stopped first)start_vm- Start a VMstop_vm- Hard-stop a VM (like pulling the power plug)shutdown_vm- Gracefully shut down a VM via ACPIreboot_vm- Reboot a VM via ACPIsuspend_vm- Suspend a VM (pause execution or hibernate to disk)resume_vm- Resume a suspended/paused VMreset_vm- Hard reset a VM (like pressing the reset button)clone_vm- Clone a VM to create a new one (full copy or linked clone)migrate_vm- Migrate a VM to another node in the clusterconvert_vm_to_template- Convert a VM into a template (irreversible)resize_vm_disk- Resize a VM disk (can only grow, not shrink)move_vm_disk- Move a VM disk to different storage or attach to another VMlist_vm_snapshots- List all snapshots of a VMcreate_vm_snapshot- Create a snapshot of a VMdelete_vm_snapshot- Delete a VM snapshotrollback_vm_snapshot- Rollback a VM to a previous snapshot (current state will be lost)get_vm_snapshot_config- Get the configuration stored in a VM snapshotget_vm_cloudinit- Get Cloud-Init configuration for a VMupdate_vm_cloudinit- Set Cloud-Init parameters for a VM (user, password, SSH keys, network)dump_vm_cloudinit- Dump the Cloud-Init generated config file (user-data, network-data, or meta-data)vm_agent_exec- Execute a command inside a VM via the QEMU Guest Agentvm_agent_exec_status- Get the status/result of a command previously executed via the guest agentvm_agent_file_read- Read a file from inside a VM via the guest agentvm_agent_file_write- Write content to a file inside a VM via the guest agentvm_agent_get_info- Get various system information from a VM via the guest agentvm_agent_set_password- Set a user password inside a VM via the guest agentget_vm_vncproxy- Create a VNC proxy connection ticket for a VM (for console access)get_vm_spiceproxy- Create a SPICE proxy connection for a VM consolesend_vm_key- Send a key event to a VM (e.g. ctrl-alt-del)send_vm_monitor_command- Send a QEMU monitor command to a VM (advanced/low-level)
LXC Containers
list_containers- List all LXC containers on a node with status, memory, CPU, and disk infoget_container_status- Get the current runtime status of a containerget_container_config- Get the configuration of a containerget_container_pending- Get pending configuration changes for a containerget_container_interfaces- Get network interfaces and IPs of a running containerget_container_rrddata- Get RRD statistics data for a container (CPU, memory, disk, network over time)get_container_feature- Check if a feature is available for a container (snapshot, clone, copy)create_container- Create a new LXC containerupdate_container_config- Update the configuration of an existing containerdelete_container- Delete a container (must be stopped first unless force=True)start_container- Start a containerstop_container- Hard-stop a container (immediate, like power off)shutdown_container- Gracefully shut down a containerreboot_container- Reboot a containersuspend_container- Suspend (freeze) a containerresume_container- Resume a suspended containerclone_container- Clone a containermigrate_container- Migrate a container to another nodeconvert_container_to_template- Convert a container into a template (irreversible)resize_container_disk- Resize a container disk/volumemove_container_volume- Move a container volume to different storage or to another containerlist_container_snapshots- List all snapshots of a containercreate_container_snapshot- Create a snapshot of a containerdelete_container_snapshot- Delete a container snapshotrollback_container_snapshot- Rollback a container to a previous snapshot
Storage
list_storage- List all configured storage pools at the datacenter levelget_storage_config- Get configuration of a specific storage poolcreate_storage- Create a new storage pool configurationupdate_storage- Update an existing storage pool configurationdelete_storage- Delete a storage pool configuration (does not delete data on the backend)list_node_storage- List storage pools available on a specific node with usage infoget_node_storage_status- Get usage status of a storage pool on a node (total, used, available)list_storage_content- List content of a storage pool (disk images, ISOs, templates, backups)get_storage_volume_info- Get details about a specific volume in storageallocate_storage_volume- Allocate a new disk volume in storagedelete_storage_volume- Delete a volume from storageupload_to_storage- Upload a file (ISO, template, etc.) to storagedownload_url_to_storage- Download a file from a URL directly to storage (ISO, template, etc.)get_storage_rrddata- Get RRD statistics for a storage pool (usage over time)prune_storage_backups- Prune (delete) old backups from storage according to retention policylist_file_restore- List files in a backup volume for file-level restore (PBS backups)list_lvm_volumes- List LVM volume groups on a nodecreate_lvm- Create a new LVM volume group on a devicelist_lvmthin_pools- List LVM thin pools on a nodecreate_lvmthin- Create a new LVM thin poollist_zfs_pools- List ZFS pools on a nodeget_zfs_pool- Get details of a ZFS poolcreate_zfs_pool- Create a new ZFS poollist_directory_storage- List directory-based storage mounts on a nodecreate_directory_storage- Create a directory-based storage mount from a deviceinitialize_gpt- Initialize a disk with GPT partition table (WARNING: destroys all data)
Cluster
get_version- Get the Proxmox VE API version informationget_cluster_status- Get cluster status (nodes online, quorum, HA state)get_cluster_resources- List all resources across the cluster (VMs, containers, storage, nodes)get_cluster_tasks- List recent tasks across all nodes in the clusterget_cluster_log- Get the cluster log (recent events)get_next_vmid- Get the next available VMID in the clusterget_cluster_options- Get datacenter/cluster-wide options (keyboard layout, console, language, etc.)update_cluster_options- Update datacenter/cluster-wide optionsget_cluster_config- Get the current cluster configuration (corosync, nodes, join info)get_cluster_config_nodes- List nodes configured in the clusterget_cluster_join_info- Get info needed to join a node to this clusterjoin_cluster- Join a node to an existing clusterget_cluster_totem- Get the corosync totem configurationlist_replication_jobs- List all replication jobs in the clusterget_replication_job- Get a specific replication job configurationcreate_replication_job- Create a storage replication jobdelete_replication_job- Delete a replication joblist_metric_servers- List configured metric servers (InfluxDB, Graphite)get_metric_server- Get metric server configurationlist_notification_endpoints- List all configured notification endpoints (sendmail, gotify, smtp, webhook)list_notification_targets- List all notification targetslist_notification_matchers- List all notification matchers (rules that route notifications)test_notification_target- Send a test notification to a targetbulk_start_guests- Bulk start guests across the clusterbulk_shutdown_guests- Bulk shutdown guests across the clusterbulk_migrate_guests- Bulk migrate guests to a target nodeget_ceph_status_cluster- Get Ceph cluster status (health, monitors, OSDs, PGs)get_ceph_metadata- Get Ceph metadata (versions, services across nodes)get_ceph_flags- Get Ceph global flags (noout, noscrub, etc.)set_ceph_flags- Set a Ceph global flagget_ceph_status_node- Get Ceph status from a specific node's perspectivelist_ceph_osds- List Ceph OSDs on a nodecreate_ceph_osd- Create a new Ceph OSD on a devicelist_ceph_pools- List Ceph poolscreate_ceph_pool- Create a new Ceph poollist_ceph_monitors- List Ceph monitorslist_ceph_managers- List Ceph managerslist_ceph_mds- List Ceph metadata servers (MDS, for CephFS)list_ceph_fs- List CephFS filesystemsget_ceph_config- Get the raw Ceph configurationget_ceph_crush_rules- Get Ceph CRUSH ruleslist_scheduled_jobs- List all scheduled cluster jobslist_realm_sync_jobs- List realm synchronization jobslist_pci_mappings- List PCI device mappings for passthroughlist_usb_mappings- List USB device mappings for passthroughlist_dir_mappings- List directory mappings
Access Control
list_users- List all users in Proxmoxget_user- Get details for a specific usercreate_user- Create a new userupdate_user- Update an existing userdelete_user- Delete a userlist_user_tokens- List API tokens for a userget_user_token- Get details for a specific API tokencreate_user_token- Create a new API token for a user (token value shown only once)delete_user_token- Delete an API tokenlist_groups- List all user groupsget_group- Get group detailscreate_group- Create a new groupupdate_group- Update a groupdelete_group- Delete a grouplist_roles- List all available rolesget_role- Get role details and its privilegescreate_role- Create a new role with specific privilegesupdate_role- Update role privilegesdelete_role- Delete a roleget_acl- Get the full ACL — shows all permission assignmentsupdate_acl- Add or remove ACL entries (permission assignments)list_auth_domains- List configured authentication realms (PAM, PVE, LDAP, AD, OpenID)get_auth_domain- Get authentication domain configurationsync_auth_domain- Sync users/groups from an external auth domain (LDAP/AD)list_tfa- List TFA (two-factor auth) entriesget_permissions- Check effective permissions for a user on a given pathchange_password- Change a user's password
Backup
list_backup_jobs- List all scheduled backup jobs (vzdump) in the clusterget_backup_job- Get details of a specific backup jobget_backup_job_included_volumes- Get volumes included in a backup jobcreate_backup_job- Create a scheduled backup jobupdate_backup_job- Update a scheduled backup jobdelete_backup_job- Delete a scheduled backup jobcreate_vzdump- Start an immediate backup (vzdump) on a nodeget_vzdump_defaults- Get the default vzdump configuration for a nodeget_vzdump_extractconfig- Extract the guest configuration from a vzdump backup archivelist_backup_file_restore- List files in a vzdump backup for single-file restoredownload_file_restore- Download a file from a vzdump backup
Firewall
get_cluster_firewall_options- Get cluster-wide firewall options (enable, policy_in, policy_out, etc.)set_cluster_firewall_options- Set cluster-wide firewall optionslist_cluster_firewall_rules- List cluster-level firewall rulesget_cluster_firewall_rule- Get a specific cluster firewall rulecreate_cluster_firewall_rule- Create a cluster-level firewall ruleupdate_cluster_firewall_rule- Update a cluster-level firewall ruledelete_cluster_firewall_rule- Delete a cluster-level firewall rulelist_firewall_groups- List firewall security groups (reusable sets of rules)get_firewall_group_rules- List rules in a firewall security groupcreate_firewall_group- Create a new firewall security groupcreate_firewall_group_rule- Add a rule to a firewall security grouplist_firewall_aliases- List cluster firewall aliases (named IP addresses/ranges)create_firewall_alias- Create a firewall alias (named IP address or CIDR)delete_firewall_alias- Delete a firewall aliaslist_firewall_ipsets- List cluster firewall IP sets (named groups of IPs)create_firewall_ipset- Create a new firewall IP setlist_firewall_ipset_entries- List entries in a firewall IP setadd_firewall_ipset_entry- Add an IP/CIDR to an IP setdelete_firewall_ipset_entry- Remove an IP/CIDR from an IP setlist_firewall_macros- List available firewall macros (predefined rule sets like SSH, HTTP, etc.)get_firewall_refs- Get available firewall references (aliases, ipsets, names usable in rules)get_node_firewall_options- Get firewall options for a specific nodeset_node_firewall_options- Set firewall options for a nodelist_node_firewall_rules- List firewall rules for a nodeget_node_firewall_log- Get firewall log for a nodeget_vm_firewall_options- Get firewall options for a QEMU VMset_vm_firewall_options- Set firewall options for a QEMU VMlist_vm_firewall_rules- List firewall rules for a QEMU VMcreate_vm_firewall_rule- Create a firewall rule for a QEMU VMget_container_firewall_options- Get firewall options for an LXC containerlist_container_firewall_rules- List firewall rules for an LXC containercreate_container_firewall_rule- Create a firewall rule for an LXC container
High Availability
get_ha_status- Get HA manager status (active, quorum, manager status)get_ha_manager_status- Get detailed HA manager statuslist_ha_resources- List all HA-managed resourcesget_ha_resource- Get HA resource configurationcreate_ha_resource- Add a resource to HA managementupdate_ha_resource- Update an HA resource configurationdelete_ha_resource- Remove a resource from HA managementmigrate_ha_resource- Request migration of an HA resource to a different noderelocate_ha_resource- Request relocation of an HA resource to a different nodelist_ha_groups- List HA groups (define which nodes can run HA resources)get_ha_group- Get HA group configurationcreate_ha_group- Create an HA groupupdate_ha_group- Update an HA groupdelete_ha_group- Delete an HA group
SDN
list_sdn_vnets- List SDN virtual networks (VNets)get_sdn_vnet- Get SDN VNet configurationcreate_sdn_vnet- Create an SDN VNetupdate_sdn_vnet- Update an SDN VNetdelete_sdn_vnet- Delete an SDN VNetlist_sdn_subnets- List subnets for an SDN VNetcreate_sdn_subnet- Create a subnet for an SDN VNetlist_sdn_zones- List SDN zonesget_sdn_zone- Get SDN zone configurationcreate_sdn_zone- Create an SDN zonedelete_sdn_zone- Delete an SDN zonelist_sdn_controllers- List SDN controllers (e.g. EVPN controller)get_sdn_controller- Get SDN controller configurationlist_sdn_ipams- List IPAM (IP Address Management) pluginsget_sdn_ipam- Get IPAM plugin configurationlist_sdn_dns- List SDN DNS pluginsapply_sdn_changes- Apply pending SDN configuration changes to all nodes
Pools & ACME
list_pools- List all resource poolsget_pool- Get pool configuration and memberscreate_pool- Create a resource poolupdate_pool- Update a resource pool (add/remove members)delete_pool- Delete a resource poollist_acme_accounts- List ACME (Let's Encrypt) accountsget_acme_account- Get ACME account detailsregister_acme_account- Register a new ACME accountlist_acme_plugins- List ACME DNS challenge pluginsget_acme_plugin- Get ACME plugin configurationget_acme_directories- List known ACME directory URLsget_acme_tos- Get the ACME Terms of Service URLorder_node_certificate- Order/renew ACME certificate for a nodeget_node_certificates- Get certificate info for a node
Generic
proxmox_api_raw- Make an arbitrary Proxmox API call for any endpoint not covered by specific tools
Proxmox Documentation
For more information about Proxmox VE, refer to the official documentation:
- Proxmox VE Documentation: https://pve.proxmox.com/pve-docs/
- API Reference: https://pve.proxmox.com/pve-docs/api-viewer/
- Proxmox VE Wiki: https://pve.proxmox.com/wiki/Main_Page
- proxmoxer Python Library: https://proxmoxer.github.io/docs/
VS Code MCP Config
Add a .vscode/mcp.json file to your workspace. Choose the approach that fits your setup.
Docker (environment variables)
Recommended when running via Docker. Configuration is passed through environment variables.
{
"servers": {
"proxmox": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "PROXMOX_HOST",
"-e", "PROXMOX_PORT",
"-e", "PROXMOX_USER",
"-e", "PROXMOX_TOKEN_NAME",
"-e", "PROXMOX_TOKEN_VALUE",
"-e", "PROXMOX_VERIFY_SSL",
"mcp/proxmox"
],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_PORT": "8006",
"PROXMOX_USER": "root@pam",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "your-token-here",
"PROXMOX_VERIFY_SSL": "0"
}
}
}
}
Python via uvx (environment variables)
Recommended when running from PyPI via uvx. No local install required — uvx fetches and runs the package automatically.
{
"servers": {
"proxmox": {
"command": "uvx",
"args": ["proxmox-mcp-server"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_PORT": "8006",
"PROXMOX_USER": "root@pam",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "your-token-here",
"PROXMOX_VERIFY_SSL": "0"
}
}
}
}
Configuration Options
| Option | Environment Variable | Default |
|---|---|---|
| Proxmox host | PROXMOX_HOST |
— |
| API port | PROXMOX_PORT |
8006 |
| User | PROXMOX_USER |
root@pam |
| API token name | PROXMOX_TOKEN_NAME |
— |
| API token value | PROXMOX_TOKEN_VALUE |
— |
| Password | PROXMOX_PASSWORD |
— |
| SSL verification | PROXMOX_VERIFY_SSL |
0 |
Either PROXMOX_TOKEN_NAME + PROXMOX_TOKEN_VALUE or PROXMOX_PASSWORD is required for authentication.
Development
Running Tests
Install development dependencies:
pip install -e ".[dev]"
Run the test suite:
pytest tests/ -v
Building the Docker Image
docker build -t mcp/proxmox:latest .
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxmox_mcp_server-1.1.1.tar.gz.
File metadata
- Download URL: proxmox_mcp_server-1.1.1.tar.gz
- Upload date:
- Size: 48.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee9f0b4487588530cb821985d570c1048e64c89b3f4d145e2174d3c55f7748db
|
|
| MD5 |
132eb9b9ae83b8ce4f4cb42699d28acf
|
|
| BLAKE2b-256 |
d0fbd9b505e8d292b5d7b5df76ebfb74b56993d1a1476c032777823d5f8ce7a4
|
Provenance
The following attestation bundles were made for proxmox_mcp_server-1.1.1.tar.gz:
Publisher:
release.yml on GethosTheWalrus/proxmox-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxmox_mcp_server-1.1.1.tar.gz -
Subject digest:
ee9f0b4487588530cb821985d570c1048e64c89b3f4d145e2174d3c55f7748db - Sigstore transparency entry: 1164201163
- Sigstore integration time:
-
Permalink:
GethosTheWalrus/proxmox-mcp@8adc4ea8789f27c2468d4787054e670a71635964 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GethosTheWalrus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8adc4ea8789f27c2468d4787054e670a71635964 -
Trigger Event:
push
-
Statement type:
File details
Details for the file proxmox_mcp_server-1.1.1-py3-none-any.whl.
File metadata
- Download URL: proxmox_mcp_server-1.1.1-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f658fe835752afb4c33091548530b3234aed1c0185e79c8ae18048c51a5be8c
|
|
| MD5 |
b4323b154e7ff6e4fb659c6f4fae41e2
|
|
| BLAKE2b-256 |
66d22f456a5b7a126dd183cb2165c93067e9fd852d07dbed61985249e5659c97
|
Provenance
The following attestation bundles were made for proxmox_mcp_server-1.1.1-py3-none-any.whl:
Publisher:
release.yml on GethosTheWalrus/proxmox-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxmox_mcp_server-1.1.1-py3-none-any.whl -
Subject digest:
0f658fe835752afb4c33091548530b3234aed1c0185e79c8ae18048c51a5be8c - Sigstore transparency entry: 1164201230
- Sigstore integration time:
-
Permalink:
GethosTheWalrus/proxmox-mcp@8adc4ea8789f27c2468d4787054e670a71635964 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GethosTheWalrus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8adc4ea8789f27c2468d4787054e670a71635964 -
Trigger Event:
push
-
Statement type: