/ Verzeichnis / Playground / Kubernetes MCP Server
● Community containers 🔑 Eigener Schlüssel nötig

Kubernetes MCP Server

von containers · containers/kubernetes-mcp-server

kubectl, aber von Claude gesteuert — verwendet die eigene kubeconfig + RBAC, unterstützt jeden Cluster (vanilla k8s, OpenShift, EKS, GKE, AKS, k3s).

kubernetes-mcp-server (containers org) ist ein einzelnes Go-Binary, das mit jedem Kubernetes-API-Server kommuniziert und dabei die bestehende kubeconfig verwendet. Es stellt die Standard-Verben (list/get/apply/delete/log/exec) als MCP-Tools bereit und respektiert dabei RBAC — Least Privilege funktioniert also weiterhin. Unterstützt auch OpenShift-Erweiterungen.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

kubernetes-mcp-containers.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kubernetes-mcp-containers",
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "kubernetes-mcp-containers": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "kubernetes-mcp-server@latest"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add kubernetes-mcp-containers -- npx -y kubernetes-mcp-server@latest

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: Kubernetes MCP Server

Einen Produktionsincident auf Kubernetes triagieren

👤 SREs / Platform-Engineers ⏱ ~10 min intermediate

Wann einsetzen: Eine App verhält sich in Produktion falsch; Pods, Events und Logs sollen ohne Alt-Tab eingesehen werden.

Voraussetzungen
  • kubeconfig mit Zugriff auf den Cluster — Standard aws eks update-kubeconfig oder Äquivalent
Ablauf
  1. Ungesunde Pods finden
    k8s: im Kontext prod-us-east, Namespace checkout, Pods auflisten, die nicht im Running-Zustand sind. Grund + Restart-Anzahl einschließen.✓ Kopiert
    → Pods mit State, Grund, Restarts angezeigt
  2. Events abrufen
    Events in dem Namespace aus den letzten 30 Minuten abrufen, nach Zeit sortiert.✓ Kopiert
    → Event-Liste; OOMKilled oder ImagePullBackOff sichtbar, falls vorhanden
  3. Logs abrufen
    Für den Pod mit dem neuesten Restart die Logs des vorherigen Containers abrufen (letzte 200 Zeilen).✓ Kopiert
    → Stack-Trace / Ursache sichtbar
  4. Diagnostizieren
    Zusammenfassen: Was ist die wahrscheinliche Ursache und was ist zu tun? Konkret sein.✓ Kopiert
    → Konkreter nächster Schritt (z. B. Speicherlimit erhöhen + ausrollen)

Ergebnis: Triage in unter 5 Minuten mit zitierten Pod-Namen und Log-Zeilen.

Fallstricke
  • Logs eines fehlenden vorherigen Containers nicht verfügbar — Wenn Pod nur einmal neu gestartet wurde, aktuelle Container-Logs prüfen; vorherige nur bei Absturz
  • Falscher Kontext — Kontext immer pro Aufruf angeben; nicht auf current-context-Drift verlassen
Kombinieren mit: sentry · github

Ein Deployment mit Cluster-Kontext erstellen

👤 App-Entwickler, die Manifeste schreiben ⏱ ~20 min intermediate

Wann einsetzen: Ein neues Deployment wird benötigt und soll den Cluster-Konventionen entsprechen.

Ablauf
  1. Bestehendes inspizieren
    k8s: ein Beispiel-Deployment im Namespace apps abrufen. Labels, Security-Context und Resources sollen übernommen werden.✓ Kopiert
    → Repräsentatives Deployment-YAML zurückgegeben
  2. Neu erstellen
    Jetzt ein neues Deployment für image-resizer:1.2.0, 2 Replicas, Port 8080 erstellen, die Konventionen einhalten.✓ Kopiert
    → YAML respektiert Cluster-Konventionen
  3. Dry-run anwenden
    Mit --dry-run=server anwenden. Validierungsfehler melden.✓ Kopiert
    → Server-seitige Validierung erfolgreich; kein ApplyConfiguration-Drift

Ergebnis: Manifest entspricht beim ersten Versuch den Cluster-Idiomen.

Fallstricke
  • PSA-Labels vergessen — Zuerst die Pod-Security-Labels des Namespaces lesen
Kombinieren mit: filesystem · github

Helm-Releases über Namespaces hinweg prüfen

👤 Platform-Team ⏱ ~25 min intermediate

Wann einsetzen: Quartalsmäßig: veraltete Chart-Versionen in der Fleet finden.

Ablauf
  1. Alle Releases auflisten
    k8s/Helm: alle Releases in jedem Namespace auflisten. Chart + Version + appVersion einschließen.✓ Kopiert
    → Vollständige Release-Tabelle
  2. Veraltete hervorheben
    Für jedes die neueste Chart-Version vergleichen. Releases markieren, die mehr als 2 Minor-Versionen zurückliegen.✓ Kopiert
    → Markierter Satz mit aktueller vs. neuester Version

Ergebnis: Upgrade-Backlog mit Prioritätsreihenfolge.

Fallstricke
  • Gemischte Helm-2-Überreste — Auf v3-Releases filtern; das MCP behandelt nur Helm 3

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

kubernetes-mcp-containers + sentry

Fehler mit Pod-Neustarts korrelieren

Sentry: Fehler-Spike um 14:00. k8s: Pod-Neustarts im Namespace checkout zu dem Zeitpunkt?✓ Kopiert
kubernetes-mcp-containers + github

PR mit Manifest-Fix öffnen

k8s: fehlerhafte Speicherbegrenzung identifizieren. GitHub: PR zum Erhöhen in helm/values.yaml öffnen.✓ Kopiert
kubernetes-mcp-containers + mcp-grafana

k8s-Status mit Prometheus quervergleichen

k8s: Pod startet neu. Grafana: Speichernutzungs-History für den Pod ziehen.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_resources context?, namespace?, kind: str, label_selector? Discovery 1 API-Aufruf
get_resource context?, namespace?, kind, name Bestimmtes Element inspizieren 1 Aufruf
apply_yaml context?, yaml: str, dry_run?: bool Erstellen oder aktualisieren 1 Aufruf
delete_resource context?, namespace?, kind, name Entfernen 1 Aufruf
get_logs context?, namespace, pod, container?, previous?, tail? Runtime inspizieren 1 Aufruf
exec context?, namespace, pod, container?, command: str[] Innerhalb Container diagnostizieren 1 Aufruf
list_events context?, namespace, since? Nach OOMKilled/ImagePullBackOff suchen 1 Aufruf
list_helm_releases context?, namespace? Helm-Audit 1 Aufruf

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Durch kube-apiserver-QPS begrenzt (Standard ~50)
Tokens pro Aufruf
200–8000 (Logs/YAML können groß sein)
Kosten in €
Kostenloser Open Source; Cluster-Rechnung gilt
Tipp
--tail bei Logs aggressiv verwenden; niemals get pods -o yaml -A auf riesigen Clustern

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: was die kubeconfig-User haben — RBAC server-seitig erzwungen
Credential-Speicherung: kubeconfig-Datei; über Cloud-Provider rotieren
Datenabfluss: Nur der eigene kube-API-Endpunkt
Niemals gewähren: cluster-admin für eine mit LLM verwendete kubeconfig

Fehlerbehebung

Häufige Fehler und Lösungen

Unauthorized / 403

RBAC verweigert das Verb; kubectl auth can-i für den User prüfen

Prüfen: kubectl auth can-i get pods -n checkout
Verbindung abgelehnt

VPN nicht aktiv oder Kontext zeigt auf falschen Endpunkt; kubectl cluster-info prüfen

Apply abgelehnt: Validierungsfehler

Zuerst mit dry_run=server ausführen; genauen Fehler anzeigen

Logs zu groß

tail-Parameter verwenden; Standard ist das gesamte Log

Alternativen

Kubernetes MCP Server vs. andere

AlternativeWann stattdessenKompromiss
kubectl-mcp (andere Forks)Ein anderes Binary bevorzugt wirdWeniger aktiv gewartet
Lens / k9sInteraktive UI statt LLM gewünschtKeine Automatisierungsschicht
Argo CD MCPNur GitOpsIndirekt; deployt via Git, nicht direkte API

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen