Skip to main content
Glama
Flux159
by Flux159

MCP-Server Kubernetes

CI SpracheBrötchen Kubernetes Docker Sterne Probleme PRs willkommen Letzter Commit Schmiedeabzeichen

MCP-Server, der eine Verbindung zu einem Kubernetes-Cluster herstellen und diesen verwalten kann.

https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed

Verwendung mit Claude Desktop

{
  "mcpServers": {
    "kubernetes": {
      "command": "npx",
      "args": ["mcp-server-kubernetes"]
    }
  }
}

Der Server verbindet sich automatisch mit Ihrem aktuellen Kubectl-Kontext. Stellen Sie sicher, dass Sie Folgendes haben:

  1. kubectl installiert und in Ihrem PATH

  2. Eine gültige Kubeconfig-Datei mit konfigurierten Kontexten

  3. Zugriff auf einen für kubectl konfigurierten Kubernetes-Cluster (z. B. Minikube, Rancher Desktop, GKE usw.)

  4. Helm v3 installiert und in Ihrem PATH (kein Tiller erforderlich). Optional, wenn Sie Helm nicht verwenden möchten.

Sie können Ihre Verbindung überprüfen, indem Sie Claude bitten, Ihre Pods aufzulisten oder eine Testbereitstellung zu erstellen.

Wenn Fehler auftreten, öffnen Sie ein Standardterminal und führen Sie kubectl get pods aus, um zu prüfen, ob Sie ohne Probleme mit den Anmeldeinformationen eine Verbindung zu Ihrem Cluster herstellen können.

Related MCP server: k8m

Verwendung mit mcp-chat

mcp-chat ist ein CLI-Chat-Client für MCP-Server. Sie können ihn zur Interaktion mit dem Kubernetes-Server verwenden.

npx mcp-chat --server "npx mcp-server-kubernetes"

Alternativ können Sie Ihre vorhandene Claude Desktop-Konfigurationsdatei von oben übergeben (Linux sollte den richtigen Pfad zur Konfiguration übergeben):

Mac:

npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"

Windows:

npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"

Merkmale

  • [x] Verbindung zu einem Kubernetes-Cluster herstellen

  • [x] Liste alle Pods, Dienste, Bereitstellungen

  • [x] Auflisten, Knoten beschreiben

  • [x] Pod erstellen, beschreiben, löschen

  • [x] Alle Namespaces auflisten, einen Namespace erstellen

  • [x] Erstellen Sie benutzerdefinierte Pod- und Bereitstellungskonfigurationen und aktualisieren Sie Bereitstellungsreplikate

  • [x] Erstellen, Beschreiben, Löschen, Aktualisieren eines Dienstes

  • [x] Erstellen, Abrufen, Aktualisieren, Löschen einer ConfigMap

  • [x] Protokolle von einem Pod zum Debuggen abrufen (unterstützt Pods, Bereitstellungen, Jobs und Label-Selektoren)

  • [x] Unterstützung von Helm v3 für die Installation von Diagrammen

    • Installieren Sie Diagramme mit benutzerdefinierten Werten

    • Deinstallieren von Releases

    • Aktualisieren vorhandener Versionen

    • Unterstützung für Namespaces

    • Unterstützung für Versionsspezifikation

    • Unterstützung für benutzerdefinierte Repositories

  • [x] kubectl explain und kubectl api-resources Unterstützung

  • [x] Kubernetes-Ereignisse aus dem Cluster abrufen

  • [x] Portweiterleitung zu einem Pod oder Dienst

  • [x] Cronjobs erstellen, auflisten und beschreiben

  • [x] Nicht-destruktiver Modus für Lese- und Erstellungs-/Aktualisierungszugriff auf Cluster

Lokale Entwicklung

Stellen Sie sicher, dass Sie bun installiert haben. Klonen Sie das Repo und installieren Sie die Abhängigkeiten:

git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install

Entwicklungs-Workflow

  1. Starten Sie den Server im Entwicklungsmodus (achtet auf Dateiänderungen):

bun run dev
  1. Führen Sie Unit-Tests aus:

bun run test
  1. Erstellen Sie das Projekt:

bun run build
  1. Lokales Testen mit Inspector

npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
  1. Lokales Testen mit Claude Desktop

{
  "mcpServers": {
    "mcp-server-kubernetes": {
      "command": "node",
      "args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
    }
  }
}
  1. Lokales Testen mit mcp-chat

bun run chat

Beitragen

Weitere Einzelheiten finden Sie in der Datei CONTRIBUTING.md .

Fortschrittlich

Zusätzliche erweiterte Funktionen

Weitere erweiterte Informationen, beispielsweise zur Verwendung des SSE-Transports und des nicht-destruktiven Modus mit ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS , finden Sie in der Datei ADVANCED_README.md .

Architektur

Unter diesem DeepWiki-Link finden Sie einen ausführlicheren Architekturüberblick von Devin.

In diesem Abschnitt wird die Architektur auf hoher Ebene des MCP Kubernetes-Servers beschrieben.

Anforderungsfluss

Das folgende Sequenzdiagramm veranschaulicht, wie Anfragen durch das System fließen:

sequenceDiagram
    participant Client
    participant Transport as StdioTransport
    participant Server as MCP Server
    participant Handler as Request Handler
    participant K8sManager as KubernetesManager
    participant K8s as Kubernetes API

    Client->>Transport: Send Request via STDIO
    Transport->>Server: Forward Request

    alt Tools Request
        Server->>Handler: Route to tools handler
        Handler->>K8sManager: Execute tool operation
        K8sManager->>K8s: Make API call
        K8s-->>K8sManager: Return result
        K8sManager-->>Handler: Process response
        Handler-->>Server: Return tool result
    else Resource Request
        Server->>Handler: Route to resource handler
        Handler->>K8sManager: Get resource data
        K8sManager->>K8s: Query API
        K8s-->>K8sManager: Return data
        K8sManager-->>Handler: Format response
        Handler-->>Server: Return resource data
    end

    Server-->>Transport: Send Response
    Transport-->>Client: Return Final Response

Veröffentlichung einer neuen Version

Gehen Sie zur Release-Seite , klicken Sie auf „Neues Release entwerfen“, klicken Sie auf „Tag auswählen“ und erstellen Sie ein neues Tag, indem Sie eine neue Versionsnummer im Semver-Format „v{major}.{minor}.{patch}“ eingeben. Schreiben Sie anschließend einen Release-Titel „Release v{major}.{minor}.{patch}“ und gegebenenfalls eine Beschreibung/ein Änderungsprotokoll. Klicken Sie anschließend auf „Release veröffentlichen“.

Dadurch wird ein neues Tag erstellt, das über den cd.yml-Workflow den Build eines neuen Releases auslöst. Nach erfolgreichem Abschluss wird das neue Release auf npm veröffentlicht. Beachten Sie, dass die Version von package.json nicht manuell aktualisiert werden muss, da der Workflow die Versionsnummer in der Datei package.json automatisch aktualisiert und einen Commit an main sendet.

Nicht geplant

Authentifizierung / Hinzufügen von Clustern zu kubectx.

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/Flux159/mcp-server-kubernetes'

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