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.

Documentation

Serveur Kubernetes MCP 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 Kubernetes MCP 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.

Consultez notre documentation ici

Table des matières


Aperçu

Ce serveur est conçu pour orchestrer les charges de travail Kubernetes en utilisant Claude AI, GitLab, ArgoCD et Vault. Il expose une API REST qui permet 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'une 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 des variables d'environnement.

4. Ajouter une clé API pour Postman

Veuillez vous assurer qu'un config.yaml inclut un apiKey. Ceci sera utilisé pour authentifier les requêtes dans Postman ou tout autre 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 .

Veuillez vous assurer 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 l'état
    • GET /api/v1/health

Kubernetes

  • Lister les espaces de noms
    • 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 Buy Me Coffee

Licence

Ce projet est sous licence MIT License.


Contribution

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