Skip to main content
Glama
michaelrice
by michaelrice

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 ejecutar source .venv/bin/activate una 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 setup

Se le solicitará:

  1. Un nombre de destino (p. ej., lab-vcenter), utilizado para referirse a este destino más adelante

  2. Host o IP del vCenter / ESXi

  3. Nombre de usuario y contraseña

  4. Tipo de destino: vcenter o esxi

  5. (Solo vCenter) Nombres del centro de datos y del clúster

  6. Nombre del almacén de datos (datastore)

  7. 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_mcp

O simplemente incluya la ruta absoluta que desee:

claude mcp add --scope user vcenter -- /absolute/path/to/vcenter-mcp/.venv/bin/python -m vcenter_mcp

Las 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

list_vms

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.

create_vm

Crea una máquina virtual que arranca por red primero. Elija un vm_type (plantilla), anulaciones opcionales de CPU/RAM/disco, network_profile opcional.

power_on_vm

Enciende una máquina virtual por nombre para mostrar o ID moref.

power_off_vm

Apaga forzosamente una máquina virtual por nombre para mostrar o ID moref.

delete_vm

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/pytest

Las pruebas se ejecutan en Python 3.10, 3.11 y 3.12 en CI (consulte .github/workflows/test.yml).

Licencia

Apache-2.0

Install Server
A
license - permissive license
A
quality
C
maintenance

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