Connecter votre cluster Azure Kubernetes Service (AKS) à des agents IA à l’aide du serveur MCP (Model Context Protocol)

Le serveur MCP (AKS Model Context Protocol) permet aux assistants IA d’interagir avec des clusters Azure Kubernetes Service (AKS) avec clarté, sécurité et contrôle. Il sert de pont entre les outils IA (comme GitHub Copilot, Claude et d’autres assistants IA compatibles MCP) et AKS, en traduisant les demandes en langage naturel en opérations AKS et en retournant les résultats dans un format que les outils IA peuvent comprendre.

Le serveur MCP AKS se connecte à Azure à l’aide du Kit de développement logiciel (SDK) Azure et fournit un ensemble d’outils que les assistants IA peuvent utiliser pour interagir avec les ressources AKS. Ces outils permettent aux agents IA d’effectuer des tâches telles que :

  • Résolution des problèmes et diagnostics
  • Analyser l'état de santé de votre cluster
  • Gérer (CRUD) les ressources AKS
  • Récupérer les détails relatifs aux clusters AKS (réseaux virtuels, sous-réseaux, groupes de sécurité réseau(NSG), tables de routage, etc.)
  • Activation des meilleures pratiques et des fonctionnalités recommandées
  • Gérer les opérations Azure Fleet pour les scénarios multi-clusters

Le serveur MCP AKS est un projet entièrement open source, avec des exemples de modèles et des configurations Helm disponibles dans le référentiel GitHub.

Quand utiliser le serveur AKS MCP

Le serveur MCP AKS peut être utilisé avec n’importe quel assistant IA compatible, y compris l’interface CLI agentique pour AKS et Microsoft Copilot. Les cas d’utilisation courants sont les suivants :

  • Poser des questions sur les assistants IA comme :
    • « Pourquoi les pods sont-ils en attente dans ce cluster ? »
    • « Quelle est la configuration réseau de mon cluster AKS ? »
    • « Créez un placement pour déployer des charges de travail nginx sur des clusters avec l’étiquette app=frontend ».
  • Autoriser les outils IA à :
    • Lire l’état et la configuration du cluster
    • Inspecter les métriques, les événements et les journaux
    • Mettre en corrélation les signaux entre les ressources Kubernetes et Azure
    • Appliquer des modifications et activer de nouvelles fonctionnalités directement sur votre cluster

Toutes les actions effectuées via le serveur MCP AKS sont limitées par Kubernetes Role-Based Access Control (RBAC) et Azure RBAC. Par défaut, le serveur MCP AKS hérite des autorisations de l’utilisateur lors de l’accès aux ressources de cluster et Azure. Pour personnaliser les rôles et les autorisations du serveur AKS MCP, déployez le mode serveur AKS MCP distant avec un contrôle RBAC intégré.

Outils disponibles

Le serveur MCP AKS fournit un ensemble complet d’outils permettant d’interagir avec des clusters AKS et des ressources associées. Par défaut, le serveur utilise des outils unifiés (call_az pour les opérations Azure et call_kubectl pour les opérations Kubernetes) qui fournissent une interface plus flexible pour interagir avec les ressources Kubernetes et Azure.

Il existe trois ensembles d’autorisations que vous pouvez activer pour le serveur AKS MCP : lecture seule (valeur par défaut), lecture-écriture et administrateur. Certains outils nécessitent des autorisations d’écriture en lecture-écriture ou d’administrateur pour effectuer des actions telles que le déploiement de pods de débogage ou d’actions CRUD sur votre cluster. Pour activer les autorisations d’écriture en lecture-écriture ou d’administrateur pour le serveur AKS-MCP, ajoutez le paramètre de niveau d’accès à votre fichier de configuration MCP :

  1. Accédez à votre fichier mcp.json ou accédez à MCP : Répertorier les serveurs -> AKS-MCP -> Afficher les détails de configuration dans la palette de commandes (pour VS Code ; Ctrl+Shift+P sur Windows/Linux ou Cmd+Shift+P sur macOS).
  2. Dans la section « args » d’AKS-MCP, ajoutez les paramètres suivants : « --access-level », « readwrite » ou « admin »

Par exemple:

"args": [
  "--transport",
  "stdio",
  "--access-level",
  "readwrite"
]

Ces outils sont conçus pour fournir des fonctionnalités complètes via des interfaces unifiées :

Opérations Azure CLI (outil unifié)

Outil:call_az

Outil unifié pour l’exécution de commandes Azure CLI directement. Cet outil fournit une interface flexible pour exécuter n’importe quelle commande Azure CLI.

Paramètres :

  • cli_command: commande Azure CLI complète à exécuter. Par exemple, az aks list --resource-group myRG ou az vm list --subscription <sub-id>.
  • timeout: délai d’expiration facultatif en secondes (valeur par défaut : 120)

Exemple d’utilisation :

{
  "cli_command": "az aks list --resource-group myResourceGroup --output json"
}

Access Control :

  • readonly : seules les opérations de lecture sont autorisées
  • readwrite/admin : les opérations de lecture et d’écriture sont autorisées

Important

Les commandes doivent être des appels Azure CLI simples sans fonctionnalités d’interpréteur de commandes telles que des canaux (|), des redirections (>, <), des substitutions de commandes ou des points-virgules (;)).

Opérations Kubernetes (outil unifié)

Outil kubectl unifié

Outil:call_kubectl

Outil unifié pour l’exécution de commandes kubectl directement. Cet outil fournit une interface flexible pour exécuter n’importe quelle kubectl commande avec prise en charge complète des arguments.

Paramètres :

  • args : les arguments de la commande kubectl. Par exemple, get pods, describe node mynode ou apply -f deployment.yaml.

Exemple d’utilisation :

{
  "args": "get pods -n kube-system -o wide"
}

Contrôle d’accès : Les opérations sont restreintes en fonction du niveau d’accès configuré :

  • readonly : seules les opérations de lecture (get, describe, logs, etc.) sont autorisées.
  • readwrite/admin : toutes les opérations, y compris les commandes de mutation (créer, supprimer, appliquer, etc.)

Helm

Outil:call_helm

Gestionnaire de package Helm pour Kubernetes.

Cilium

Outil:call_cilium

Interface CLI Cilium pour la mise en réseau et la sécurité basées sur eBPF.

Hubble

Outil:call_hubble

Observabilité du réseau Hubble pour Cilium.

Gestion des ressources réseau

Outil:aks_network_resources

Outil unifié pour obtenir des informations sur les ressources réseau Azure utilisées par les clusters AKS.

Types de ressources disponibles :

  • all: Obtenir des informations sur toutes les ressources réseau
  • vnet: informations sur le réseau virtuel
  • subnet: informations sur le sous-réseau
  • nsg: Informations sur le groupe de sécurité réseau
  • route_table: Informations sur la table de routage
  • load_balancer: informations sur l’équilibreur de charge
  • private_endpoint: Information sur le point de terminaison privé
Surveillance et diagnostics

Outil:aks_monitoring

Outil unifié pour les opérations de supervision et de diagnostic Azure pour les clusters AKS.

Opérations disponibles :

  • metrics: répertorier les valeurs des métriques pour les ressources
  • resource_health: Récupérer des événements d’intégrité des ressources pour les clusters AKS
  • app_insights : Exécuter des requêtes KQL sur les données de télémétrie d'Application Insights
  • diagnostics: Vérifier si les paramètres de diagnostic du cluster AKS sont configurés
  • control_plane_logs: Interroger les journaux du plan de contrôle AKS avec des contraintes de sécurité et une validation de la plage temporelle
Ressources de calcul

Outil:get_aks_vmss_info

  • Obtenir la configuration détaillée de vos Virtual Machine Scale Sets (pools de nœuds) dans le cluster AKS
Gestion des flottes

Outil:az_fleet

Gestion complète d’Azure Fleet pour les scénarios multi-clusters.

Opérations disponibles :

  • Opérations de flotte : liste, afficher, créer, mettre à jour, supprimer, obtenir des informations d’identification
  • Opérations de membre : liste, afficher, créer, mettre à jour, supprimer
  • Mettre à jour les opérations d’exécution : liste, afficher, créer, démarrer, arrêter, supprimer
  • Opérations de stratégie de mise à jour : liste, afficher, créer, supprimer
  • Opérations ClusterResourcePlacement : liste, afficher, obtenir, créer, supprimer

Prend en charge à la fois la gestion Azure Fleet Management et les opérations CRD Kubernetes ClusterResourcePlacement.

Détecteurs de diagnostics

Outil:aks_detector

Outil unifié pour l’exécution d’opérations de détecteur de diagnostic AKS.

Opérations disponibles :

  • list: répertorier tous les détecteurs de cluster AKS disponibles
  • run: Exécuter un détecteur de diagnostic AKS spécifique
  • run_by_category: Exécuter tous les détecteurs dans une catégorie spécifique

Paramètres :

  • operation (obligatoire) : opération à effectuer (list, runou run_by_category)
  • aks_resource_id (obligatoire) : ID de ressource de cluster AKS
  • detector_name (requis pour run l’opération) : nom du détecteur à exécuter
  • category (obligatoire pour l’opération run_by_category ) : catégorie Détecteur
  • start_time (requis pour run et run_by_category opérations) : heure de début au format ISO UTC (au cours des 30 derniers jours)
  • end_time (requis pour run et run_by_category opérations) : heure de fin au format ISO UTC (au cours des 30 derniers jours, 24 heures maximum à partir du début)

Catégories disponibles :

  • Meilleures pratiques
  • Disponibilité et performances du plan de contrôle et du cluster
  • Problèmes de connectivité
  • Créer, mettre à niveau, supprimer et mettre à l’échelle
  • Dépréciations
  • Identité et sécurité
  • État de santé du nœud
  • Storage

Exemple d’utilisation :

Outil:run_detectors_by_category

{
  "operation": "list",
  "aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx"
}
{
  "operation": "run",
  "aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx",
  "detector_name": "node-health-detector",
  "start_time": "2025-01-15T10:00:00Z",
  "end_time": "2025-01-15T12:00:00Z"
}
Azure Advisor

Outil:aks_advisor_recommendation

Récupérez et gérez les recommandations d’Azure Advisor pour les clusters AKS.

Opérations disponibles :

  • list: Répertorier les recommandations avec les options de filtrage
  • report: Générer des rapports de recommandation
  • Options de filtre : resource_group, cluster_names, catégorie (Cost, HighAvailability, Performance, Security), gravité (High, Medium, Low)
Observabilité en temps réel

Outil:inspektor_gadget_observability

Outil d’observabilité en temps réel pour les clusters Azure Kubernetes Service (AKS) à l’aide d’eBPF.

Actions disponibles :

  • deploy: Déployer Inspektor Gadget sur le cluster
  • undeploy: Supprimer Inspektor Gadget du cluster
  • is_deployed: Vérifier l’état du déploiement
  • run: Exécuter des gadgets à usage unique
  • start: Démarrer des gadgets en continu
  • stop: Arrêter d’exécuter des gadgets
  • get_results: Récupérer les résultats du gadget
  • list_gadgets: Répertorier les gadgets disponibles

Gadgets disponibles :

  • observe_dns: Surveiller les requêtes et réponses DNS
  • observe_tcp: Surveiller les connexions TCP
  • observe_file_open: Surveiller les opérations du système de fichiers
  • observe_process_execution: Surveiller l’exécution du processus
  • observe_signal: Surveiller la remise des signaux
  • observe_system_calls: Surveiller les appels système
  • top_file: principaux fichiers par opérations d’E/S
  • top_tcp: Principales connexions TCP par trafic
  • tcpdump: Capturer des paquets réseau

Prise en main du serveur AKS MCP

Le serveur MCP AKS a deux modes : local et distant. Dans cette section, nous abordons les cas d’utilisation et les processus d’installation pour les deux modes.

Serveur MCP local

En mode local, le serveur MCP s’exécute sur la machine locale d’un développeur et se connecte à AKS à l’aide des autorisations existantes du développeur. Ce mode est idéal pour configurer rapidement votre agent IA local avec une expertise et des outils AKS sans nécessiter de composants côté cluster. Le mode local peut utiliser le contexte actuel du cluster et appliquer les autorisations Kubernetes et RBAC Azure du développeur. Par défaut, le serveur AKS MCP local prend en charge les modes de transport STDIO et SSE.

Prerequisites

Avant d’installer le serveur AKS MCP, configurez Azure CLI et authentifiez :

az login

Le moyen le plus simple de commencer à utiliser AKS-MCP consiste à utiliser l’extension Azure Kubernetes Service pour VS Code. L’extension AKS gère automatiquement les téléchargements binaires, les mises à jour et la configuration, ce qui garantit que vous disposez toujours de la dernière version avec des paramètres optimaux.

Étape 1 : installer l’extension AKS

  1. Ouvrez VS Code et accédez aux extensions (Ctrl+Shift+X sur Windows/Linux ou Cmd+Shift+X sur macOS).
  2. Recherchez Azure Kubernetes Service.
  3. Installez l’extension Microsoft AKS officielle.

Étape 2 : Lancer le serveur AKS-MCP

  1. Ouvrez la palette de commandes (Ctrl+Shift+P sur Windows/Linux ou Cmd+Shift+P sur macOS).
  2. Recherchez et exécutez : AKS : Configurer le serveur AKS MCP.

Une fois l’installation réussie, le serveur apparaît dans MCP : Répertorier les serveurs (via la palette de commandes). À partir de là, vous pouvez démarrer le serveur MCP ou afficher son état.

Étape 3 : Commencer à utiliser AKS-MCP

Une fois démarré, le serveur MCP apparaît dans la liste déroulante Copilot Chat : Configurer les outils sous MCP Server: AKS MCP, prêt à améliorer les invites contextuelles en fonction de votre environnement AKS. Par défaut, tous les outils serveur AKS-MCP sont activés. Vous pouvez consulter la liste des outils disponibles et désactiver ceux qui ne sont pas requis pour votre scénario.

Essayez une invite telle que « Répertorier tous mes clusters AKS » pour commencer à utiliser des outils à partir du serveur AKS-MCP.

Conseil / Astuce

Configuration de WSL : si vous utilisez VS Code sur Windows avec WSL, utilisez cette option "command": "wsl" pour appeler le fichier binaire WSL. Si VS Code s’exécute à l’intérieur de WSL (Remote-WSL), appelez le fichier binaire directement ou utilisez un wrapper bash à la place.

Serveur MCP distant

En mode distant, le serveur MCP s’exécute en tant que charge de travail dans le cluster AKS ou tout calcul de votre choix. Ce mode est idéal pour les environnements de production avec des outils partagés, des autorisations cohérentes entre les utilisateurs et un contrôle d’accès total à l’aide de Kubernetes ServiceAccount et de l’identité de charge de travail. Le serveur AKS MCP distant utilise le protocole HTTP pour faciliter les interactions entre votre assistant IA et votre cluster AKS.

Prerequisites

  • Cluster AKS avec Kubernetes 1.19+
  • Helm 3.8+
  • Azure CLI installé et authentifié (az login)

Installer avec le graphique Helm

Clonez le référentiel et installez le graphique Helm AKS-MCP :

git clone https://github.com/Azure/aks-mcp.git
cd aks-mcp/chart

helm install aks-mcp . --namespace aks-mcp --create-namespace

Pour obtenir la liste complète des paramètres de configuration, consultez la documentation du graphique Helm.

Configurer l’authentification

Choisissez une méthode d’authentification en fonction des exigences de votre environnement et de sécurité :

L’identité de charge de travail fournit une authentification sans mot de passe en liant kubernetes ServiceAccount à une identité managée Azure.

1. Activer OIDC sur votre cluster AKS

az aks update \
  --resource-group <your-resource-group> \
  --name <your-aks-cluster> \
  --enable-oidc-issuer \
  --enable-workload-identity

2. Créer une identité managée et attribuer des autorisations RBAC

# Create identity
az identity create --resource-group <your-resource-group> --name aks-mcp-identity --location <your-location>

# Get IDs
IDENTITY_CLIENT_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "clientId" -o tsv)
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "principalId" -o tsv)

# Assign Reader role (use Contributor for readwrite access)
az role assignment create --role "Reader" --assignee-object-id $IDENTITY_PRINCIPAL_ID --assignee-principal-type ServicePrincipal --scope "/subscriptions/<subscription-id>"

3. Créer des identifiants d’identité fédérée

AKS_OIDC_ISSUER=$(az aks show --resource-group <your-resource-group> --name <your-aks-cluster> --query "oidcIssuerProfile.issuerUrl" -o tsv)

az identity federated-credential create \
  --name "aks-mcp-federated-credential" \
  --identity-name aks-mcp-identity \
  --resource-group <your-resource-group> \
  --issuer $AKS_OIDC_ISSUER \
  --subject "system:serviceaccount:aks-mcp:aks-mcp" \
  --audience api://AzureADTokenExchange

Important

Créez les informations d’identification fédérées avant d’installer le graphique Helm.

4. Installer avec l’identité de charge de travail activée

helm install aks-mcp . \
  --namespace aks-mcp \
  --create-namespace \
  --set workloadIdentity.enabled=true \
  --set azure.clientId=$IDENTITY_CLIENT_ID \
  --set azure.subscriptionId=<your-subscription-id>

Activer l'Ingress avec le routage d'applications Azure

Exposez le serveur MCP en externe à l’aide du routage des applications Azure :

# Enable App Routing on your cluster
az aks approuting enable --resource-group <your-resource-group> --name <your-cluster-name>

# Install with Ingress enabled
helm install aks-mcp . \
  --namespace aks-mcp \
  --create-namespace \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=aks-mcp.example.com \
  --set ingress.hosts[0].paths[0].path=/ \
  --set ingress.hosts[0].paths[0].pathType=Prefix \
  --set azure.existingSecret=azure-credentials

Connecter votre client MCP

Après le déploiement, connectez votre assistant IA au serveur MCP distant :

# Port forward for local testing
kubectl port-forward svc/aks-mcp 8000:8000 -n aks-mcp

Configurez votre client MCP pour vous connecter :

{
  "mcpServers": {
    "aks-mcp": {
      "url": "http://localhost:8000",
      "transport": "streamable-http"
    }
  }
}

Pour l’accès en cluster, utilisez : http://aks-mcp.aks-mcp.svc.cluster.local:8000

Référence de configuration Helm

Paramètre Descriptif Par défaut
workloadIdentity.enabled Activer l’identité de charge de travail Azure false
azure.clientId Azure Client ID ""
azure.tenantId ID de locataire Azure ""
azure.clientSecret Clé secrète client Azure ""
azure.subscriptionId ID d’abonnement Azure ""
azure.existingSecret Utiliser un secret Kubernetes existant ""
app.accessLevel Niveau d’accès : readonly, readwrite, admin readonly
app.transport Transport : stdio, sse, streamable-http streamable-http
oauth.enabled Activer l’authentification OAuth false
ingress.enabled Activer l'entrée false

Désinstaller le serveur AKS MCP

Le processus de désinstallation du serveur MCP AKS dépend du mode de déploiement et de l’emplacement où il est en cours d’exécution.

VS Code avec l’extension AKS

  1. Ouvrez la palette de commandes (Ctrl+Shift+P sur Windows/Linux ou Cmd+Shift+P sur macOS).
  2. Exécutez MCP : Répertorier les serveurs.
  3. Sélectionnez AKS MCP dans la liste.
  4. Sélectionnez Arrêter le serveur pour arrêter le serveur en cours d’exécution.
  5. Pour supprimer la configuration, sélectionnez Supprimer la configuration du serveur.

Vous pouvez également supprimer manuellement la configuration du serveur :

  1. Ouvrez votre .vscode/mcp.json fichier ou vos paramètres utilisateur VS Code.
  2. Supprimez l'entrée aks-mcp-server de l'objet servers ou github.copilot.chat.mcp.servers.
  3. Supprimez le AKS-MCP binaire de votre système (l’emplacement varie en fonction de la méthode d’installation).

Docker

Si vous utilisez Docker MCP Toolkit :

  1. Ouvrez Docker Desktop.
  2. Sélectionnez MCP Toolkit dans la barre latérale gauche.
  3. Recherchez le serveur AKS-MCP et désactivez-le.

Si vous utilisez une configuration conteneurisée, arrêtez et supprimez le conteneur :

docker stop <container-id>
docker rm <container-id>

Autres clients MCP

Supprimez l'entrée aks ou aks-mcp de votre fichier de configuration du client MCP (par exemple, claude_desktop_config.json de Claude Desktop).

Problèmes courants et résolutions

Cette section décrit les problèmes courants d’installation et d’exécution, leurs symptômes et la façon de les résoudre.

Le serveur MCP AKS ne peut pas accéder au cluster

Symptômes :

  • Les outils retournent des erreurs d’autorisation
  • Aucune ressource n’est visible

Causes probables :

  • L'identité utilisateur ou MCP ne dispose pas des autorisations suffisantes
  • Liaison incorrecte du ServiceAccount
  • Contexte kubeconfig mal configuré (mode local)

Résolution :

  • Mode local : vérifiez que vous disposez des autorisations suffisantes pour accéder au cluster. Vérifiez que vous êtes dans le bon contexte de cluster et d’abonnement.
  • Mode distant : vérifiez les liaisons ClusterRole pour le ServiceAccount utilisé par le serveur MCP

Échec des appels d’API Azure

Symptômes :

  • Les outils "call_az" renvoient des erreurs d’authentification ou d’autorisation.

Causes probables :

  • L’identité de charge de travail n’est pas activée pour votre cluster
  • ServiceAccount non fédéré
  • Affectations RBAC Azure manquantes

Résolution :

  • Vérifier que l’identité de charge de travail est activée sur votre cluster
  • Vérifier la configuration de l’identité fédérée
  • Attribuer des rôles Azure appropriés à l’identité managée

Prochaines étapes

En savoir plus sur les fonctionnalités intelligentes générées en mode natif pour AKS :

  • À propos de l’interface CLI agentique pour AKS
  • Installer et utiliser l’interface CLI agentique pour AKS