Kubernetes MCP Server

officiel

Un serveur MCP Kubernetes pour Claude, développé en Go. Le serveur s'intègre avec ArgoCD, GitLab, Claude AI et Kubernetes pour permettre un contrôle avancé et l'automatisation des environnements Kubernetes.

Que pouvez-vous faire avec Kubernetes MCP ?

  • Inspecter les ressources du cluster — Demandez à votre assistant de lister les namespaces ou tout type de ressources via GET /api/v1/namespaces et GET /api/v1/resources/{kind}.
  • Diagnostiquer une ressource spécifique — Faites analyser ou diagnostiquer un pod comme example-pod par l’assistant à l’aide du point de terminaison POST /api/v1/mcp/troubleshoot.
  • Examiner les commits GitLab — Demandez une analyse de commit via le point de terminaison POST /api/v1/mcp/commit pour obtenir des informations basées sur l’IA.
  • Vérifier les applications ArgoCD — Demandez une liste de toutes les applications ArgoCD via GET /api/v1/argocd/applications.
  • Requêtes IA personnalisées sur les ressources — Envoyez une requête MCP générique (POST /api/v1/mcp) avec une question personnalisée concernant toute ressource de votre cluster.

Documentation

Blank Cut

Serveur MCP Kubernetes de Claude

CI Release Docker Pulls Docker Image Size Go Report Card License GitHub release

Un serveur Model Context Protocol (MCP) pour la gestion de clusters Kubernetes avec intégration ArgoCD et GitLab.

Ce dépôt contient le serveur MCP Kubernetes de Claude (Model Context Protocol), développé en Go. Le serveur s'intègre avec ArgoCD, GitLab, Claude AI et Kubernetes pour permettre un contrôle avancé et l'automatisation des environnements Kubernetes.

Voir notre documentation ici

Table des matières


Vue d'ensemble

Ce serveur est conçu pour orchestrer les charges de travail Kubernetes à l'aide de Claude AI, GitLab, ArgoCD et Vault. Il expose une API REST permettant une interaction programmatique avec ces systèmes, pilotée par un config.yaml configuré et authentifiée à l'aide d'une clé API.

Prérequis

  • Go 1.20+
  • Docker
  • Cluster Kubernetes et ~/.kube/config valide
  • Cluster EKS avec AWS_PROFILE défini localement
  • Identifiants ArgoCD
  • Jeton d'accès personnel GitLab
  • Clé API Claude (Anthropic)
  • Identifiants Vault (optionnels, selon l'utilisation)

Instructions d'installation

1. Cloner le dépôt

git clone https://github.com/blankcut/kubernetes-mcp-server.git
cd kubernetes-mcp-server

2. Exporter les variables d'environnement requises

Exportez les identifiants pour ArgoCD, GitLab et Claude :

export ARGOCD_USERNAME="argocd-username"
export ARGOCD_PASSWORD="argocd-password"
export GITLAB_TOKEN="gitlab-token"
export CLAUDE_API_KEY="claude-api-key"
export VAULT_TOKEN="optional-if-using-vault"

Assurez-vous qu'un kubeconfig est disponible :

export KUBECONFIG=~/.kube/config

3. Configurer config.yaml

Mettez à jour kubernetes-claude-mcp/config.yaml avec les identifiants et les préférences du serveur :

server:
  address: ":8080"
  readTimeout: 30
  writeTimeout: 60
  auth:
    apiKey: ""${API_KEY}"" 

kubernetes:
  kubeconfig: ""
  inCluster: false
  defaultContext: ""
  defaultNamespace: "default"

argocd:
  url: "http://example.argocd.com"
  authToken: ""
  username: "${ARGOCD_USERNAME}"
  password: "${ARGOCD_PASSWORD}"
  insecure: true

gitlab:
  url: "https://gitlab.com"
  authToken: "${AUTH_TOKEN}"
  apiVersion: "v4"
  projectPath: ""${PROJECT_PATH}""

claude:
  apiKey: "${API_KEY}"
  baseURL: "https://api.anthropic.com"
  modelID: "claude-sonnet-4.5-20250514"
  maxTokens: 8192
  temperature: 0.3

Vous pouvez utiliser les modèles Go fournis ou la méthode d'interpolation de variables d'environnement.

4. Ajouter une clé API pour Postman

Assurez-vous qu'un config.yaml inclut un apiKey. Cela sera utilisé pour authentifier les requêtes dans Postman ou tout client externe.


Exécution locale

cd kubernetes-claude-mcp
go run ./cmd/server/main.go

Avec journalisation de débogage :

LOG_LEVEL=debug go run ./cmd/server/main.go --config config.yaml

Le serveur démarrera et se liera au port configuré dans config.yaml (par défaut : 8080).


Construction et exécution avec Docker

1. Construire l'image

cd kubernetes-claude-mcp
docker build -t claude-mcp-server -f Dockerfile .

2. Exécuter le conteneur (deuxième option de construction incluse)

cd kubernetes-claude-mcp
docker-compose build
docker-compose up -d

Déploiement en production

Un chart Helm est inclus dans le dépôt pour le déploiement Kubernetes :

1. Naviguer vers le répertoire du chart Helm

cd kubernetes-claude-mcp/deployments/helm

2. Déployer avec Helm

Mettez à jour values.yaml avec les valeurs appropriées et exécutez :

helm install claude-mcp .

Pour mettre à niveau :

helm upgrade claude-mcp .

Assurez-vous que les secrets et les config maps sont correctement montés et sécurisés dans le cluster.


Documentation de l'API

Voici les principaux points de terminaison exposés par le serveur MCP. Toutes les requêtes nécessitent l'en-tête X-API-Key :

Général

  • Vérification de santé
    • GET /api/v1/health

Kubernetes

  • Lister les namespaces
    • GET /api/v1/namespaces
  • Lister les ressources
    • GET /api/v1/resources/{kind}?namespace={ns}
  • Obtenir une ressource spécifique
    • GET /api/v1/resources/{kind}/{name}?namespace={ns}
  • Obtenir les événements d'une ressource
    • GET /api/v1/events?namespace={ns}&resource={kind}&name={name}

ArgoCD

  • Lister les applications
    • GET /api/v1/argocd/applications

Points de terminaison Claude MCP

  • Analyser une ressource
    • POST /api/v1/mcp/resource
  • Dépanner une ressource
    • POST /api/v1/mcp/troubleshoot
  • Analyse de commit (GitLab)
    • POST /api/v1/mcp/commit
  • Requête MCP générique
    • POST /api/v1/mcp

Tous les points de terminaison POST acceptent une charge utile JSON contenant des champs tels que :

{
  "resource": "pod",
  "name": "example-pod",
  "namespace": "default",
  "query": "What’s wrong with this pod?"
}

Collection Postman

Une collection Postman prête à l'emploi sera bientôt disponible.

Donation

Veuillez contribuer à notre fonds café pour nous aider à continuer à faire de grandes choses Offrez-moi un café

Licence

Ce projet est sous licence Licence MIT.


Contribution

La documentation sera bientôt enrichie. Si vous souhaitez contribuer, n'hésitez pas à ouvrir une pull request ou à signaler un problème !