proxmox-mcp
Proxmox-mcp
Proxmox MCP sencillo
Servidor MCP para gestionar Proxmox VE
38 herramientas: nodos, máquinas virtuales QEMU, contenedores LXC, almacenamiento, clúster e instantáneas.
¿Por qué esta opción?
Una sola imagen, multiarquitectura:
docker run ghcr.io/akmalovaa/proxmox-mcp:latesty listo.Solo variables de entorno: sin archivos de configuración, sin base de datos, sin estado.
Solo lectura por defecto: las operaciones destructivas están protegidas por un
PROXMOX_RISK_LEVELexplícito.Código base diminuto: MCP puro vía stdio sobre Proxmoxer, sin servidor HTTP, sin capa de autenticación, sin extras.
Salida JSON sin procesar: sin formato, sin emojis; el LLM recibe datos limpios.
Inicio rápido
Imagen: ghcr.io/akmalovaa/proxmox-mcp:latest (multiarquitectura: amd64 + arm64).
1. Exporta las credenciales en tu perfil de shell (~/.zprofile, ~/.zshrc o ~/.bashrc):
# base environment:
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_PASSWORD=your-password
# or use token auth (recommended):
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# optional:
export PROXMOX_RISK_LEVEL=readRecarga: source ~/.zprofile (o reinicia la shell).
2. Añádelo a ~/.claude/settings.json (Claude Code) o claude_desktop_config.json (Claude Desktop):
{
"mcpServers": {
"proxmox": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "PROXMOX_HOST",
"-e", "PROXMOX_USER",
"-e", "PROXMOX_PASSWORD",
"ghcr.io/akmalovaa/proxmox-mcp:latest"]
}
}
}o autenticación por token:
{
"mcpServers": {
"proxmox": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "PROXMOX_HOST",
"-e", "PROXMOX_USER",
"-e", "PROXMOX_TOKEN_NAME",
"-e", "PROXMOX_TOKEN_VALUE",
"ghcr.io/akmalovaa/proxmox-mcp:latest"]
}
}
}docker run -e VAR sin valor pasa la variable del host directamente; sin secretos en el archivo de configuración. Reinicia el cliente: 38 herramientas de Proxmox estarán disponibles.
Para autenticación por contraseña, cambia las variables de token por PROXMOX_PASSWORD.
Nota: Claude Desktop en macOS se inicia a través de launchd y no hereda
~/.zprofile/~/.zshrc. Coloca las exportaciones en~/.zshenvo recurre a un bloque"env": { ... }en línea dentro de la configuración.
Configuración
Todos los ajustes son variables de entorno: establécelas en tu perfil de shell, pásalas en línea a docker run -e o decláralas en el bloque env de tu cliente MCP.
Variable | Por defecto | Descripción |
| — | Host de Proxmox (IP o nombre de host) |
|
| Usuario de API |
Auth | — | |
|
| Puerto de API |
|
| Verificar certificado TLS |
|
|
|
Autenticación: token o contraseña
Elige una. Si ambas están configuradas, el token tiene prioridad.
Token (recomendado): créalo en la interfaz de Proxmox: Datacenter → Permissions → API Tokens → Add (desmarca Privilege Separation). Luego:
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxContraseña (alternativa):
export PROXMOX_PASSWORD=your-passwordNiveles de riesgo
PROXMOX_RISK_LEVEL controla las operaciones destructivas:
Nivel | Añade |
| herramientas de solo lectura |
| + start / stop / reboot / suspend / clone / create-snapshot |
| + delete-snapshot / rollback-snapshot |
Cada llamada elevada se registra en stderr (ALLOW / DENY + herramienta + nivel).
Herramientas
Nodos (7)
Herramienta | Descripción |
| Lista todos los nodos del clúster con estado, CPU, memoria y tiempo de actividad |
| Métricas detalladas del nodo (CPU, memoria, disco, carga, kernel) |
| Interfaces de red en un nodo |
| Discos físicos en un nodo |
| Tareas recientes en un nodo |
| Estado de una tarea específica por UPID |
| Salida de registro de una tarea |
Máquinas virtuales QEMU (14)
Herramienta | Nivel | Descripción |
| read | Lista todas las VM, opcionalmente filtradas por nodo |
| read | Estado actual de la VM (en ejecución/detenida, CPU, memoria) |
| read | Configuración de la VM (hardware, discos, red) |
| read | Lista todas las instantáneas de una VM |
| lifecycle | Iniciar una VM |
| lifecycle | Detener forzosamente una VM |
| lifecycle | Apagado ACPI elegante con tiempo de espera |
| lifecycle | Reiniciar vía ACPI |
| lifecycle | Suspender una VM |
| lifecycle | Reanudar una VM suspendida |
| lifecycle | Clonación completa o vinculada |
| lifecycle | Crear una instantánea |
| all | Eliminar una instantánea |
| all | Revertir a una instantánea |
Contenedores LXC (11)
Herramienta | Nivel | Descripción |
| read | Lista todos los contenedores LXC, opcionalmente filtrados por nodo |
| read | Estado actual del contenedor |
| read | Configuración del contenedor |
| read | Lista todas las instantáneas |
| lifecycle | Iniciar un contenedor |
| lifecycle | Detener forzosamente un contenedor |
| lifecycle | Apagado elegante con tiempo de espera |
| lifecycle | Reiniciar un contenedor |
| lifecycle | Crear una instantánea |
| all | Eliminar una instantánea |
| all | Revertir a una instantánea |
Almacenamiento (2)
Herramienta | Descripción |
| Pools de almacenamiento con uso, opcionalmente filtrados por nodo |
| Contenido de un pool de almacenamiento (ISO, copias de seguridad, imágenes, plantillas) |
Clúster (4)
Herramienta | Descripción |
| Salud del clúster, quórum, pertenencia de nodos |
| Todos los recursos (VM, contenedores, almacenamiento, nodos) |
| Trabajos de copia de seguridad configurados |
| Siguiente ID de VM/contenedor disponible |
Arquitectura
src/proxmox_mcp/
├── server.py # FastMCP instance + entry point
├── config.py # Pydantic Settings (PROXMOX_ prefix)
├── client.py # Proxmoxer connection via lifespan
└── tools/ # nodes, vms, containers, storage, clusterSolo lectura por defecto: herramientas elevadas protegidas por
PROXMOX_RISK_LEVELConexión única: cliente Proxmoxer creado una vez al inicio, compartido durante el ciclo de vida
Salida JSON sin procesar: sin formato; el LLM consume los datos directamente
Desarrollo
Ejecutar de forma independiente (pruebas)
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
docker run -i --rm \
-e PROXMOX_HOST -e PROXMOX_USER \
-e PROXMOX_TOKEN_NAME -e PROXMOX_TOKEN_VALUE \
ghcr.io/akmalovaa/proxmox-mcp:latestSin Docker (UV)
git clone https://github.com/akmalovaa/proxmox-mcp.git && cd proxmox-mcp && uv syncConfiguración del cliente MCP:
{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": ["run", "--directory", "/path/to/proxmox-mcp", "proxmox-mcp"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}Compilar desde el código fuente
git clone https://github.com/akmalovaa/proxmox-mcp.git
cd proxmox-mcp
docker build -t proxmox-mcp .Licencia
MIT
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/akmalovaa/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server