Integrations
Provides a comprehensive interface for managing Kubernetes clusters, including resource discovery, listing, detailed inspection, log retrieval, metrics collection, event tracking, and resource creation through a standardized MCP protocol.
Supports creation of Kubernetes resources from YAML manifests, enabling deployment of complex resources through the createorUpdateResource tool.
Kubernetes MCP Server
Ein Kubernetes Model Context Protocol (MCP)-Server, der Tools für die Interaktion mit Kubernetes-Clustern über eine standardisierte Schnittstelle bereitstellt.
Merkmale
- API-Ressourcenerkennung : Holen Sie sich alle verfügbaren API-Ressourcen in Ihrem Kubernetes-Cluster
- Ressourcenauflistung : Listen Sie Ressourcen aller Art mit optionaler Namespace- und Labelfilterung auf
- Ressourcendetails : Erhalten Sie detaillierte Informationen zu bestimmten Kubernetes-Ressourcen
- Ressourcenbeschreibung : Erhalten Sie umfassende Beschreibungen der Kubernetes-Ressourcen
- Pod-Protokolle : Rufen Sie Protokolle von bestimmten Pods ab
- Knotenmetriken : Erhalten Sie Metriken zur Ressourcennutzung für bestimmte Knoten
- Pod-Metriken : Erhalten Sie CPU- und Speichermetriken für bestimmte Pods
- Ereignisliste : Listet Ereignisse innerhalb eines Namespace oder für eine bestimmte Ressource auf.
- Ressourcenerstellung : Erstellen Sie neue Kubernetes-Ressourcen aus einem Manifest.
- Standardisierte Schnittstelle : Verwendet das MCP-Protokoll für eine konsistente Tool-Interaktion
- Flexible Konfiguration : Unterstützt verschiedene Kubernetes-Kontexte und Ressourcenbereiche
Voraussetzungen
- Go 1.20 oder höher
- Zugriff auf einen Kubernetes-Cluster
kubectl
mit entsprechendem Clusterzugriff konfiguriert
Installation
- Klonen Sie das Repository:
- Installieren Sie Abhängigkeiten:
- Erstellen Sie den Server:
Verwendung
Starten des Servers
Führen Sie den Server aus:
Der Server wird gestartet und wartet auf stdin/stdout auf MCP-Protokollnachrichten.
Verfügbare Tools
1. API getAPIResources
Ruft alle verfügbaren API-Ressourcen im Kubernetes-Cluster ab.
Parameter:
includeNamespaceScoped
(Boolesch): Ob Ressourcen mit Namespace-Bereich eingeschlossen werden sollen (Standardwert: „true“)includeClusterScoped
(Boolesch): Ob clusterbezogene Ressourcen eingeschlossen werden sollen (Standardwert: „true“)
Beispiel:
2. listResources
Listet alle Instanzen eines bestimmten Ressourcentyps auf.
Parameter:
Kind
(Zeichenfolge, erforderlich): Die Art der aufzulistenden Ressource (z. B. „Pod“, „Bereitstellung“)namespace
(Zeichenfolge): Der Namespace, aus dem Ressourcen aufgelistet werden sollen (wenn er weggelassen wird, werden für Namespace-Ressourcen alle Namespaces aufgelistet)labelSelector
(Zeichenfolge): Filtern Sie Ressourcen nach dem Label-Selektor
Beispiel:
3. getResource
Ruft detaillierte Informationen zu einer bestimmten Ressource ab.
Parameter:
kind
(Zeichenfolge, erforderlich): Die Art der abzurufenden Ressource (z. B. „Pod“, „Bereitstellung“)name
(Zeichenfolge, erforderlich): Der Name der abzurufenden Ressourcenamespace
(Zeichenfolge): Der Namespace der Ressource (wenn es sich um eine Namespace-Ressource handelt)
Beispiel:
4. describeResource
Beschreibt eine Ressource im Kubernetes-Cluster basierend auf der angegebenen Art und dem angegebenen Namen, ähnlich wie kubectl describe
.
Parameter:
Kind
(Zeichenfolge, erforderlich): Die Art der zu beschreibenden Ressource (z. B. „Pod“, „Bereitstellung“)name
(Zeichenfolge, erforderlich): Der Name der zu beschreibenden Ressourcenamespace
(Zeichenfolge): Der Namespace der Ressource (wenn es sich um eine Namespace-Ressource handelt)
Beispiel:
5. getPodsLogs
Ruft die Protokolle eines bestimmten Pods im Kubernetes-Cluster ab.
Parameter:
Name
(Zeichenfolge, erforderlich): Der Name des Pods, von dem Protokolle abgerufen werden sollen.namespace
(Zeichenfolge): Der Namespace des Pods (wenn es sich um eine Namespace-Ressource handelt).
Beispiel:
6. getNodeMetrics
Ruft Metriken zur Ressourcennutzung für einen bestimmten Knoten im Kubernetes-Cluster ab.
Parameter:
Name
(Zeichenfolge, erforderlich): Der Name des Knotens, von dem die Metriken abgerufen werden sollen.
Beispiel:
7. getPodMetrics
Ruft CPU- und Speichermetriken für einen bestimmten Pod im Kubernetes-Cluster ab.
Parameter:
namespace
(Zeichenfolge, erforderlich): Der Namespace des Pods.podName
(Zeichenfolge, erforderlich): Der Name des Pods.
Beispiel:
8. getEvents
Ruft Ereignisse für einen bestimmten Namespace oder eine bestimmte Ressource im Kubernetes-Cluster ab.
Parameter:
namespace
(Zeichenfolge): Der Namespace, aus dem Ereignisse abgerufen werden sollen. Wenn dieser Wert weggelassen wird, werden Ereignisse aus allen Namespaces berücksichtigt (sofern von RBAC zugelassen).resourceName
(Zeichenfolge): Der Name einer bestimmten Ressource (z. B. ein Pod-Name), nach der Ereignisse gefiltert werden sollen.resourceKind
(Zeichenfolge): Die Art der spezifischen Ressource (z. B. „Pod“), wennresourceName
angegeben ist.
Beispiel (Namespace-Ereignisse):
Beispiel (Ressourcenereignisse):
9. createorUpdateResource
Erstellt eine neue Ressource im Kubernetes-Cluster aus einem YAML- oder JSON-Manifest.
Parameter:
manifest
(Zeichenfolge, erforderlich): Das YAML- oder JSON-Manifest der zu erstellenden Ressource.namespace
(Zeichenfolge, optional): Der Namespace, in dem die Ressource erstellt werden soll. Wenn das Manifest einen Namespace enthält, kann dieser Parameter weggelassen oder zum Überschreiben verwendet werden (das Verhalten hängt möglicherweise von der Serverimplementierung ab).
Beispiel:
Entwicklung
Projektstruktur
Neue Tools hinzufügen
So fügen Sie ein neues Werkzeug hinzu:
- Erstellen Sie eine neue Tool-Definitionsfunktion (z. B.
MyNewTool() mcp.Tool
) inhandlers/handlers.go
- Implementieren Sie die Tool-Handler-Funktion (z. B.
MyNewHandler(client *k8s.Client) func(...)
) inhandlers/handlers.go
- Registrieren Sie das Tool und seinen Handler in
main.go
mits.AddTool()
Beitragen
Beiträge sind willkommen! Weitere Informationen zur Mitwirkung an diesem Projekt finden Sie unter CONTRIBUTING.md .
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE .
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Ein Kubernetes Model Context Protocol (MCP)-Server, der Tools für die Interaktion mit Kubernetes-Clustern über eine standardisierte Schnittstelle bereitstellt.
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 -267GoMIT License
- Python
- Python
- MIT License