vcenter-mcp
vcenter-mcp
Un servidor del Protocolo de Contexto de Modelo que expone herramientas de ciclo de vida de máquinas virtuales de VMware vCenter / ESXi a Claude Code y otros clientes MCP. Construido sobre pyVmomi.
Qué hace
Listar máquinas virtuales en un centro de datos de vCenter (agrupadas por host) o en un host ESXi independiente
Crear una máquina virtual (arranque por red primero; aprovisionamiento ligero o grueso; opción de virtualización anidada para destinos ESXi)
Encender y apagar máquinas virtuales
Eliminar máquinas virtuales (apaga primero si está en ejecución, luego destruye desde el disco)
Las búsquedas aceptan un nombre para mostrar o un ID moref (p. ej., vm-42); la ruta moref omite el escaneo del inventario y es más rápida en entornos grandes.
Requisitos previos
Python 3.10 o superior
Un servidor vCenter o un host ESXi independiente al que pueda acceder a través de la red
Una cuenta de vSphere con los privilegios necesarios para lo que planee hacer (solo lectura es suficiente para
list_vms; crear/eliminar requieren los privilegios correspondientes de máquina virtual y grupo de recursos)
Instalación
Instale en un entorno virtual local del proyecto. Usar un venv mantiene a vcenter-mcp y sus dependencias (notablemente pyVmomi) aislados de su Python del sistema.
Desde un clon de este repositorio:
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .Para desarrollo (también instala pytest):
.venv/bin/pip install -e ".[dev]"A lo largo de este README, los comandos usan
.venv/bin/.... Puede en su lugar ejecutarsource .venv/bin/activateuna vez por shell y omitir el prefijo; el resultado es el mismo.
Configurar un destino
Ejecute la configuración interactiva usando el Python del venv:
.venv/bin/python -m vcenter_mcp setupSe le solicitará:
Un nombre de destino (p. ej.,
lab-vcenter), utilizado para referirse a este destino más adelanteHost o IP del vCenter / ESXi
Nombre de usuario y contraseña
Tipo de destino:
vcenteroesxi(Solo vCenter) Nombres del centro de datos y del clúster
Nombre del almacén de datos (datastore)
Uno o más perfiles de red, cada uno con un nombre más uno o más nombres de grupos de puertos
La configuración escribe un archivo en ~/.config/vcenter-mcp/config.json (modo 0600). Vuelva a ejecutarlo en cualquier momento para agregar otro destino o actualizar uno existente.
Estructura del archivo de configuración
{
"default_target": "lab-vcenter",
"targets": {
"lab-vcenter": {
"host": "vcenter.lab.example.com",
"user": "admin@vsphere.local",
"password": "...",
"type": "vcenter",
"datacenter": "Lab DC",
"cluster": "Lab Cluster",
"datastore": "datastore1",
"networks": {
"standard": ["VM Network"],
"secure-boot": ["pg-secure-1", "pg-secure-2"]
},
"default_network": "standard"
}
},
"templates": {
"esxi": { "cpu": 4, "ram_mb": 16384, "disk_gb": 100, "disk_provisioning": "thin", "guest_id": "vmkernel7Guest", "vhv": true },
"ubuntu": { "cpu": 2, "ram_mb": 4096, "disk_gb": 40, "disk_provisioning": "thin", "guest_id": "ubuntu64Guest", "vhv": false },
"rhel": { "cpu": 2, "ram_mb": 4096, "disk_gb": 40, "disk_provisioning": "thin", "guest_id": "rhel9_64Guest", "vhv": false }
}
}Un perfil de red es una lista de grupos de puertos; la primera entrada se convierte en la NIC de arranque. Para agregar sus propios tipos de máquinas virtuales, agregue entradas a templates: las cadenas vm_type pasadas a create_vm se comparan con este diccionario.
Registrar con Claude Code
Registre el servidor MCP usando el Python del venv mediante la ruta absoluta. Claude Code inicia el servidor en un shell nuevo que no hereda su venv activado, por lo que se requiere la ruta absoluta; apuntar a un python básico aquí fallará al importar vcenter_mcp.
VCENTER_MCP_DIR="$(pwd)" # run this from the repo root, after install
claude mcp add --scope user vcenter -- "$VCENTER_MCP_DIR/.venv/bin/python" -m vcenter_mcpO simplemente incluya la ruta absoluta que desee:
claude mcp add --scope user vcenter -- /absolute/path/to/vcenter-mcp/.venv/bin/python -m vcenter_mcpLas herramientas de lectura (list_vms) son seguras para permitir sin solicitar confirmación. Agréguelas a permissions.allow en ~/.claude/settings.json:
{
"permissions": {
"allow": [
"mcp__vcenter__list_vms"
]
}
}Las herramientas destructivas (create_vm, power_on_vm, power_off_vm, delete_vm) intencionalmente no están en la lista de permitidos predeterminada; Claude le solicitará confirmación por cada llamada.
Herramientas
Herramienta | Qué hace |
| Lista las máquinas virtuales en un destino. Los destinos vCenter agrupan por host dentro de un centro de datos; los destinos ESXi listan todo en el host. |
| Crea una máquina virtual que arranca por red primero. Elija un |
| Enciende una máquina virtual por nombre para mostrar o ID moref. |
| Apaga forzosamente una máquina virtual por nombre para mostrar o ID moref. |
| Elimina permanentemente una máquina virtual (apaga primero si está en ejecución, luego destruye desde el disco). |
Notas sobre TLS
vcenter-mcp se conecta con un contexto SSL no verificado, que es el mismo valor predeterminado que usan govc y la mayoría del código de ejemplo de pyVmomi porque los vCenters de laboratorio suelen tener certificados autofirmados. Si su destino utiliza un certificado correctamente firmado y prefiere una verificación real, cambie _ssl_context() en src/vcenter_mcp/client.py.
Desarrollo
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytestLas pruebas se ejecutan en Python 3.10, 3.11 y 3.12 en CI (consulte .github/workflows/test.yml).
Licencia
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/michaelrice/vcenter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server