Skip to main content
Glama
michaelrice
by michaelrice

vcenter-mcp

Ein Model Context Protocol-Server, der VMware vCenter / ESXi VM-Lebenszyklus-Werkzeuge für Claude Code und andere MCP-Clients bereitstellt. Basiert auf pyVmomi.

Was es tut

  • VMs auf einem vCenter-Datencenter (gruppiert nach Host) oder auf einem eigenständigen ESXi-Host auflisten

  • Eine VM erstellen (zuerst Netzwerk-Boot; Thin- oder Thick-Provisioning; Nested-Virt-Option für ESXi-Ziele)

  • VMs ein- und ausschalten

  • VMs löschen (schaltet sie zuerst aus, falls sie laufen, und löscht sie dann von der Festplatte)

Suchanfragen akzeptieren entweder einen Anzeigenamen oder eine moref-ID (z. B. vm-42) — der moref-Pfad überspringt den Inventar-Scan und ist in großen Umgebungen schneller.

Voraussetzungen

  • Python 3.10 oder neuer

  • Ein vCenter Server oder eigenständiger ESXi-Host, den Sie über das Netzwerk erreichen können

  • Ein vSphere-Konto mit den Berechtigungen, die für Ihre geplanten Aktionen erforderlich sind (schreibgeschützt reicht für list_vms; Erstellen / Löschen erfordert die entsprechenden VM- und Ressourcen-Pool-Berechtigungen)

Installation

Installieren Sie es in ein projektlokales Virtualenv. Die Verwendung eines venv hält vcenter-mcp und seine Abhängigkeiten (insbesondere pyVmomi) von Ihrem System-Python isoliert.

Von einem Klon dieses Repositorys:

python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .

Für die Entwicklung (installiert auch pytest):

.venv/bin/pip install -e ".[dev]"

In dieser README verwenden Befehle .venv/bin/.... Sie können stattdessen einmal pro Shell source .venv/bin/activate ausführen und das Präfix weglassen — das Ergebnis ist dasselbe.

Ein Ziel konfigurieren

Führen Sie die interaktive Einrichtung mit dem Python des venv aus:

.venv/bin/python -m vcenter_mcp setup

Sie werden nach Folgendem gefragt:

  1. Ein Zielname (z. B. lab-vcenter) — wird verwendet, um später auf dieses Ziel zu verweisen

  2. Host oder IP des vCenter / ESXi

  3. Benutzername und Passwort

  4. Zieltyp: vcenter oder esxi

  5. (Nur vCenter) Datencenter- und Cluster-Namen

  6. Datastore-Name

  7. Ein oder mehrere Netzwerkprofile, jeweils ein Name plus ein oder mehrere Portgruppen-Namen

Das Setup schreibt eine Konfiguration nach ~/.config/vcenter-mcp/config.json (Modus 0600). Führen Sie es jederzeit erneut aus, um ein weiteres Ziel hinzuzufügen oder ein bestehendes zu aktualisieren.

Struktur der Konfigurationsdatei

{
  "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 }
  }
}

Ein Netzwerkprofil ist eine Liste von Portgruppen; der erste Eintrag wird zur Boot-NIC. Um Ihre eigenen VM-Typen hinzuzufügen, fügen Sie Einträge zu templates hinzu — vm_type-Strings, die an create_vm übergeben werden, werden mit diesem Dictionary abgeglichen.

Registrierung bei Claude Code

Registrieren Sie den MCP-Server mit dem Python des venv über den absoluten Pfad. Claude Code startet den Server in einer neuen Shell, die Ihr aktiviertes venv nicht erbt, daher ist der absolute Pfad erforderlich — ein Verweis auf ein bloßes python hier führt dazu, dass vcenter_mcp nicht importiert werden kann.

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

Oder geben Sie einfach den absoluten Pfad direkt an:

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

Lese-Werkzeuge (list_vms) können sicher ohne Nachfrage zugelassen werden. Fügen Sie sie zu permissions.allow in ~/.claude/settings.json hinzu:

{
  "permissions": {
    "allow": [
      "mcp__vcenter__list_vms"
    ]
  }
}

Die destruktiven Werkzeuge (create_vm, power_on_vm, power_off_vm, delete_vm) sind absichtlich nicht in der Standard-Allow-Liste enthalten — Claude wird Sie bei jedem Aufruf um Bestätigung bitten.

Werkzeuge

Werkzeug

Was es tut

list_vms

Listet VMs auf einem Ziel auf. vCenter-Ziele gruppieren nach Host innerhalb eines Datacenters; ESXi-Ziele listen alles auf dem Host auf.

create_vm

Erstellt eine VM, die zuerst per Netzwerk bootet. Wählen Sie einen vm_type (Vorlage), optionale CPU/RAM/Festplatten-Überschreibungen, optionales network_profile.

power_on_vm

Schaltet eine VM anhand des Anzeigenamens oder der moref-ID ein.

power_off_vm

Schaltet eine VM hart aus (anhand des Anzeigenamens oder der moref-ID).

delete_vm

Löscht eine VM dauerhaft (schaltet sie zuerst aus, falls sie läuft, und löscht sie dann von der Festplatte).

Hinweise zu TLS

vcenter-mcp verbindet sich mit einem nicht verifizierten SSL-Kontext. Dies ist der gleiche Standard, den govc und die meisten pyVmomi-Beispielcodes verwenden, da Labor-vCenter sehr häufig selbstsignierte Zertifikate haben. Wenn Ihr Ziel ein ordnungsgemäß signiertes Zertifikat verwendet und Sie eine echte Verifizierung bevorzugen, tauschen Sie _ssl_context() in src/vcenter_mcp/client.py aus.

Entwicklung

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

Tests laufen in der CI auf Python 3.10, 3.11 und 3.12 (siehe .github/workflows/test.yml).

Lizenz

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