Serveur MCP Kubernetes

CILanguageBunKubernetesDockerStarsIssuesPRs WelcomeLast Commitsmithery badge

Serveur MCP qui peut se connecter à un cluster Kubernetes et le gérer. Prend en charge le chargement de kubeconfig à partir de plusieurs sources par ordre de priorité.

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

Utilisation avec Claude Desktop

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

Par défaut, le serveur charge kubeconfig à partir de ~/.kube/config. Pour des options d'authentification supplémentaires (variables d'environnement, chemins personnalisés, etc.), voir ADVANCED_README.md.

Le serveur se connectera automatiquement à votre contexte kubectl actuel. Assurez-vous que vous avez :

  1. kubectl est installé et se trouve dans votre PATH
  2. Un fichier kubeconfig valide avec des contextes configurés
  3. Un accès à un cluster Kubernetes configuré pour kubectl (par exemple, minikube, Rancher Desktop, GKE, etc.)
  4. Helm v3 installé et dans votre PATH (pas de Tiller requis). Optionnel si vous n'avez pas l'intention d'utiliser Helm.

Vous pouvez vérifier votre connexion en demandant à Claude de lister vos pods ou de créer un déploiement test.

Si vous avez des erreurs, ouvrez un terminal standard et lancez kubectl get pods pour voir si vous pouvez vous connecter à votre cluster sans problèmes d'identifiants.

Utilisation de mcp-chat

mcp-chat est un client de chat CLI pour les serveurs MCP. Vous pouvez l'utiliser pour interagir avec le serveur Kubernetes.

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

Alternativement, transmettez-lui votre fichier de configuration Claude Desktop existant (Linux devrait transmettre le chemin d'accès correct à la configuration) :

Mac :

npx mcp-chat --config "~/Bibliothèque/Application Support/Claude/claude_desktop_config.json"

Windows :

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

Fonctionnalités

  • Connexion à un cluster Kubernetes
  • API kubectl unifiée pour la gestion des ressources
    • Obtenir ou lister des ressources avec kubectl_get
    • Décrire les ressources avec kubectl_describe
    • Lister les ressources avec kubectl_get
    • Créer des ressources avec kubectl_create
    • Appliquer des manifestes YAML avec kubectl_apply
    • Supprimer des ressources avec kubectl_delete
    • Obtenir des logs avec kubectl_logs
    • Gérer les contextes kubectl avec kubectl_context
    • Expliquer les ressources Kubernetes avec explain_resource
    • Lister les ressources API avec list_api_resources
    • Mettre à l'échelle les ressources avec kubectl_scale
    • Mettre à jour les champs d'une ressource avec kubectl_patch
    • Gérer les déploiements avec kubectl_rollout
    • Exécuter n'importe quelle commande kubectl avec kubectl_generic
    • Vérifier la connexion avec ping
  • Opérations avancées
    • Mise à l'échelle des déploiements avec kubectl_scale (remplace l'ancien scale_deployment)
    • Transfert de port vers les pods et les services avec port_forward
    • Exécuter les opérations Helm
      • Installation, mise à niveau et désinstallation des cartes
      • Prise en charge des valeurs, référentiels et versions personnalisés
  • Invite de dépannage(k8s-diagnose)
    • Guide à travers un flux de dépannage Kubernetes systématique pour les pods basés sur un mot-clé et un espace de noms optionnel.
  • Mode non destructif pour l'accès aux clusters en lecture et en création/mise à jour uniquement

Invites

Le serveur MCP Kubernetes comprend des invites spécialisées pour faciliter les opérations de diagnostic courantes.

invite k8s-diagnose

Cette invite fournit un flux de dépannage systématique pour les pods Kubernetes. La sortie de l'invite vous guidera dans un flux de dépannage autonome, en fournissant des instructions pour identifier les problèmes, collecter des preuves et suggérer des étapes de remédiation.

Développement local

Assurez-vous que vous avez installé bun. Clonez le repo et installez les dépendances :

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

Workflow de développement

  1. Démarrez le serveur en mode développement (surveille les changements de fichiers) :
bun run dev
  1. Lancer les tests unitaires :
bun run test
  1. Construire le projet :
bun run build
  1. Test local avec Inspector
npx @modelcontextprotocol/inspector node dist/index.js # Suivre les instructions sur le terminal pour le lien Inspector
  1. Test local avec Claude Desktop
{ "mcpServers" : { "mcp-server-kubernetes" : { "command" : "node", "args" : ["/path/to/your/mcp-server-kubernetes/dist/index.js"] } } }
  1. Test local avec mcp-chat
bun run chat

Contribuer

Voir le fichier CONTRIBUTING.md pour plus de détails.

Avancé

Mode non destructif

Vous pouvez exécuter le serveur dans un mode non destructif qui désactive toutes les opérations destructives (supprimer les pods, supprimer les déploiements, supprimer les espaces de noms, etc :)

ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true npx mcp-server-kubernetes

Pour la configuration de Claude Desktop avec le mode non destructif :

{ "mcpServers" : { "kubernetes-readonly" : { "command" : "npx", "args" : ["mcp-server-kubernetes"], "env" : { "ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS" : "true" } } }

Commandes disponibles en mode non destructif

Toutes les opérations de lecture seule et de création/mise à jour de ressources restent disponibles :

  • Informations sur les ressources : kubectl_get, kubectl_describe, kubectl_logs, explain_resource, list_api_resources
  • Création/modification de ressources : kubectl_apply, kubectl_create, kubectl_scale, kubectl_patch, kubectl_rollout
  • Opérations Helm : install_helm_chart, upgrade_helm_chart
  • Connectivité : port_forward, stop_port_forward
  • Gestion du contexte : kubectl_context

Commandes désactivées en mode non destructif

Les opérations destructives suivantes sont désactivées :

  • kubectl_delete: Suppression de toute ressource Kubernetes
  • uninstall_helm_chart: Désinstallation des cartes Helm
  • cleanup: Nettoyage des ressources gérées
  • kubectl_generic: Accès général aux commandes kubectl (peut inclure des opérations destructives)

Pour des fonctionnalités avancées supplémentaires, voir le fichier ADVANCED_README.md.

Architecture

Voir ce lien DeepWiki pour un aperçu plus approfondi de l'architecture créé par Devin.

Cette section décrit l'architecture de haut niveau du serveur MCP Kubernetes.

Flux de requêtes

Le diagramme de séquence ci-dessous illustre comment les requêtes circulent dans le système :

sequenceDiagramme participant Client participant Transport en tant que couche de transport participant Serveur en tant que serveur MCP participant Filtre en tant que filtre d'outil participant Handler en tant que gestionnaire de demande participant K8sManager en tant que KubernetesManager participant K8s en tant qu'API Kubernetes Remarque sur le transport : StdioTransport ou<br>SSE Transport Client->>Transport : Envoyer la demande Transport->>Serveur : Transférer la requête alt Tools Request Server->>Filter : Filtrer les outils disponibles Note sur le filtre : Supprimer les outils destructifs<br>si en mode non destructif Filter->>Handler : Route vers le gestionnaire d'outils alt kubectl operations Handler->>K8sManager : Exécuter l'opération kubectl K8sManager->>K8s : Faire un appel API else Opérations Helm Handler->>K8sManager : Exécuter l'opération Helm K8sManager->>K8s : Faire un appel API sinon Opérations de transfert de port Handler->>K8sManager : Configurer le transfert de port K8sManager->>K8s : Effectuer un appel API fin K8s-->>K8sManager : Retourner le résultat K8sManager-->>Handler : Traiter la réponse Handler-->>Server : Retourner le résultat de l'outil sinon Demande de ressource Serveur->>Handler : Route vers le gestionnaire de ressources Gestionnaire->>K8sManager : Obtenir les données de la ressource K8sManager->>K8s : Interroger l'API K8s-->>K8sManager : Retourner les données K8sManager-->>Handler : Formater la réponse Handler-->>Server : Retourner les données de la ressource fin Serveur-->>Transport : Envoyer la réponse Transport-->>Client : Retourner la réponse finale

Voir ce lien DeepWiki pour un aperçu plus approfondi de l'architecture créé par Devin.

Publication d'une nouvelle version

Allez sur la page des versions, cliquez sur "Draft New Release", cliquez sur "Choose a tag" et créez une nouvelle balise en tapant un nouveau numéro de version en utilisant le format semver "v{major}.{minor}.{patch}". Ensuite, écrivez un titre de version "Release v{major}.{minor}.{patch}" et une description / changelog si nécessaire et cliquez sur "Publier la version".

Cela créera une nouvelle balise qui déclenchera la construction d'une nouvelle version via le flux de travail cd.yml. Une fois le processus terminé, la nouvelle version sera publiée sur npm. Notez qu'il n'est pas nécessaire de mettre à jour la version du package.json manuellement, car le flux de travail mettra automatiquement à jour le numéro de version dans le fichier package.json et poussera un commit vers main.

Non planifié

Ajout de clusters à kubectx.

Historique des étoiles

Star History Chart

🖊️ Cite

Si vous trouvez ce repo utile, merci de le citer :

@software{Patel_MCP_Server_Kubernetes_2024, author = {Patel, Paras and Sonwalkar, Suyog}, month = jul, title = {{MCP Server Kubernetes}}, url = {https://github.com/Flux159/mcp-server-kubernetes}, version = {2.5.0}, year = {2024} }

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

ServeurRésuméActions
Serveur de paiement MCPPremier serveur MCP de paiement en TurquieVoir
GrafanaForked from Grafana MCP serverVoir
WeatherXM PROUne implémentation de serveur MCP exposant les API de WeatherXM PRO en tant qu'outils MCP, permettan...Voir
CMP MCP ServeurUn serveur MCP (Model Context Protocol) pour l'intégration de l'API CMP (Connectivity Management Pla...Voir
Serveur MCP InfactoryUn serveur MCP (Model Context Protocol) pour interagir avec les API d'Infactory à l'aide de Claude e...Voir
Au-delà du menu Salesforce MCPAu-delà du menu Salesforce MCPVoir