Kubernetes MCP Server
officielUn 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
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
- Prérequis
- Instructions d'installation
- Configuration
- Exécution locale
- Construction et exécution avec Docker
- Déploiement en production
- Documentation de l'API
- Collection Postman
- Licence
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/configvalide - 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 !