A Model Context Protocol (MCP) server for managing Proxmox Virtual Environment servers.
This MCP server provides tools for interacting with Proxmox VE through the Model Context Protocol, allowing AI agents and other MCP clients to manage virtual machines, containers, and system resources.
npm install @example/proxmox-mcp-serverOr run directly with npx:
npx @example/proxmox-mcp-serverThe Proxmox MCP server can be deployed in multiple ways:
- Direct execution with npx (as shown above)
- Docker container using the provided Dockerfile
- LXC container on Proxmox hosts
- Installation from npm for global access
See Deployment Options for detailed instructions on each method.
The server can be configured through environment variables using either API tokens or username/password authentication:
| Variable | Description | Default |
|---|---|---|
PROXMOX_HOST |
Proxmox server hostname or IP | 192.168.254.10 |
PROXMOX_PORT |
Proxmox API port | 8006 |
PROXMOX_API_TOKEN |
Proxmox API token | (required) |
PROXMOX_USER |
Proxmox user for API token | root@pam |
| Variable | Description | Default |
|---|---|---|
PROXMOX_HOST |
Proxmox server hostname or IP | 192.168.254.10 |
PROXMOX_PORT |
Proxmox API port | 8006 |
PROXMOX_USER |
Proxmox username | root@pam |
PROXMOX_PASSWORD |
Proxmox password | (required) |
Note: If both PROXMOX_API_TOKEN and PROXMOX_PASSWORD are provided, API token authentication takes precedence.
For detailed instructions on using username/password authentication, see USING-USERNAME-PASSWORD-AUTH.md.
list_vms- List all virtual machineslist_containers- List all containersget_vm_status- Get status of a specific VMget_system_info- Get system informationget_storage_info- Get storage informationget_cluster_status- Get overall cluster statusget_node_status- Get detailed status of a specific nodelist_vm_snapshots- List snapshots for a VMlist_backups- List available backupsget_performance_metrics- Get performance metrics
start_vm- Start a specific VMstop_vm- Stop a specific VMcreate_vm_snapshot- Create a snapshot of a VMrollback_vm_snapshot- Rollback a VM to a specific snapshot
clone_vm- Clone an existing VM
delete_vm_snapshot- Delete a specific snapshot
create_backup- Create a backup of a VM/container
The server implements permission-based tool availability based on the permissions of the provided API token or user account:
- Tools are registered dynamically based on the permissions of the provided credentials
- Read-only tools are generally available to all users
- Modification tools require appropriate permissions
- Creation, deletion, and backup tools require specific permissions
{
"mcpServers": {
"proxmox": {
"command": "npx",
"args": [
"-y",
"@example/proxmox-mcp-server"
],
"env": {
"PROXMOX_HOST": "192.168.254.10",
"PROXMOX_API_TOKEN": "your-api-token-here"
}
}
}
}{
"mcpServers": {
"proxmox": {
"command": "npx",
"args": [
"-y",
"@example/proxmox-mcp-server"
],
"env": {
"PROXMOX_HOST": "192.168.254.10",
"PROXMOX_USER": "root@pam",
"PROXMOX_PASSWORD": "your-password-here"
}
}
}
}With API Token:
PROXMOX_HOST=192.168.254.10 PROXMOX_API_TOKEN=your-token npx @example/proxmox-mcp-serverWith Username/Password:
PROXMOX_HOST=192.168.254.10 PROXMOX_USER=root@pam PROXMOX_PASSWORD=your-password npx @example/proxmox-mcp-server- Clone the repository
- Install dependencies:
npm install - Run in development mode:
npm run dev
The Proxmox MCP server can also be deployed as an LXC container on your Proxmox host for better isolation and management.
- Proxmox VE host with LXC support
- Internet connectivity for package installation
-
Navigate to the LXC deployment directory:
cd ../proxmox-mcp-lxc -
Review and modify the setup script if needed:
nano setup.sh
-
Run the setup script:
chmod +x setup.sh ./setup.sh
-
Configure authentication by editing the environment file:
pct exec 200 -- nano /etc/proxmox-mcp-server.env -
Start the service:
pct exec 200 -- rc-service proxmox-mcp-server start
For detailed instructions, see the LXC README.
- More secure as tokens can be restricted to specific permissions
- Tokens can be easily revoked without changing user passwords
- Tokens can have expiration dates
- Less secure as it requires storing passwords
- Password compromise affects all systems using that password
For detailed security considerations and best practices for username/password authentication, see USING-USERNAME-PASSWORD-AUTH.md.