Ansluta ditt AKS-kluster (Azure Kubernetes Service) till AI-agenter med hjälp av MCP-servern (Model Context Protocol)

AKS Model Context Protocol-servern (MCP) gör det möjligt för AI-assistenter att interagera med AkS-kluster (Azure Kubernetes Service) med tydlighet, säkerhet och kontroll. Det fungerar som en brygga mellan AI-verktyg (som GitHub Copilot, Claude och andra MCP-kompatibla AI-assistenter) och AKS, som översätter begäranden om naturligt språk till AKS-åtgärder och returnerar resultaten i ett format som AI-verktygen kan förstå.

AKS MCP-servern ansluter till Azure med hjälp av Azure SDK och tillhandahåller en uppsättning verktyg som AI-assistenter kan använda för att interagera med AKS-resurser. Med de här verktygen kan AI-agenter utföra uppgifter som:

  • Felsökning och diagnostik
  • Analysera hälsotillståndet för klustret
  • Använda (CRUD) AKS-resurser
  • Hämta information om AKS-kluster (virtuella nätverk, undernät, nätverkssäkerhetsgrupper (NSG:er), routningstabeller osv.)
  • Aktivera metodtips och rekommenderade funktioner
  • Hantera Azure Fleet-åtgärder för scenarier med flera kluster

AKS MCP-servern är ett helt projekt med öppen källkod, med exempelmallar och Helm-konfigurationer tillgängliga på GitHub-lagringsplatsen.

När du ska använda AKS MCP-servern

AKS MCP-servern kan användas med alla kompatibla AI-assistenter, inklusive agentic CLI för AKS och Microsoft Copilot. Vanliga användningsfall är:

  • Ställa frågor till AI-assistenter som:
    • "Varför väntar poddar i det här klustret?"
    • "Vad är nätverkskonfigurationen för mitt AKS-kluster?"
    • "Skapa en placering för att distribuera nginx-arbetsbelastningar till kluster med etiketten app=klientdel."
  • Tillåta AI-verktyg att:
    • Läsa klustertillstånd och konfiguration
    • Inspektera mått, händelser och loggar
    • Korrelera signaler mellan Kubernetes- och Azure-resurser
    • Tillämpa ändringar och aktivera nya funktioner direkt i klustret

Alla åtgärder som utförs via AKS MCP-servern begränsas av Kubernetes Role-Based Access Control (RBAC) och Azure RBAC. Som standard ärver AKS MCP-servern användarens behörigheter vid åtkomst till kluster- och Azure-resurser. Om du vill anpassa rollerna och behörigheterna för AKS MCP-servern distribuerar du det fjärranslutna AKS MCP-serverläget med inbyggd RBAC-kontroll.

Tillgängliga verktyg

AKS MCP-servern innehåller en omfattande uppsättning verktyg för att interagera med AKS-kluster och associerade resurser. Som standard använder servern enhetliga verktyg (call_az för Azure-åtgärder och call_kubectl för Kubernetes-åtgärder) som ger ett mer flexibelt gränssnitt för att interagera med Kubernetes och Azure-resurser.

Det finns tre uppsättningar behörigheter som du kan aktivera för AKS MCP-servern: skrivskyddad (standard), läs-skriv och administratör. Vissa verktyg kräver läs-skriv- eller administratörsbehörigheter för att utföra åtgärder som att distribuera felsökningspoddar eller CRUD-åtgärder i din cluster. Om du vill aktivera läs- eller administratörsbehörigheter för AKS-MCP-servern lägger du till parametern för åtkomstnivå i MCP-konfigurationsfilen:

  1. Gå till filenmcp.json eller gå till MCP: Listservrar –> AKS-MCP –> Visa konfigurationsinformation i kommandopaletten (för VS Code, Ctrl+Shift+P i Windows/Linux eller Cmd+Shift+P i macOS).
  2. I avsnittet "args" i AKS-MCP lägger du till följande parametrar: "--access-level", "readwrite" eller "admin"

Till exempel:

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

Dessa verktyg är utformade för att tillhandahålla omfattande funktioner via enhetliga gränssnitt:

Azure CLI-åtgärder (enhetligt verktyg)

Verktyg:call_az

Enhetligt verktyg för att köra Azure CLI-kommandon direkt. Det här verktyget tillhandahåller ett flexibelt gränssnitt för att köra alla Azure CLI-kommandon.

Parameters:

  • cli_command: Det fullständiga Azure CLI-kommandot som ska köras. Exempel: az aks list --resource-group myRG eller az vm list --subscription <sub-id>.
  • timeout: Valfri timeout i sekunder (standard: 120)

Exempel på användning:

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

Åtkomstkontroll:

  • readonly: Endast läsåtgärder tillåts
  • readwrite/admin: Både läs- och skrivåtgärder tillåts

Viktigt!

Kommandon måste vara enkla Azure CLI-anrop utan gränssnittsfunktioner som pipes (|), omdirigeringar (>, <), kommandoersättning eller semikolon (;).

Kubernetes-åtgärder (enhetligt verktyg)

Enhetligt kubectl-verktyg

Verktyg:call_kubectl

Enhetligt verktyg för att köra kubectl-kommandon direkt. Det här verktyget tillhandahåller ett flexibelt gränssnitt för att köra alla kubectl kommandon med fullständigt argumentstöd.

Parameters:

  • args: Kubectl-kommandoargumenten. Till exempel get pods, describe node mynode, eller apply -f deployment.yaml.

Exempel på användning:

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

Åtkomstkontroll: Åtgärderna är begränsade baserat på den konfigurerade åtkomstnivån:

  • readonly: Endast läsåtgärder (hämta, beskriva, loggar osv.) tillåts
  • readwrite/admin: Alla åtgärder inklusive muterande kommandon (skapa, ta bort, tillämpa osv.)

Hjälm

Verktyg:call_helm

Helm-pakethanterare för Kubernetes.

Cilium

Verktyg:call_cilium

Cilium CLI för eBPF-baserade nätverk och säkerhet.

Hubble

Verktyg:call_hubble

Hubble-nätverksobservabilitet för Cilium.

Hantering av nätverksresurser

Verktyg:aks_network_resources

Enhetligt verktyg för att hämta information om Azure-nätverksresurser som används av AKS-kluster.

Tillgängliga resurstyper:

  • all: Hämta information om alla nätverksresurser
  • vnet: Information om virtuellt nätverk
  • subnet: Information om undernät
  • nsg: Information om nätverkssäkerhetsgrupp
  • route_table: Routetabellinformation
  • load_balancer: Information om Lastbalanseraren
  • private_endpoint: Information om privat slutpunkt
Övervakning och diagnostik

Verktyg:aks_monitoring

Enhetligt verktyg för Azure-övervakning och diagnostikåtgärder för AKS-kluster.

Tillgängliga åtgärder:

  • metrics: Lista måttvärden för resurser
  • resource_health: Hämta resurshälsohändelser för AKS-kluster
  • app_insights: Köra KQL-frågor mot Application Insights-telemetridata
  • diagnostics: Kontrollera om AKS-klustret har konfigurerat diagnostikinställningar
  • control_plane_logs: Fråga ut AKS-kontrollplansloggar med säkerhetsrestriktioner och tidsintervallvalidering
Beräkningsresurser

Verktyg:get_aks_vmss_info

  • Få en detaljerad konfiguration av dina virtuella maskinskalningsuppsättningar (nodpooler) i AKS-klustret.
Fleet Management

Verktyg:az_fleet

Omfattande Azure Fleet-hantering för scenarier med flera kluster.

Tillgängliga åtgärder:

  • Fleet Operations: list, show, create, update, delete, hämta-uppgifter
  • Medlemsåtgärder: lista, visa, skapa, uppdatera, ta bort
  • Uppdatera körningsåtgärder: lista, visa, skapa, starta, stoppa, ta bort
  • Uppdatera strategiåtgärder: lista, visa, skapa, ta bort
  • ClusterResourcePlacement-åtgärder: lista, visa, hämta, skapa, ta bort

Stöder både Azure Fleet Management och Kubernetes ClusterResourcePlacement CRD-åtgärder.

Diagnostikdetektorer

Verktyg:aks_detector

Enhetligt verktyg för att utföra diagnostiska detektoroperationer för AKS.

Tillgängliga åtgärder:

  • list: Lista alla tillgängliga AKS-klusterdetektorer
  • run: Kör en specifik AKS-diagnostikdetektor
  • run_by_category: Kör alla detektorer i en specifik kategori

Parameters:

  • operation (krävs): Åtgärd för att utföra (list, runeller run_by_category)
  • aks_resource_id (krävs): RESURS-ID för AKS-kluster
  • detector_name (krävs för run drift): Namnet på detektorn som ska köras
  • category (krävs för run_by_category drift): Detektorkategori
  • start_time (krävs för run och run_by_category åtgärder): Starttid i UTC ISO-format (inom de senaste 30 dagarna)
  • end_time (krävs för run och run_by_category åtgärder): Sluttid i UTC ISO-format (inom de senaste 30 dagarna, högst 24 timmar från start)

Tillgängliga kategorier:

  • Metodtips
  • Tillgänglighet och prestanda för kluster- och kontrollplan
  • Anslutningsproblem
  • Skapa, uppgradera, ta bort och skala
  • Utfasningar
  • Identitet och säkerhet
  • Nodhälsa
  • Storage

Exempel på användning:

Verktyg: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

Verktyg:aks_advisor_recommendation

Hämta och hantera Azure Advisor-rekommendationer för AKS-kluster.

Tillgängliga åtgärder:

  • list: Lista rekommendationer med filtreringsalternativ
  • report: Generera rekommendationsrapporter
  • Filteralternativ: resource_group, cluster_names, kategori (kostnad, högtillgänglighet, prestanda, säkerhet), allvarlighetsgrad (hög, medel, låg)
Observerbarhet i realtid

Verktyg:inspektor_gadget_observability

Realtidsobservabilitetsverktyg för AkS-kluster (Azure Kubernetes Service) med eBPF.

Tillgängliga åtgärder:

  • deploy: Distribuera Inspektor Gadget på klustret
  • undeploy: Ta bort Inspektor Gadget från klustret
  • is_deployed: Kontrollera distributionsstatus
  • run: Kör engångsapparater
  • start: Starta kontinuerliga enheter
  • stop: Sluta köra enheter
  • get_results: Hämta gadgetresultat
  • list_gadgets: Lista tillgängliga gadgetar

Tillgängliga prylar:

  • observe_dns: Övervaka DNS-begäranden och svar
  • observe_tcp: Övervaka TCP-anslutningar
  • observe_file_open: Övervaka filsystemåtgärder
  • observe_process_execution: Övervaka processkörning
  • observe_signal: Övervaka signalleverans
  • observe_system_calls: Övervaka systemanrop
  • top_file: De vanligaste filerna efter I/O-åtgärder
  • top_tcp: De vanligaste TCP-anslutningarna efter trafik
  • tcpdump: Samla in nätverkspaket

Komma igång med AKS MCP-servern

AKS MCP-servern har två lägen: lokal och fjärransluten. I det här avsnittet tar vi upp användningsfall och installationsprocesser för båda lägena.

Lokal MCP-server

I lokalt läge körs MCP-servern på en utvecklares lokala dator och ansluter till AKS med hjälp av utvecklarens befintliga behörigheter. Det här läget är bäst för att snabbt konfigurera din lokala AI-agent med AKS-expertis och verktyg utan att kräva några komponenter på klustersidan. Lokalt läge kan använda den aktuella klusterkontexten och framtvinga utvecklarens Kubernetes- och Azure RBAC-behörigheter. Som standard stöder den lokala AKS MCP-servern STDIO- och SSE-transportlägena.

Förutsättningar

Innan du installerar AKS MCP-servern konfigurerar du Azure CLI och autentiserar:

az login

Det enklaste sättet att komma igång med AKS-MCP är via Azure Kubernetes Service Extension för VS Code. AKS-tillägget hanterar binära nedladdningar, uppdateringar och konfiguration automatiskt, vilket säkerställer att du alltid har den senaste versionen med optimala inställningar.

Steg 1: Installera AKS-tillägget

  1. Öppna VS Code och gå till Tillägg (Ctrl+Shift+X i Windows/Linux eller Cmd+Shift+X på macOS).
  2. Sök efter Azure Kubernetes Service.
  3. Installera det officiella Microsoft AKS-tillägget.

Steg 2: Starta AKS-MCP-servern

  1. Öppna kommandopaletten (Ctrl+Shift+P i Windows/Linux eller Cmd+Shift+P på macOS).
  2. Sök och kör: AKS: Konfigurera AKS MCP Server.

När installationen har slutförts visas servern i MCP: Listservrar (via kommandopaletten). Därifrån kan du starta MCP-servern eller visa dess status.

Steg 3: Börja använda AKS-MCP

När den har startats visas MCP-servern i listrutan Copilot Chat: Configure Tools (Konfigurera verktyg ) under MCP Server: AKS MCP, redo att förbättra kontextuella frågor baserat på din AKS-miljö. Som standard är alla AKS-MCP serververktyg aktiverade. Du kan granska listan över tillgängliga verktyg och inaktivera alla som inte krävs för ditt scenario.

Prova en fråga som "Lista alla mina AKS-kluster" för att börja använda verktyg från AKS-MCP-servern.

Tips/Råd

WSL-konfiguration: Om du använder VS Code i Windows med WSL använder du "command": "wsl" för att anropa WSL-binärfilen. Om VS Code körs i WSL (Remote-WSL) anropar du binärfilen direkt eller använder en bash-omslutning i stället.

Fjärr-MCP-server

I fjärrläge körs MCP-servern som en arbetsbelastning i AKS-klustret eller valfri beräkning. Det här läget passar bäst för produktionsmiljöer med delade verktyg, konsekventa behörigheter för användare och fullständig åtkomstkontroll med Kubernetes ServiceAccount och arbetsbelastningsidentitet. AKS MCP-fjärrservern använder HTTP-protokollet för att underlätta interaktioner mellan AI-assistenten och AKS-klustret.

Förutsättningar

  • AKS-kluster med Kubernetes 1.19+
  • Helm 3.8+
  • Azure CLI installerat och autentiserat (az login)

Installera med Helm-diagrammet

Klona lagringsplatsen och installera AKS-MCP Helm-diagrammet:

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

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

En fullständig lista över konfigurationsparametrar finns i dokumentationen för Helm-diagram.

Konfigurera autentisering

Välj en autentiseringsmetod baserat på din miljö och dina säkerhetskrav:

Arbetsbelastningsidentitet ger lösenordslös autentisering genom att länka en Kubernetes ServiceAccount till en Hanterad Azure-identitet.

1. Aktivera OIDC i ditt AKS-kluster

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

2. Skapa en hanterad identitet och tilldela RBAC-behörigheter

# 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. Skapa en federerad identitetsautentiseringsuppgift

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

Viktigt!

Skapa federerade autentiseringsuppgifter innan du installerar Helm-diagrammet.

4. Installera med arbetsbelastningsidentitet aktiverad

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>

Aktivera ingress med Azure App Routing

Exponera MCP-servern externt med Hjälp av Azure App Routing:

# 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

Ansluta mcp-klienten

Efter distributionen ansluter du AI-assistenten till den fjärranslutna MCP-servern:

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

Konfigurera MCP-klienten så att den ansluter:

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

För åtkomst i klustret använder du: http://aks-mcp.aks-mcp.svc.cluster.local:8000

Referens för Helm-konfiguration

Parameter Description Förinställning
workloadIdentity.enabled Aktivera Azure-arbetsbelastningsidentitet false
azure.clientId Azure-klient-ID ""
azure.tenantId Azure-klientorganisation-ID ""
azure.clientSecret Azure-klienthemlighet ""
azure.subscriptionId Azure-prenumerations-ID ""
azure.existingSecret Använda en befintlig Kubernetes-hemlighet ""
app.accessLevel Åtkomstnivå: readonly, readwrite, admin readonly
app.transport Transport: stdio, sse, streamable-http streamable-http
oauth.enabled Aktivera OAuth-autentisering false
ingress.enabled Aktivera Ingress false

Avinstallera AKS MCP-servern

Processen för att avinstallera AKS MCP-servern beror på distributionsläget och var den körs för närvarande.

VS Code med AKS-tillägg

  1. Öppna kommandopaletten (Ctrl+Shift+P i Windows/Linux eller Cmd+Shift+P på macOS).
  2. Kör MCP: Listservrar.
  3. Välj AKS MCP i listan.
  4. Välj Stoppa server för att stoppa servern som körs.
  5. Om du vill ta bort konfigurationen väljer du Ta bort serverkonfiguration.

Du kan också ta bort serverkonfigurationen manuellt:

  1. Öppna din .vscode/mcp.json-fil eller VS Code-användarinställningar.
  2. Ta bort aks-mcp-server-posten från servers-objektet eller github.copilot.chat.mcp.servers.
  3. Ta bort AKS-MCP binärfilen från systemet (platsen varierar beroende på installationsmetoden).

Docker

Om du använder Docker MCP Toolkit:

  1. Öppna Docker Desktop.
  2. Välj MCP Toolkit i det vänstra sidofältet.
  3. Leta upp AKS-MCP-servern och inaktivera den.

Om du använder en containeriserad konfiguration ska du stoppa och ta bort containern:

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

Andra MCP-klienter

Ta bort aks- eller aks-mcp-posten från din MCP-klientkonfigurationsfil (till exempel Claude Desktops claude_desktop_config.json).

Kända problem och felsökning

I det här avsnittet beskrivs vanliga problem med installation och körning, deras symptom och hur du löser dem.

AKS MCP-servern kan inte komma åt klustret

Symtom:

  • Verktyg returnerar auktoriseringsfel
  • Inga resurser visas

Troliga orsaker:

  • Användar- eller MCP-identiteten har inte tillräcklig behörighet
  • Felaktig ServiceAccount-bindning
  • Felkonfigurerad kubeconfig-kontext (lokalt läge)

Upplösning:

  • Lokalt läge: Kontrollera att du har tillräcklig behörighet för att komma åt klustret. Kontrollera att du är i rätt kluster- och prenumerationskontext.
  • Fjärrläge: Verifiera ClusterRole-bindningarna för det ServiceAccount som används av MCP-servern

Azure API-anrop misslyckas

Symtom:

  • call_az verktyg returnerar autentiserings- eller auktoriseringsfel

Troliga orsaker:

  • Arbetsbelastningsidentiteten är inte aktiverad för klustret
  • ServiceAccount är inte federerat
  • Azure RBAC-tilldelningar saknas

Upplösning:

  • Kontrollera att Workload Identity är aktiverad i klustret.
  • Verifiera federerad identitetskonfiguration
  • Tilldela lämpliga Azure-roller till den hanterade identiteten

Nästa steg

Läs mer om intelligenta funktioner som skapats internt för AKS:

  • Om agentic CLI för AKS
  • Installera och använd agentic CLI för AKS (Azure Kubernetes Service)