Serveur Kubernetes MCP - MCP Server sécurisé par ALMC Security 2025

Serveur Kubernetes MCP

Voir sur GitHub

Serveur MCP Kubernetes

testscodecovLicense: MIT

https://github.com/user-attachments/assets/89df70b0-65d1-461c-b4ab-84b2087136fa

Un serveur Model Context Protocol (MCP) qui fournit un accès sûr, en lecture seule, aux ressources Kubernetes pour le débogage et l'inspection. Construit avec la sécurité à l'esprit, il offre une visibilité complète du cluster sans capacités de modification.

Caractéristiques

  • 🔒Sécurité en lecture seule: Inspecter en toute sécurité les ressources Kubernetes sans capacités de modification
  • 🎯 Prise en charge CRD: Fonctionne de manière transparente avec toutes les définitions de ressources personnalisées dans votre cluster
  • 🌐 Prise en charge multi-clusters: Passez d'un contexte Kubernetes à l'autre en toute transparence
  • 🔍Découverte intelligente: Trouvez des ressources par sous-chaîne de groupe API (par exemple, " flux " pour FluxCD, " argo " pour ArgoCD)
  • ⚡ Haute performance: Interrogation efficace des ressources avec filtrage et pagination
  • 🛠️ Jeu d'outils complet
    • list_resources: Lister et filtrer les ressources Kubernetes avec des options avancées
    • describe_resource: Obtenir des informations détaillées sur des ressources spécifiques
    • get_pod_logs: Récupérer les logs des pods avec des capacités de filtrage sophistiquées
    • list_events: Liste et filtre les événements Kubernetes pour le débogage et la surveillance
    • list_contexts: Liste tous les contextes Kubernetes disponibles à partir de kubeconfig

🚀 Démarrage rapide

Conditions préalables

  • Accès au cluster Kubernetes avec un fichier kubeconfig valide
  • Go 1.24+ (pour la construction à partir des sources)

Options d'installation

Option 1 : Installer avec Go (recommandé)

go install github.com/kkb0318/kubernetes-mcp@latest

Le binaire sera disponible dans $GOPATH/bin/kubernetes-mcp (ou $HOME/go/bin/kubernetes-mcp si GOPATH n'est pas défini).

Option 2 : Construire à partir des sources

git clone https://github.com/kkb0318/kubernetes-mcp.git cd kubernetes-mcp go build -o kubernetes-mcp

⚙️ Configuration

Configuration du serveur MCP

Ajoutez le serveur à votre configuration MCP :

Configuration de base

Utilise ~/.kube/config automatiquement :

{ "mcpServers" : { "kubernetes" : { "command" : "/path/to/kubernetes-mcp" } } }

Kubeconfig personnalisé

{ "mcpServers" : { "kubernetes" : { "command" : "/path/to/kubernetes-mcp", "env" : { "KUBECONFIG" : "/path/to/your/kubeconfig" } } } }

Remarque: Remplacez /path/to/kubernetes-mcp par votre chemin binaire réel.

Utilisation autonome

# kubeconfig par défaut (~/.kube/config) ./kubernetes-mcp # chemin kubeconfig personnalisé KUBECONFIG=/path/to/your/kubeconfig ./kubernetes-mcp

Important: Assurez-vous que vous disposez des autorisations de lecture appropriées pour les ressources Kubernetes que vous souhaitez inspecter.

🛠️ Outils disponibles

list_resources

Liste et filtre les ressources Kubernetes avec des fonctionnalités avancées.

ParamètreType de ressourceDescription
contexteoptionnelNom du contexte Kubernetes provenant de kubeconfig (laisser vide pour le contexte actuel)
typeobligatoireType de ressource (Pod, Deployment, Service, etc.) ou "all" pour la découverte
groupFilterfacultatifFiltre par sous-chaîne de groupe d'API pour les ressources spécifiques à un projet
espace de nomsfacultatifEspace de noms cible (par défaut, tous les espaces de noms)
labelSelectorfacultatifFiltre sur les étiquettes (par exemple, "app=nginx")
fieldSelectoroptionnelFiltre sur les champs (par exemple, "metadata.name=my-pod")
limitfacultatifNombre maximal de ressources à renvoyer
timeoutSecondsoptionnelDélai d'attente de la requête (par défaut : 30 secondes)
showDetailsoptionnelRenvoie des objets de ressources complets au lieu d'un résumé

Exemples :

// List pods with label selector { "kind" : "Pod", "namespace" : "default", "labelSelector" : "app=nginx" } // List pods from a specific cluster context { "kind" : "Pod", "context" : "production-cluster", "namespace" : "default" } // Découvrir les ressources FluxCD { "kind" : "all", "groupFilter" : "flux" }

describe_resource

Obtenir des informations détaillées sur une ressource Kubernetes spécifique.

ParamètreType de ressourceDescription
contexteoptionnelNom du contexte Kubernetes provenant de kubeconfig (laisser vide pour le contexte actuel)
typeobligatoireType de ressource (Pod, Deployment, etc.)
nomobligatoireNom de la ressource
espace de nomsfacultatifEspace de noms cible

Exemple :

{"kind" : "Pod", "name" : "nginx-pod", "namespace" : "default" }

get_pod_logs

Récupère les logs du pod avec des options de filtrage sophistiquées.

ParamètreType de fichierDescription
contexteoptionnelNom du contexte Kubernetes provenant de kubeconfig (laisser vide pour le contexte actuel)
nomobligatoireNom du pod
espace de nomsoptionnelEspace de noms du pod (la valeur par défaut est "default")
conteneuroptionnelNom du conteneur spécifique
tailoptionnelNombre de lignes à partir de la fin (par défaut : 100)
sinceoptionnelDurée comme "5s", "2m", "3h"
sinceTimeoptionnelHorodatage RFC3339
timestampsoptionnelInclure les horodatages dans la sortie
précédentoptionnelRécupère les journaux de l'instance de conteneur précédente

Exemple :

{"name" : "nginx-pod", "namespace" : "default", "tail" : 50, "since" : "5m", "timestamps" : true }

list_events

Liste et filtre les événements Kubernetes avec des options de filtrage avancées pour le débogage et la surveillance.

ParamètreType d'événementDescription
contexteoptionnelNom du contexte Kubernetes provenant de kubeconfig (laisser vide pour le contexte actuel)
espace de nomsoptionnelEspace de noms cible (laisser vide pour tous les espaces de noms)
objetfacultatifFiltre sur le nom de l'objet (par exemple, nom du pod, nom du déploiement)
eventTypeoptionnelFiltre sur le type d'événement : "Normal" ou "Warning" (insensible à la casse)
reasonoptionnelFiltre sur la raison de l'événement (par exemple, "Pulled", "Failed", "FailedScheduling")
sincefacultatifDurée comme "5s", "2m", "1h"
sinceTimefacultatifHorodatage RFC3339 (par exemple, "2025-06-20T10:00:00Z")
limitoptionnelNombre maximal d'événements à renvoyer (par défaut : 100)
timeoutSecondsoptionnelDélai d'attente de la demande (par défaut : 30 secondes)

Exemples :

// Liste des événements d'avertissement récents { "eventType" : "Warning", "since" : "30m" } // List events for a specific pod { "object" : "nginx-pod", "namespace" : "default" } // List failed scheduling events { "reason" : "FailedScheduling", "limit" : 50 }

list_contexts

Liste tous les contextes Kubernetes disponibles à partir de votre fichier kubeconfig.

Paramètres :None - cet outil ne prend aucun paramètre.

Exemple de réponse :

{ "contexts" : [ { "name" : "production-cluster", "is_current" : false }, { "name" : "staging-cluster", "is_current" : true }, { "name" : "cluster de développement", "is_current" : false } ], "current_context" : "staging-cluster", "total" : 3 }

Cas d'utilisation :Parfait pour les flux de travail multi-clusters où vous avez besoin de :

  • Découvrir les contextes Kubernetes disponibles
  • Identifier le contexte actif actuel
  • Planifier des opérations sur plusieurs clusters

🌟 Fonctionnalités avancées

🌐 Prise en charge de plusieurs clusters

Travaillez de manière transparente avec plusieurs clusters Kubernetes à l'aide de la commutation de contexte :

  • Paramètre de contexte: Tous les outils prennent désormais en charge un paramètre de contexte facultatif pour spécifier le cluster à interroger
  • Découverte automatique: Utilise votre fichier kubeconfig existant et découvre automatiquement les contextes disponibles
  • Contexte par défaut: Si aucun contexte n'est spécifié, utilise le contexte actuel de votre fichier kubeconfig
  • Connexions mises en cache: Gestion efficace des connexions à plusieurs clusters grâce à la mise en cache des connexions

Exemples de clusters multiples :

// Interrogation du cluster de production { "kind" : "Pod", "context" : "production-cluster", "namespace" : "default" } // Obtenir les journaux de l'environnement de mise en scène { "name" : "api-server", "context" : "staging-cluster", "namespace" : "api" } // Comparez les ressources entre les environnements (utilisez plusieurs appels) { "kind" : "Deployment", "context" : "production-cluster", "namespace" : "app" }

🎯 Prise en charge des définitions de ressources personnalisées (CRD)

Découvrez automatiquement les CRD de votre cluster et travaillez avec eux. Il suffit d'utiliser le nom Kind du CRD avec les outils list_resources ou describe_resource.

🔍 Découverte intelligente des ressources

Utilisez le paramètre groupFilter pour découvrir les ressources par sous-chaîne de groupe API :

FiltreDécouvreExemples
"flux"Ressources FluxCDHelmReleases, Kustomizations, GitRepositories
"argoRessources ArgoCDApplications, AppProjects, ApplicationSets
"istioRessources IstioVirtualServices, DestinationRules, Gateways
"cert-managerressources de cert-managerCertificats, Issuers, ClusterIssuers

🔒 Sécurité et sûreté

Construit avec la sécurité comme préoccupation principale :

  • Accès en lecture seule - Pas de création, modification ou suppression de ressources
  • ✅ S écurité de production - Sécurisé pour une utilisation dans des environnements de production
  • Permissions minimales - Ne nécessite qu'un accès en lecture aux ressources de la grappe
  • pas d'opérations destructrices - Ne peut pas nuire à votre cluster

🤝 Contribuer

Les contributions sont les bienvenues ! Veuillez vous assurer que tous les changements maintiennent la nature en lecture seule du serveur et incluent les tests appropriés.

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
Serveur ONOS MCPUne implémentation du serveur Model Context Protocol (MCP) qui fournit des capacités de contrôle et...Voir
Serveur MCP Ubuntu sécurisé🔒 Serveur Security-First Model Context Protocol pour des opérations sûres du système UbuntuVoir
AWS-IReveal-MCPAWS-IReveal-MCP est un serveur Model Context Protocol (MCP) conçu pour offrir aux équipes de sécurit...Voir
Serveur MCP de BinanceVoir
mcp-k8s-goMCP 💬 prompt 🗂️ resource 🤖 toolVoir
UyuniServeur de protocole de contexte de modèle pour l'API du serveur Uyuni.Voir