nandi-proxmox-mcp
NANDI Proxmox MCP
Convierte tu clúster de Proxmox en una plataforma impulsada por IA con más de 140 herramientas para automatización, monitorización y ejecución controlada.
Servidor MCP de código abierto para Proxmox VE, impulsado por NANDI Services.
nandi-proxmox-mcp expone el inventario, ciclo de vida, almacenamiento, copias de seguridad, redes, cortafuegos, acceso, monitorización, diagnósticos SSH y operaciones remotas/de contenedor protegidas de Proxmox sin eliminar las medidas de seguridad necesarias para clústeres de producción.
Qué permanece habilitado
Más de 140 herramientas para nodos, clúster, QEMU, LXC, almacenamiento, copias de seguridad, tareas, red, cortafuegos, pools, acceso, plantillas, monitorización y operaciones remotas.
Niveles de acceso:
read-only,read-execute,full.División de módulos:
PVE_MODULE_MODE=core|advanced.Filtros de herramientas:
PVE_CATEGORIES,PVE_TOOL_BLACKLIST,PVE_TOOL_WHITELIST.Medidas de seguridad para operaciones destructivas mediante
confirm=true.Alias compatibles con versiones anteriores como
listNodes,getVMStatus,startVM,stopContainer.Transporte
stdiopara clientes MCP y transporte HTTP transmitible para despliegues remotos controlados.
Permisos requeridos
El servidor necesita dos canales de confianza y ambos se conservan intencionadamente:
Token de API de Proxmox
Utilizado para inventario, ciclo de vida, configuración y puntos finales de gestión.
Mantén las ACL al mínimo: concede solo los roles necesarios para las herramientas que realmente habilites.
Acceso SSH por lotes al host de Proxmox
Requerido para
pct exec, diagnósticos SSH por lotes y herramientas de inspección de Docker a nivel de contenedor.Esto sigue siendo necesario porque la cobertura de la API de Proxmox no reemplaza a
pcten el lado del host ni a los diagnósticos basados en SSH.
Más detalles: docs/PERMISSIONS.md
Confirmaciones para operaciones destructivas
Las operaciones marcadas como destructivas no se ejecutan a menos que el llamador envíe confirm=true.
Ejemplos:
Detener, apagar, reiniciar, suspender, eliminar, migrar, revertir instantánea de VM/contenedor
Escrituras en almacenamiento/red/cortafuegos/acceso que pueden alterar el estado del clúster
Ejecución remota avanzada como
pve_exec_in_container
El servidor devuelve un error estructurado CONFIRMATION_REQUIRED cuando falta la confirmación. Este comportamiento no ha cambiado y se ha reforzado.
Niveles de acceso
read-onlyInventario, estado, registros, métricas y diagnósticos que no modifican el sistema.
read-executeSolo lectura más acciones seleccionadas de ejecución/ciclo de vida.
fullOperaciones de creación, actualización, eliminación, migración, restauración y nivel de administrador.
PVE_MODULE_MODE=core oculta las herramientas avanzadas sin renombrar ni eliminar los IDs de herramientas canónicos de la base de código.
Configuración en tiempo de ejecución
Variables de entorno
Requeridas:
PROXMOX_HOSTPROXMOX_USERPROXMOX_REALMPROXMOX_TOKEN_NAMEPROXMOX_TOKEN_SECRETPROXMOX_SSH_HOSTPROXMOX_SSH_USERPROXMOX_SSH_KEY_PATH
Opcionales:
PROXMOX_PORTpor defecto8006PROXMOX_SSH_PORTpor defecto22PROXMOX_ALLOW_INSECURE_TLSpor defectofalsePVE_ACCESS_TIER=read-only|read-execute|fullPVE_MODULE_MODE=core|advancedPVE_CATEGORIESPVE_TOOL_BLACKLISTPVE_TOOL_WHITELIST
Transporte HTTP:
MCP_TRANSPORT=stdio|httpMCP_HOSTpor defecto0.0.0.0MCP_PORTpor defecto3000MCP_ALLOWED_HOSTSMCP_ALLOWED_ORIGINSMCP_RATE_LIMIT_WINDOW_MSMCP_RATE_LIMIT_MAXMCP_MAX_BODY_SIZE_BYTESMCP_HEADERS_TIMEOUT_MSMCP_REQUEST_TIMEOUT_MSMCP_KEEPALIVE_TIMEOUT_MSMCP_MAX_HEADERS_COUNT
Archivo de configuración local
La configuración escribe .nandi-proxmox-mcp/config.json y .vscode/mcp.json.
El cargador de configuración ahora rechaza:
rutas de configuración vacías o mal formadas
archivos de configuración demasiado grandes
caracteres de control en las rutas de configuración
Inicio rápido
Configuración guiada:
npx nandi-proxmox-mcp setup
npx nandi-proxmox-mcp doctor --check mcp-config,nodes,vms,cts,node-status,remote-opEjecución directa con variables de entorno:
$env:PROXMOX_HOST="pve.local"
$env:PROXMOX_PORT="8006"
$env:PROXMOX_USER="svc_mcp"
$env:PROXMOX_REALM="pve"
$env:PROXMOX_TOKEN_NAME="nandi-mcp"
$env:PROXMOX_TOKEN_SECRET="<SECRET>"
$env:PROXMOX_SSH_HOST="pve.local"
$env:PROXMOX_SSH_USER="root"
$env:PROXMOX_SSH_KEY_PATH="$env:USERPROFILE\.ssh\id_ed25519"
npx nandi-proxmox-mcp runModelo de seguridad y riesgo residual
Este servidor MCP opera sobre infraestructura real de Proxmox y no es un entorno aislado (sandboxed).
Suposiciones de confianza
El servidor se despliega en un entorno de confianza
Solo operadores autorizados pueden acceder a él
La exposición a la red está controlada (no expuesto públicamente)
Las credenciales se gestionan de forma segura
Riesgos residuales
Los siguientes riesgos son inherentes al diseño del sistema:
Operaciones privilegiadas
El nivel de acceso completo y las capacidades de ejecución en contenedores pueden realizar acciones destructivas o a nivel de sistema.Límite de ejecución SSH
La ejecución de comandos remotos depende de SSH y hereda la postura de seguridad del sistema de destino.Modo TLS inseguro opcional
Cuando está habilitado (PROXMOX_ALLOW_INSECURE_TLS=true), se omite la validación del certificado TLS y puede exponer las conexiones a ataques MITM. Destinado solo para uso en laboratorio.Sincronización de dependencias externas
La distribución de paquetes y la visibilidad de los listados dependen de npm, el registro MCP y los tiempos de propagación del mercado.
Responsabilidades de seguridad
Los usuarios son responsables de:
Restringir el acceso solo a operadores de confianza
Utilizar tokens de API y claves SSH con privilegios mínimos
Evitar TLS inseguro en entornos de producción
Asegurar adecuadamente la infraestructura subyacente
Controles de seguridad implementados
Niveles de acceso (read-only, read-execute, full)
Confirmación requerida para operaciones destructivas
Validación de entrada y endurecimiento de comandos
Limitación de tasa (rate limiting) y validación de solicitudes
Endurecimiento HTTP
Cuando MCP_TRANSPORT=http está habilitado, el servidor ahora aplica:
cumplimiento de lista blanca de hosts, incluida la protección contra enlaces comodín
validación de origen para solicitudes que envían un encabezado
Originlímites explícitos de tamaño de cuerpo y respuestas
413saneadaslimitación de tasa en
/mcptiempos de espera de solicitud/encabezado/keep-alive
X-Content-Type-Options: nosniffCache-Control: no-storecargas útiles de error saneadas sin seguimientos de pila (stack traces)
Puntos finales de salud/preparación:
GET /healthGET /readyPOST /mcp
Endurecimiento de SSH y ejecución de comandos
La funcionalidad no ha cambiado, pero la ruta de ejecución es más estricta:
la ejecución de comandos locales sigue usando
spawn(..., { shell: false })los valores de host/usuario SSH no pueden ocultar opciones de CLI
SSH utiliza
BatchMode,IdentitiesOnly, autenticación de clave pública y controles explícitos de vivacidad de conexiónlos búferes de salida están limitados para evitar un crecimiento de memoria ilimitado
dockerLogsInContainerahora valida y escapa los nombres de los contenedores en lugar de interpolar la entrada bruta del usuariola ejecución arbitraria de comandos en contenedores sigue estando disponible solo a través del flujo
pve_exec_in_container, que ya es destructivo y requiere confirmación
Postura de seguridad
Mitigaciones en el repositorio:
versiones de dependencias directas fijadas y
overridesde npm para paquetes transitivos críticosmetadatos de paquetes verificables y enlaces de repositorio para escáneres de npm/paquetes
validación de sincronización de descriptor/versión para artefactos de npm, registro y mercado
redacción de valores similares a tokens/encabezados/contraseñas en los registros
no se devuelven seguimientos de pila ni secretos a los clientes
puertas de CI para lint, comprobación de tipos, compilación, pruebas, validación de metadatos, sincronización de descriptores,
npm pack --dry-runy auditoría
Modelo de amenazas y riesgos residuales: docs/THREAT_MODEL.md
Flujo de publicación
El orden de lanzamiento es estricto:
npm run lintnpm run typechecknpm run buildnpm testnpm audit --include=dev --audit-level=moderatenpm ls expressnpm ls path-to-regexpnpm pack --dry-runnpm packnpm whoaminpm publish --access publicnpm view nandi-proxmox-mcp versionmcp-publisher validate .mcp/server.jsonmcp-publisher publish .mcp/server.json
El release.yml basado en etiquetas ahora publica primero en npm y solo después publica el descriptor del Registro MCP, evitando la deriva entre npm y el registro en la misma versión.
Reserva manual y solución de problemas: docs/RELEASE.md
Desarrollo
npm ci
npm run lint
npm run typecheck
npm run build
npm test
npm run validate:release
npm pack --dry-runPolítica de mantenimiento de la documentación
Este repositorio aplica una puerta de sincronización de documentación previa al commit.
Antes de cerrar un
change,fixorefactor, evalúa siREADME.md,AGENTS.mdyCONTRIBUTING.mddeben actualizarse.Si un documento es relevante para el impacto conductual o de proceso, debe actualizarse en el mismo conjunto de cambios.
Si no se necesita ninguna actualización, se requiere una justificación explícita
no-doc-change.Una tarea no se considera lista para el commit hasta que se satisfaga esta puerta.
Documentación
Registro y mercado
npm:
https://www.npmjs.com/package/nandi-proxmox-mcpRegistro MCP:
https://registry.modelcontextprotocol.io/Listado en el mercado MCP:
https://mcp-marketplace.io/server/io-github-nandi-services-nandi-proxmox-mcp
Licencia
MIT. Ver LICENSE.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/NANDI-Services/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server