Proxmox MCP Server
README.md
# mcp-proxmox
A comprehensive Model Context Protocol (MCP) server for Proxmox VE. Exposes 68 tools and 4 resources covering VMs, containers, storage, networking, clusters, HA, backups, firewall, access control, pools, and tasks.
## Features
- **Nodes** — list nodes, get node status
- **VMs (QEMU)** — full CRUD, power management (start/stop/shutdown/reboot/suspend/resume/reset), clone, migrate, resize disks, snapshots, guest agent
- **Containers (LXC)** — full CRUD, power management, snapshots
- **Storage** — list storage, browse content, download ISOs/templates from URL
- **Networking** — list/create/update/delete network interfaces
- **Cluster** — cluster status and resource overview
- **High Availability** — manage HA resources and groups
- **Backups** — scheduled backup jobs and immediate vzdump
- **Firewall** — cluster and node-level firewall rules
- **Access Control** — list users, groups, roles, permissions (read-only)
- **Resource Pools** — full CRUD for resource pools
- **Tasks** — list and inspect task status
## Installation
```bash
npm install
npm run build
```
## Configuration
Set the following environment variables:
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `PROXMOX_HOST` | Yes | — | Proxmox host (IP or hostname) |
| `PROXMOX_PORT` | No | `8006` | API port |
| `PROXMOX_TOKEN_ID` | Yes | — | API token ID (`user@realm!tokenid`) |
| `PROXMOX_TOKEN_SECRET` | Yes | — | API token secret (UUID) |
| `PROXMOX_ALLOW_SELF_SIGNED_CERTS` | No | `true` | Accept self-signed TLS certificates |
### Creating a Proxmox API Token
1. Log into the Proxmox web UI
2. Go to **Datacenter → Permissions → API Tokens**
3. Click **Add**, select a user, give the token an ID, and uncheck **Privilege Separation** if you want the token to inherit the user's permissions
4. Copy the token ID and secret
## Usage with Claude Desktop
Add to your Claude Desktop config (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"proxmox": {
"command": "node",
"args": ["/path/to/mcp-proxmox/dist/index.js"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_TOKEN_ID": "root@pam!mcp",
"PROXMOX_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}
```
## Tools (68 total)
### Nodes (2)
`list_nodes`, `get_node_status`
### VMs (22)
`list_vms`, `get_vm_status`, `get_vm_config`, `create_vm`, `update_vm_config`, `delete_vm`, `start_vm`, `stop_vm`, `shutdown_vm`, `reboot_vm`, `suspend_vm`, `resume_vm`, `reset_vm`, `clone_vm`, `migrate_vm`, `resize_vm_disk`, `list_vm_snapshots`, `create_vm_snapshot`, `delete_vm_snapshot`, `rollback_vm_snapshot`, `get_vm_agent_info`, `execute_vm_command`
### Containers (14)
`list_containers`, `get_container_status`, `get_container_config`, `create_container`, `update_container_config`, `delete_container`, `start_container`, `stop_container`, `shutdown_container`, `reboot_container`, `list_container_snapshots`, `create_container_snapshot`, `delete_container_snapshot`, `rollback_container_snapshot`
### Storage (3)
`list_storage`, `get_storage_content`, `download_url_to_storage`
### Network (4)
`list_networks`, `create_network`, `update_network`, `delete_network`
### Cluster (2)
`get_cluster_status`, `get_cluster_resources`
### High Availability (4)
`list_ha_resources`, `create_ha_resource`, `delete_ha_resource`, `list_ha_groups`
### Backups (3)
`list_backup_jobs`, `create_backup_job`, `run_backup`
### Firewall (3)
`list_firewall_rules`, `create_firewall_rule`, `delete_firewall_rule`
### Access Control (4)
`list_users`, `list_groups`, `list_roles`, `get_permissions`
### Pools (5)
`list_pools`, `create_pool`, `get_pool`, `update_pool`, `delete_pool`
### Tasks (2)
`list_tasks`, `get_task_status`
## Resources (4)
| URI | Description |
|-----|-------------|
| `proxmox://nodes` | List of all cluster nodes |
| `proxmox://nodes/{node}/vms` | VMs on a specific node |
| `proxmox://nodes/{node}/containers` | Containers on a specific node |
| `proxmox://cluster/status` | Cluster status |
## Development
```bash
npm run dev # Watch mode
npm run build # Compile TypeScript
npm start # Run the server
```
### Testing with MCP Inspector
```bash
PROXMOX_HOST=your-host PROXMOX_TOKEN_ID=user@realm!token PROXMOX_TOKEN_SECRET=secret \
npx @modelcontextprotocol/inspector node dist/index.js
```
## License
MIT
TDQS
B3/5.0
Scored across 68 tools
Disambiguation5/5
Each tool has a clear target resource (VM, container, network, etc.) and action, with descriptions that prevent confusion even among similar operations like reboot vs reset.
Naming Consistency5/5
All tools follow a consistent verb_noun pattern with underscores, using clear verbs (create, delete, list, get, update, etc.) and noun phrases.
Tool Count3/5
With 68 tools, the set is large but justified by the broad scope of Proxmox management; however, it exceeds the typical well-scoped range and may feel overwhelming.
Completeness4/5
Covers most lifecycle operations for VMs, containers, networking, HA, backups, and permissions, but lacks tools for user/role management beyond listing.
Maintenance
ActivityInactive
ResponsivenessNo issues