Kubernetes MCP Server
✨ Funktionen | 🚀 Erste Schritte | 🎥 Demos | ⚙️ Konfiguration | 🛠️ Tools | 🧑💻 Entwicklung
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ Funktionen
Eine leistungsstarke und flexible Kubernetes Model Context Protocol (MCP) -Serverimplementierung mit Unterstützung für Kubernetes und OpenShift .
- ✅ Konfiguration :
- Erkennen Sie automatisch Änderungen in der Kubernetes-Konfiguration und aktualisieren Sie den MCP-Server.
- Zeigen Sie die aktuelle Kubernetes
.kube/config
oder Cluster-Konfiguration an und verwalten Sie sie.
- ✅ Allgemeine Kubernetes-Ressourcen : Führen Sie Vorgänge an beliebigen Kubernetes- oder OpenShift-Ressourcen durch.
- Jede CRUD-Operation (Erstellen oder Aktualisieren, Abrufen, Auflisten, Löschen).
- ✅ Pods : Führen Sie Pod-spezifische Vorgänge durch.
- Listen Sie Pods in allen Namespaces oder in einem bestimmten Namespace auf.
- Holen Sie sich einen Pod nach Namen aus dem angegebenen Namespace.
- Löschen Sie einen Pod nach Namen aus dem angegebenen Namespace.
- Zeigen Sie Protokolle für einen Pod nach Namen aus dem angegebenen Namespace an.
- Führen Sie Exec in einen Pod aus und führen Sie einen Befehl aus.
- Führen Sie ein Container-Image in einem Pod aus und stellen Sie es optional bereit.
- ✅ Namespaces : Kubernetes-Namespaces auflisten.
- ✅ Ereignisse : Zeigen Sie Kubernetes-Ereignisse in allen Namespaces oder in einem bestimmten Namespace an.
- ✅ Projekte : OpenShift-Projekte auflisten.
- ☸️ Helm :
- Installieren Sie ein Helm-Diagramm im aktuellen oder bereitgestellten Namespace.
- Listen Sie Helm-Releases in allen Namespaces oder in einem bestimmten Namespace auf.
- Deinstallieren Sie eine Helm-Version im aktuellen oder bereitgestellten Namespace.
Im Gegensatz zu anderen Kubernetes MCP-Serverimplementierungen handelt es sich hierbei NICHT nur um einen Wrapper um die Befehlszeilentools kubectl
oder helm
. Es handelt sich um eine native Go-basierte Implementierung , die direkt mit dem Kubernetes-API-Server interagiert.
Es ist NICHT erforderlich, externe Abhängigkeiten oder Tools auf dem System zu installieren. Wenn Sie die nativen Binärdateien verwenden, müssen Sie weder Node noch Python auf Ihrem System installiert haben.
- ✅ Leichtgewichtig : Der Server wird als einzelne native Binärdatei für Linux, macOS und Windows verteilt.
- ✅ Hohe Leistung/geringe Latenz : Direkte Interaktion mit dem Kubernetes-API-Server ohne den Aufwand des Aufrufens und Wartens auf externe Befehle.
- ✅ Plattformübergreifend : Verfügbar als native Binärdatei für Linux, macOS und Windows sowie als npm-Paket, Python-Paket und Container-/Docker-Image.
- ✅ Konfigurierbar : Unterstützt Befehlszeilenargumente zum Konfigurieren des Serververhaltens.
- ✅ Gut getestet : Der Server verfügt über eine umfangreiche Testsuite, um seine Zuverlässigkeit und Korrektheit in verschiedenen Kubernetes-Umgebungen sicherzustellen.
🚀 Erste Schritte
Anforderungen
- Zugriff auf einen Kubernetes-Cluster.
Claude Desktop
Verwenden von npx
Wenn Sie npm installiert haben, ist dies der schnellste Weg, um mit kubernetes-mcp-server
auf Claude Desktop zu beginnen.
Öffnen Sie Ihre claude_desktop_config.json
und fügen Sie den MCP-Server zur Liste der mcpServers
hinzu:
VS Code / VS Code Insider
Installieren Sie die Kubernetes MCP-Servererweiterung in VS Code Insiders, indem Sie auf den folgenden Link klicken:
Alternativ können Sie die Erweiterung manuell installieren, indem Sie den folgenden Befehl ausführen:
Goose-Befehlszeilenschnittstelle
Goose CLI ist der einfachste (und günstigste) Weg, um mit Agenten auf Basis künstlicher Intelligenz (KI) loszulegen.
Verwenden von npm
Wenn Sie npm installiert haben, ist dies der schnellste Weg, um mit kubernetes-mcp-server
zu beginnen.
Öffnen Sie Ihre Goose config.yaml
und fügen Sie den MCP-Server zur Liste der mcpServers
hinzu:
🎥 Demos
Diagnose und automatische Behebung einer OpenShift-Bereitstellung
Demo, die zeigt, wie der Kubernetes MCP-Server von Claude Desktop genutzt wird, um eine Bereitstellung in OpenShift ohne Benutzereingriff automatisch zu diagnostizieren und zu reparieren.
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
Vibe: Ein einfaches Spiel programmieren und in OpenShift bereitstellen
In dieser Demo führe ich Sie durch den Prozess der Vibe-Codierung eines einfachen Spiels mit VS Code und zeige Ihnen, wie Sie den Podman MCP-Server und den Kubernetes MCP-Server nutzen, um es in OpenShift bereitzustellen.
Laden Sie GitHub Copilot mit dem Kubernetes MCP-Server in VS Code auf – Einrichtung mit einem Klick!
In dieser Demo zeige ich Ihnen, wie Sie den Kubernetes MCP-Server in VS Code einrichten, indem Sie einfach auf einen Link klicken.
⚙️ Konfiguration
Der Kubernetes MCP-Server kann mithilfe von Befehlszeilenargumenten (CLI) konfiguriert werden.
Sie können die ausführbare CLI-Datei entweder mithilfe von npx
oder uvx
ausführen oder indem Sie die Binärdatei der neuesten Version herunterladen.
Konfigurationsoptionen
Option | Beschreibung |
---|---|
--sse-port | Startet den MCP-Server im Server-Sent Event (SSE)-Modus und lauscht auf dem angegebenen Port. |
--log-level | Legt die Protokollierungsebene fest (Werte von 0-9 ). Ähnlich wie kubectl logging levels . |
--kubeconfig | Pfad zur Kubernetes-Konfigurationsdatei. Falls nicht angegeben, wird versucht, die Konfiguration aufzulösen (im Cluster, Standardspeicherort usw.). |
--read-only | Wenn diese Option aktiviert ist, läuft der MCP-Server im schreibgeschützten Modus. Das bedeutet, dass keine Schreibvorgänge (Erstellen, Aktualisieren, Löschen) im Kubernetes-Cluster möglich sind. Dies ist nützlich, um den Cluster zu debuggen oder zu überprüfen, ohne Änderungen vorzunehmen. |
--disable-destructive | Wenn diese Option aktiviert ist, deaktiviert der MCP-Server alle destruktiven Operationen (Löschen, Aktualisieren usw.) im Kubernetes-Cluster. Dies ist nützlich, um den Cluster zu debuggen oder zu überprüfen, ohne versehentlich Änderungen vorzunehmen. Diese Option hat keine Auswirkung, wenn --read-only verwendet wird. |
🛠️ Werkzeuge
configuration_view
Holen Sie sich den aktuellen Kubernetes-Konfigurationsinhalt als kubeconfig YAML
Parameter:
minified
(boolean
, optional, Standard:true
)- Gibt eine minimierte Version der Konfiguration zurück
- Wenn
true
, werden nur der aktuelle Kontext und relevante Konfigurationsteile beibehalten. - Wenn
false
, werden alle Kontexte, Cluster, Authentifizierungsinformationen und Benutzer zurückgegeben
events_list
Listen Sie alle Kubernetes-Ereignisse im aktuellen Cluster aus allen Namespaces auf
Parameter:
namespace
(string
, optional)- Namespace, aus dem die Ereignisse abgerufen werden sollen. Falls nicht angegeben, werden Ereignisse aus allen Namespaces aufgelistet.
helm_install
Installieren Sie ein Helm-Diagramm im aktuellen oder bereitgestellten Namespace mit dem angegebenen Namen und Diagramm
Parameter:
chart
(string
, erforderlich)- Name des zu installierenden Helm-Charts
- Kann ein lokaler Pfad oder eine Remote-URL sein
- Beispiel:
./my-chart.tgz
oderhttps://example.com/my-chart.tgz
values
(object
, optional)- An das Helm-Diagramm zu übergebende Werte
- Beispiel:
{"key": "value"}
name
(string
, optional)- Name der Helm-Version
- Zufälliger Name, falls nicht angegeben
namespace
(string
, optional)- Namespace zum Installieren des Helm-Diagramms
- Wenn nicht angegeben, wird der konfigurierte Namespace verwendet.
helm_list
Listet alle Helm-Releases im aktuellen oder angegebenen Namespace auf (oder in allen Namespaces, falls angegeben).
Parameter:
namespace
(string
, optional)- Namespace zum Auflisten der Helm-Releases aus
- Wenn nicht angegeben, wird der konfigurierte Namespace verwendet.
all_namespaces
(boolean
, optional)- Wenn
true
, werden Helm-Releases aus allen Namespaces aufgelistet - Wenn
false
, werden Helm-Releases aus dem angegebenen Namespace aufgelistet.
- Wenn
helm_uninstall
Deinstallieren Sie eine Helm-Version im aktuellen oder angegebenen Namespace mit dem angegebenen Namen
Parameter:
name
(string
, erforderlich)- Name der zu deinstallierenden Helm-Version
namespace
(string
, optional)- Namespace zum Deinstallieren der Helm-Version
- Wenn nicht angegeben, wird der konfigurierte Namespace verwendet.
namespaces_list
Listen Sie alle Kubernetes-Namespaces im aktuellen Cluster auf
Parameter: Keine
pods_delete
Löschen Sie einen Kubernetes-Pod im aktuellen oder angegebenen Namespace mit dem angegebenen Namen
Parameter:
name
(string
, erforderlich)- Name des zu löschenden Pods
namespace
(string
, erforderlich)- Namespace, aus dem der Pod gelöscht werden soll
pods_exec
Führen Sie einen Befehl in einem Kubernetes-Pod im aktuellen oder angegebenen Namespace mit dem angegebenen Namen und Befehl aus
Parameter:
command
(string[]
, erforderlich)- Im Pod-Container auszuführender Befehl
- Das erste Element ist der Befehl, der Rest sind Argumente
- Beispiel:
["ls", "-l", "/tmp"]
name
(Zeichenfolge, erforderlich)- Name des Pods
namespace
(Zeichenfolge, erforderlich)- Namespace des Pods
container
(string
, optional)- Name des Pod-Containers, aus dem Protokolle abgerufen werden sollen
pods_get
Holen Sie sich einen Kubernetes-Pod im aktuellen oder bereitgestellten Namespace mit dem angegebenen Namen
Parameter:
name
(string
, erforderlich)- Name des Pods
namespace
(string
, erforderlich)- Namespace, aus dem der Pod abgerufen werden soll
pods_list
Listen Sie alle Kubernetes-Pods im aktuellen Cluster aus allen Namespaces auf
Parameter:
labelSelector
(string
, optional)- Kubernetes-Label-Selektor (z. B. „app=myapp,env=prod“ oder „app in (myapp,yourapp)“). Verwenden Sie diese Option, um die Pods nach Label zu filtern.
pods_list_in_namespace
Listen Sie alle Kubernetes-Pods im angegebenen Namespace im aktuellen Cluster auf
Parameter:
namespace
(string
, erforderlich)- Namespace zum Auflisten von Pods
labelSelector
(string
, optional)- Kubernetes-Label-Selektor (z. B. „app=myapp,env=prod“ oder „app in (myapp,yourapp)“). Verwenden Sie diese Option, um die Pods nach Label zu filtern.
pods_log
Holen Sie sich die Protokolle eines Kubernetes-Pods im aktuellen oder angegebenen Namespace mit dem angegebenen Namen
Parameter:
name
(string
, erforderlich)- Name des Pods, von dem Protokolle abgerufen werden sollen
namespace
(string
, erforderlich)- Namespace, aus dem die Pod-Protokolle abgerufen werden
container
(string
, optional)- Name des Pod-Containers, aus dem Protokolle abgerufen werden sollen
pods_run
Führen Sie einen Kubernetes-Pod im aktuellen oder bereitgestellten Namespace mit dem bereitgestellten Container-Image und optionalem Namen aus.
Parameter:
image
(string
, erforderlich)- Container-Image zur Ausführung im Pod
namespace
(string
, erforderlich)- Namespace zum Ausführen des Pods
name
(string
, optional)- Name des Pods (zufälliger Name, falls nicht angegeben)
port
(number
, optional)- Vom Pod-Container freizugebender TCP/IP-Port
- Wenn nicht angegeben, wird kein Port angezeigt
projects_list
Listen Sie alle OpenShift-Projekte im aktuellen Cluster auf
resources_create_or_update
Erstellen oder aktualisieren Sie eine Kubernetes-Ressource im aktuellen Cluster, indem Sie eine YAML- oder JSON-Darstellung der Ressource bereitstellen
Parameter:
resource
(string
, erforderlich)- Ein JSON oder YAML, das eine Darstellung der Kubernetes-Ressource enthält
- Sollte Felder der obersten Ebene wie API-Version, Art, Metadaten und Spezifikation enthalten
Zu den gängigen API-Versionen und -Arten gehören:
- v1 Pod
- v1-Dienst
- v1-Knoten
- apps/v1-Bereitstellung
- networking.k8s.io/v1 Ingress
resources_delete
Löschen einer Kubernetes-Ressource im aktuellen Cluster
Parameter:
apiVersion
(string
, erforderlich)- API-Version der Ressource (z. B.
v1
,apps/v1
,networking.k8s.io/v1
)
- API-Version der Ressource (z. B.
kind
(string
, erforderlich)- Art der Ressource (z. B.
Pod
,Service
,Deployment
,Ingress
)
- Art der Ressource (z. B.
name
(string
, erforderlich)- Name der Ressource
namespace
(string
, optional)- Namespace, aus dem die Namespace-Ressource gelöscht werden soll
- Wird für clusterbezogene Ressourcen ignoriert
- Verwendet den konfigurierten Namespace, falls nicht angegeben
resources_get
Holen Sie sich eine Kubernetes-Ressource im aktuellen Cluster
Parameter:
apiVersion
(string
, erforderlich)- API-Version der Ressource (z. B.
v1
,apps/v1
,networking.k8s.io/v1
)
- API-Version der Ressource (z. B.
kind
(string
, erforderlich)- Art der Ressource (z. B.
Pod
,Service
,Deployment
,Ingress
)
- Art der Ressource (z. B.
name
(string
, erforderlich)- Name der Ressource
namespace
(string
, optional)- Namespace, aus dem die Namespace-Ressource abgerufen werden soll
- Wird für clusterbezogene Ressourcen ignoriert
- Verwendet den konfigurierten Namespace, falls nicht angegeben
resources_list
Kubernetes-Ressourcen und -Objekte im aktuellen Cluster auflisten
Parameter:
apiVersion
(string
, erforderlich)- API-Version der Ressourcen (z. B.
v1
,apps/v1
,networking.k8s.io/v1
)
- API-Version der Ressourcen (z. B.
kind
(string
, erforderlich)- Art der Ressourcen (z. B.
Pod
,Service
,Deployment
,Ingress
)
- Art der Ressourcen (z. B.
namespace
(string
, optional)- Namespace zum Abrufen der Namespace-Ressourcen
- Wird für clusterbezogene Ressourcen ignoriert
- Listet Ressourcen aus allen Namespaces auf, sofern nicht angegeben
labelSelector
(string
, optional)- Kubernetes-Label-Selektor (z. B. „app=myapp,env=prod“ oder „app in (myapp,yourapp)“). Verwenden Sie diese Option, um die Pods nach Label zu filtern.
🧑💻 Entwicklung
Ausführen mit mcp-inspector
Kompilieren Sie das Projekt und führen Sie den Kubernetes MCP-Server mit mcp-inspector aus, um den MCP-Server zu überprüfen.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Eine leistungsstarke und flexible Kubernetes MCP-Serverimplementierung mit Unterstützung für OpenShift. Erfordert keine zusätzlichen CLI-Tools wie kubectl oder helm.
Related Resources
Related MCP Servers
- -securityAlicense-qualityThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.Last updated -279GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -494GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -116GoMIT License
- -securityAlicense-qualityOpen source MCP server specializing in easy, fast, and secure tools for Databases.Last updated -1,462GoApache 2.0