Skip to main content
Glama

openstack-mcp

Ein MCP-Server, der es einem KI-Assistenten ermöglicht, eine OpenStack-Cloud zu inspizieren und zu bedienen – Instanzen auflisten, Quotas prüfen, das Konsolenprotokoll einer festhängenden VM lesen und (wenn Sie es erlauben) Server erstellen und löschen.

Funktioniert mit jeder OpenStack-Umgebung: CloudPe, OVHcloud, Infomaniak, Universitäts- und Forschungs-Clouds oder einem lokalen DevStack. Alles, was openstacksdk erreichen kann, lässt sich damit steuern.

Standardmäßig nur lesend. Schreibzugriff erfordert eine ausdrückliche Freigabe, Löschzugriff eine zweite. Ein Assistent, der Ihr Projekt auflisten kann, kann es nicht abreißen, sofern Sie nicht entschieden haben, dass er das darf.

Schnellstart

Aus dem Quellcode installieren (noch nicht auf PyPI):

pipx install git+https://github.com/abhishekambad-leapswitch/openstack-mcp

Richten Sie ihn auf eine Cloud aus. openstacksdk liest die Standard-OpenStack-Konfiguration, also entweder eine clouds.yaml:

# ~/.config/openstack/clouds.yaml
clouds:
  cloudpe:
    auth_type: v3applicationcredential
    auth:
      auth_url: https://<your-region>.cloudpe.com:5000/v3
      application_credential_id: <id>
      application_credential_secret: <secret>
    region_name: RegionOne

...oder die üblichen Umgebungsvariablen (OS_AUTH_URL, OS_APPLICATION_CREDENTIAL_ID, OS_APPLICATION_CREDENTIAL_SECRET). Dieser Server speichert oder überträgt Ihre Anmeldedaten niemals selbst – er übergibt sie an openstacksdk, das sie auf dieselbe Weise auflöst wie das openstack-CLI.

Claude Code

claude mcp add openstack --env OS_CLOUD=cloudpe -- openstack-mcp

Claude Desktop / Cursor / jeder MCP-Client

{
  "mcpServers": {
    "openstack": {
      "command": "openstack-mcp",
      "env": { "OS_CLOUD": "cloudpe" }
    }
  }
}

Fragen Sie dann Dinge wie „Welche VMs sind down?“, „Habe ich für drei weitere m1.large noch Budget?“ oder „web-03 akzeptiert kein SSH- Schlüssel – prüfen Sie das Konsolenprotokoll.“

Um zu bestätigen, was Sie verdrahtet haben, bevor Sie es vertrauen, führen Sie eine Trockenrennung aus – sie gibt die aufgelöste Konfiguration und genau die Tools aus, die exponiert sind, ohne mit Verbindung zu bedienen oder einen Verbindung:

openstack-mcp --check
openstack-mcp 0.1.0
cloud: cloudpe
mode: read-only
max items per list: 50
12 tools: check_capacity, cloud_info, get_console_output, get_quotas, get_server,
list_flavors, list_images, list_keypairs, list_networks, list_security_groups,
list_servers, list_volumes

Das Sicherheitsmodell

Die meisten Cloud-MCP-Server übergeben einem Assistenten die gesamte API und hoffen auf den Best. Dieser funktioniert mit Zugriffssperren, denn „Lösche die Test-VMs“ ist ein Satz, den ein Modell missverstehen kann.

Umgebungsvariable

Wirkung

(nicht gesetzt)

Nur lesen. 12 Inspektions-Tools. Schreib-Tools sind gar nicht registriert – das Modell kann sie nicht sehen und aufrufen.

OPENSTACK_MCP_ALLOW_WRITE=true

Ergänzt create_servers (14 Tools).

OPENSTACK_MCP_ALLOW_DELETE=true

Ergänzt delete_server (15 Tools). Verlangt zusätzlich ALLOW_WRITE – Löschen ohne Schreiben wird als fehl definiert und ignoriert.

OPENSTACK_MCP_MAX_ITEMS=50

Begrenzt, wie viele Elemente ein Listen-Tool zurückgibt.

OPENSTACK_MCP_CLOUD / OS_CLOUD

Welcher clouds.yaml-Eintrag verwendet wird.

Zwei weitere Schutzmechanismen:

  • delete_server verlangt eine Bestätigung. Sie müssen confirm_name mit dem exakten Namen der aufgelösten Instanz angeben. Wenn Sie ihn bitten, web-1 zu löschen, während die VM web-01 heißt, verweigert die VM die Löschung, statt zu raten.

  • Die Tools tragen MCP-Annotationen (read_only_hint, destructive_hint), sodass Clients, die das Risiko vor dem Ausführen eines Tools sichtbar machen, das korrekt tun können.

Diese Tool-Freigabe wird bei der Registrierung erzwungen, nicht durch freundliches Bitten des Modells – in der Testsuite wird das über eine reale stdio-Sitzung nachgewiesen.

Tools

Lesen (immer verfügbar)

Tool

Zweck

cloud_info

Zeigt an, auf welche Cloud, Region und Projekt Sie zeigen, und welche Operationen aktiv sind

list_servers

Instanzen mit Status und IP; filterbar nach Status oder Namenszeichenkette

get_server

Alle Details einer Instanz: Flavor, Image, Schlüsselpaar, Sicherheitsgruppen, Adressen

list_flavors

Instanzgrößen mit vCPU, RAM, Speicherplatz

list_images

Bootfähige Images

list_networks

Netzwerke; kennzeichnet welche extern sind

list_security_groups

Sicherheitsgruppen und Regelanzahl

list_keypairs

Registrierte SSH-Schlüsselpaare

list_volumes

Block-Speichervolumen und woran sie hängen

get_quotas

Compute-Quota-Verbrauch verglichen mit Grenzen

check_capacity

Ob N Instanzen eines Flavors ins Quota passen und was ihn blocken, wenn nicht

get_console_output

Serielles Konsolenprotokoll – für VMs, die booten, aber nicht erreichbar sind

Schreiben (opt-in)

Tool

Zweck

create_servers

Erstellt eine oder mehrere Instanzen; count > 1 benennt sie per <prefix>-01, -02, …

power_action

Start / Stopp / Reboot

delete_server

Löscht eine Instanz, mit Liefername-Bestätigung (erfordert ALLOW_DELETE)

Zwei Design-Entscheidungen, die Sie kennen sollten

Antworten sind bewusst schlank. openstacksdk liefert über 60 Zeilen pro Server. Alles User finden anrichten zu füttern ist langsam und teuer und begraben die nützlichen Felder. Deshalb geben alle Tools eine bereinigte Sicht zurück – einblock. Bei einem Server bleiben id, name, Status und eine flache {network: [ips]}-Map, statt der verschachtelten Adressstruktur von nova.

check_capacity gibt es, damit Batchäufe früh fehlschlagen. Wenn man acht VMs erwartet und noch der fünften die Quota-Grenze entdeckt, entsteht ein halbfertiges Durcheinander. Dieses Werkzeug berichtet, ob zuerst Instances, vCPUs oder RAM blocken, bevor etwas tatsächlich erstellt wird. create_servers meldet darüber hinaus Teilfehlschläge pro Instanz, statt das Errungene zu verwerfen.

Entwicklung

git clone https://github.com/abhishekambad-leapswitch/openstack-mcp
cd openstack-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest && ruff check .

Die Testsuite läuft vollständig offline gegen eine openstacksdk-Verbindung ohne echte Cloud – keine Cloud, keine Zugangsdaten, keine Kosten. Sie deckt die Tool-Gateing, das Kürzen, die Quoten-Arithmetik, die Berichte von Teilfehlern und die Löschbestätigung ab.

Größenordnung

Für das deklarative Aufsetzen größerer Gruppen siehe cloudpe-terraform-bulk-vm – Terraform für die Massenerstellung von VMs auf demselben API.

Lizenz

MIT

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

View all MCP Connectors

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/abhishekambad-leapswitch/openstack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server