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.
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/namespacesetGET /api/v1/resources/{kind}. - Diagnostiquer une ressource spécifique — Faites analyser ou diagnostiquer un pod comme
example-podpar l’assistant à l’aide du point de terminaisonPOST /api/v1/mcp/troubleshoot. - Examiner les commits GitLab — Demandez une analyse de commit via le point de terminaison
POST /api/v1/mcp/commitpour 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
Serveur MCP Kubernetes de 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 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.
Table des matières
- Vue d'ensemble
- 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
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/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'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 !