Ligue o seu cluster Azure Kubernetes Service (AKS) a agentes de IA usando o servidor Model Context Protocol (MCP)

O servidor AKS Model Context Protocol (MCP) permite que assistentes de IA interajam com clusters Azure Kubernetes Service (AKS) com clareza, segurança e controlo. Serve como uma ponte entre ferramentas de IA (como GitHub Copilot, Claude e outros assistentes de IA compatíveis com MCP) e o AKS, traduzindo pedidos em linguagem natural para operações AKS e devolvendo os resultados num formato que as ferramentas de IA conseguem compreender.

O servidor MCP do AKS liga-se ao Azure usando o Azure SDK e fornece um conjunto de ferramentas que os assistentes de IA podem usar para interagir com os recursos do AKS. Estas ferramentas permitem aos agentes de IA realizar tarefas como:

  • Resolução de problemas e diagnóstico
  • Analise a saúde do seu cluster
  • Operar recursos AKS (CRUD)
  • Recuperar detalhes relacionados com clusters AKS (VNets, Sub-redes, Grupos de Segurança de Rede (NSGs), Tabelas de Rota, etc.)
  • Permitir boas práticas e funcionalidades recomendadas
  • Gerir operações Azure Fleet para cenários multi-cluster

O servidor AKS MCP é um projeto totalmente open-source, com modelos de exemplo e configurações Helm disponíveis no repositório GitHub.

Quando usar o servidor MCP do AKS

O servidor AKS MCP pode ser usado com qualquer assistente de IA compatível, incluindo a CLI agentic para AKS e a Microsoft Copilot. Os casos de uso comuns incluem:

  • Fazer perguntas aos assistentes de IA como:
    • "Porque é que as cápsulas estão pendentes neste aglomerado?"
    • "Qual é a configuração de rede do meu cluster AKS?"
    • "Criar um posicionamento para implementar cargas de trabalho nginx em clusters com app=etiqueta frontend."
  • Permitir que as ferramentas de IA:
    • Ler o estado e a configuração do cluster
    • Inspecionar métricas, eventos e registos
    • Correlacionar sinais entre Kubernetes e recursos Azure
    • Aplique alterações e ative novas funcionalidades diretamente no seu cluster

Todas as ações realizadas através do servidor AKS MCP são limitadas pelo Kubernetes Role-Based Access Control (RBAC) e Azure RBAC. Por defeito, o servidor AKS MCP herda as permissões do utilizador ao aceder ao cluster e aos recursos Azure. Para personalizar os papéis e permissões do servidor AKS MCP, implemente o modo remoto de servidor AKS MCP com controlo RBAC incorporado.

Ferramentas disponíveis

O servidor AKS MCP fornece um conjunto abrangente de ferramentas para interagir com clusters AKS e recursos associados. Por defeito, o servidor utiliza ferramentas unificadas (call_az para as operações do Azure e call_kubectl para as operações do Kubernetes) que proporcionam uma interface mais flexível para interagir com Kubernetes e recursos do Azure.

Existem três conjuntos de permissões que pode ativar para o servidor AKS MCP: apenas leitura (por defeito), leitura-escrita e administrador. Algumas ferramentas requerem permissões de leitura-escrita ou de administrador para realizar ações como a implementação de pods de depuração ou ações CRUD no seu cluster. Para permitir permissões de leitura-escrita ou de administrador para o servidor AKS-MCP, adicione o parâmetro de nível de acesso ao seu ficheiro de configuração MCP:

  1. Navegue até ao seu ficheiro mcp.json, ou vá para MCP: Listar Servidores -> AKS-MCP -> Mostrar Detalhes de Configuração na Paleta de Comandos (para VS Code; Ctrl+Shift+P no Windows/Linux ou Cmd+Shift+P no macOS).
  2. Na secção "args" do AKS-MCP, adicione os seguintes parâmetros: "--nível de acesso", "readwrite" ou "admin"

Por exemplo:

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

Estas ferramentas foram concebidas para fornecer funcionalidades abrangentes através de interfaces unificadas:

Azure CLI Operations (Unified Tool)

Ferramenta:call_az

Ferramenta unificada para executar comandos Azure CLI diretamente. Esta ferramenta oferece uma interface flexível para executar qualquer comando Azure CLI.

Parâmetros:

  • cli_command: O comando completo do Azure CLI para executar. Por exemplo, az aks list --resource-group myRG ou az vm list --subscription <sub-id>.
  • timeout: Tempo de espera opcional em segundos (padrão: 120)

Exemplo de Utilização:

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

Controlo de Acesso:

  • readonly: Apenas operações de leitura são permitidas
  • readwrite/admin: São permitidas tanto operações de leitura como de escrita

Importante

Os comandos devem ser invocações simples do Azure CLI sem características de shell como pipes (|), redirecionamentos (>, <), substituição de comandos ou pontos e vírgulas (;).

Kubernetes Operations (Ferramenta Unificada)

Ferramenta kubectl unificada

Ferramenta:call_kubectl

Ferramenta unificada para executar comandos kubectl diretamente. Esta ferramenta oferece uma interface flexível para executar qualquer kubectl comando com suporte total de argumentos.

Parâmetros:

  • args: Os argumentos do comando Kubectl. Por exemplo, get pods, describe node mynode, ou apply -f deployment.yaml.

Exemplo de Utilização:

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

Controlo de Acesso: As operações são restringidas com base no nível de acesso configurado:

  • readonly: Apenas operações de leitura (get, describe, logs, etc.) são permitidas
  • readwrite/admin: Todas as operações, incluindo comandos de mutação (criar, eliminar, aplicar, etc.)

Leme

Ferramenta:call_helm

Gestor de pacotes Helm para Kubernetes.

Cilium

Ferramenta:call_cilium

CLI Cilium para redes e segurança baseadas em eBPF.

Hubble

Ferramenta:call_hubble

Observabilidade da rede Hubble para Cilium.

Gestão de Recursos de Rede

Ferramenta:aks_network_resources

Ferramenta unificada para obter informação de recursos de rede Azure usada por clusters AKS.

Tipos de Recursos Disponíveis:

  • all: Obter informações sobre todos os recursos da rede
  • vnet: Informação da Rede Virtual
  • subnet: Informação de sub-redes
  • nsg: Informação do Network Security Group
  • route_table: Informação da tabela de rotas
  • load_balancer: Informação do Load Balancer
  • private_endpoint: Informação privada do endpoint
Monitorização e Diagnóstico

Ferramenta:aks_monitoring

Ferramenta unificada para operações de monitorização e diagnóstico Azure para clusters AKS.

Operações Disponíveis:

  • metrics: Listar valores de métrica para recursos
  • resource_health: Recuperar eventos de integridade dos recursos para clusters AKS
  • app_insights: Executar consultas KQL com dados de telemetria do Application Insights
  • diagnostics: Verifica se o cluster AKS tem definições de diagnóstico definidas
  • control_plane_logs: Consulta aos registos do plano de controlo do AKS com restrições de segurança e validação de intervalo temporal
Recursos de Computação

Ferramenta:get_aks_vmss_info

  • Obtenha uma configuração detalhada dos seus Conjuntos de Escala de Máquina Virtual (pools de nós) no cluster AKS
Gestão de Frotas

Ferramenta:az_fleet

Gestão abrangente de frotas Azure para cenários multi-cluster.

Operações Disponíveis:

  • Operações de Frota: listar, mostrar, criar, atualizar, eliminar, obter credenciais
  • Operações de Membros: listar, mostrar, criar, atualizar, eliminar
  • Atualizar Operações de Execução: listar, mostrar, criar, iniciar, parar, eliminar
  • Atualizar Operações de Estratégia: listar, mostrar, criar, eliminar
  • ClusterResourcePlacement Operations: listar, mostrar, obter, criar, eliminar

Suporta tanto a gestão de frotas Azure como as operações do Kubernetes ClusterResourcePlacement CRD.

Detetores de Diagnóstico

Ferramenta:aks_detector

Ferramenta unificada para executar operações de detetor de diagnóstico AKS.

Operações Disponíveis:

  • list: Lista de todos os detectores de cluster AKS disponíveis
  • run: Executar um detector de diagnóstico AKS específico
  • run_by_category: Operar todos os detectores numa categoria específica

Parâmetros:

  • operation (obrigatório): Operação para executar (list, run, ou run_by_category)
  • aks_resource_id (obrigatório): ID de recurso do cluster AKS
  • detector_name (necessário para run operação): Nome do detector a operar
  • category (necessário para run_by_category operação): Categoria do detetor
  • start_time (necessário para run e run_by_category operações): Hora de início no formato UTC ISO (nos últimos 30 dias)
  • end_time (obrigatório para run e run_by_category operações): Hora de término em formato UTC ISO (nos últimos 30 dias, máximo 24 horas desde o início)

Categorias Disponíveis:

  • Melhores práticas
  • Disponibilidade e Desempenho do Cluster e do Plano de Controlo
  • Problemas de Conectividade
  • Criar, Atualizar, Eliminar e Escalar
  • Deprecações
  • Identidade e Segurança
  • Saúde dos Nós
  • Armazenamento

Exemplo de Utilização:

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

Ferramenta:aks_advisor_recommendation

Recuperar e gerir recomendações do Azure Advisor para clusters AKS.

Operações Disponíveis:

  • list: Lista recomendações com opções de filtragem
  • report: Gerar relatórios de recomendação
  • Opções de Filtro: resource_group, cluster_names, categoria (Custo, Alta Disponibilidade, Desempenho, Segurança), Gravidade (Alta, Média, Baixa)
Observabilidade em tempo real

Ferramenta:inspektor_gadget_observability

Ferramenta de observabilidade em tempo real para clusters Azure Kubernetes Service (AKS) usando eBPF.

Ações Disponíveis:

  • deploy: Implantar o Inspektor Gadget para o cluster
  • undeploy: Remover o Inspetor Gadget do cluster
  • is_deployed: Verificar o estado da implantação
  • run: Executar gadgets de um só tiro
  • start: Iniciar dispositivos contínuos
  • stop: Parem de executar os dispositivos
  • get_results: Recuperar resultados do gadget
  • list_gadgets: Lista de gadgets disponíveis

Gadgets Disponíveis:

  • observe_dns: Monitorizar pedidos e respostas DNS
  • observe_tcp: Monitorizar as ligações TCP
  • observe_file_open: Monitorizar as operações do sistema de ficheiros
  • observe_process_execution: Monitorizar a execução do processo
  • observe_signal: Monitorizar a entrega do sinal
  • observe_system_calls: Monitorizar chamadas de sistema
  • top_file: Principais ficheiros por operações de E/S
  • top_tcp: Principais ligações TCP por tráfego
  • tcpdump: Capturar pacotes de rede

Começar com o servidor AKS MCP

O servidor AKS MCP tem dois modos: local e remoto. Nesta secção, abordamos os casos de uso e processos de instalação para ambos os modos.

Servidor MCP local

No modo local, o servidor MCP corre na máquina local do programador e liga-se ao AKS usando as permissões existentes do programador. Este modo é ideal para configurar rapidamente o seu agente de IA local com conhecimentos e ferramentas em AKS, sem necessidade de componentes adicionais no cluster. O modo local pode usar o contexto atual do cluster e aplicar as permissões Kubernetes e Azure RBAC do programador. Por defeito, o servidor local AKS MCP suporta os modos de transporte STDIO e SSE.

Pré-requisitos

Antes de instalar o servidor AKS MCP, configure o Azure CLI e autentique:

az login

A forma mais fácil de começar com AKS-MCP é através da Extensão de Serviço Azure Kubernetes para VS Code. A extensão AKS gere automaticamente downloads binários, atualizações e configurações, garantindo que tem sempre a versão mais recente com as definições ótimas.

Passo 1: Instalar a extensão AKS

  1. Abre o VS Code e vai a Extensões (Ctrl+Shift+X no Windows/Linux ou Cmd+Shift+X no macOS).
  2. Pesquisar por Azure Kubernetes Service.
  3. Instala a extensão oficial Microsoft AKS.

Passo 2: Iniciar o AKS-MCP Server

  1. Abra a paleta de comandos (Ctrl+Shift+P no Windows/Linux ou Cmd+Shift+P no macOS).
  2. Pesquisar e executar: AKS: Configurar o servidor AKS MCP.

Após a instalação bem-sucedida, o servidor aparece em MCP: List Servers (via Command Palette). A partir daí, podes iniciar o servidor MCP ou ver o seu estado.

Passo 3: Começar a usar AKS-MCP

Uma vez iniciado, o servidor MCP aparece no menu suspenso Copilot Chat: Configure Tools em MCP Server: AKS MCP, pronto para melhorar prompts contextuais com base no seu ambiente AKS. Por defeito, todas as ferramentas de servidor AKS-MCP estão ativadas. Podes rever a lista de ferramentas disponíveis e desativar as que não são necessárias para o teu cenário.

Experimenta um prompt como "Lista todos os meus clusters AKS" para começares a usar ferramentas do servidor AKS-MCP.

Sugestão

Configuração WSL: Se estiver a usar VS Code no Windows com WSL, use "command": "wsl" para invocar o binário WSL. Se o VS Code estiver a correr dentro do WSL (Remote-WSL), chame diretamente o binário ou use um wrapper bash em vez disso.

Servidor MCP remoto

Em modo remoto, o servidor MCP corre como uma carga de trabalho dentro do cluster AKS ou em qualquer computação à sua escolha. Este modo é ideal para ambientes de produção com ferramentas partilhadas, permissões consistentes entre utilizadores e controlo total de acesso usando o Kubernetes ServiceAccount e Workload Identity. O servidor remoto AKS MCP utiliza o protocolo HTTP para facilitar as interações entre o seu assistente de IA e o cluster AKS.

Pré-requisitos

  • Cluster AKS utilizando Kubernetes 1.19+
  • Helm 3.8+
  • Azure CLI instalado e autenticado (az login)

Instalar com o Helm chart

Clone o repositório e instale o gráfico AKS-MCP Helm:

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

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

Para a lista completa de parâmetros de configuração, consulte a documentação do Helm chart.

Configurar a autenticação

Escolha um método de autenticação com base no seu ambiente e nos requisitos de segurança:

A Identidade de Carga de Trabalho fornece autenticação sem palavra-passe ao ligar uma Conta de Serviço Kubernetes a uma Identidade Gerida Azure.

1. Ativar o OIDC no seu cluster AKS

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

2. Criar uma Identidade Gerida e atribuir permissões 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. Criar uma credencial de identidade federada

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

Importante

Crie a credencial federada antes de instalar o Helm chart.

4. Instalar com Identidade de Carga de Trabalho ativada

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>

Ativar o Ingress com o Azure App Routing

Expor o servidor MCP externamente usando 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

Ligue o seu cliente MCP

Após a implementação, ligue o seu assistente de IA ao servidor MCP remoto:

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

Configure o seu cliente MCP para se ligar:

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

Para acesso dentro do cluster, utilize: http://aks-mcp.aks-mcp.svc.cluster.local:8000

Referência de configuração do Helm

Parâmetro Description Predefinido
workloadIdentity.enabled Ativar Identidade de Carga de Trabalho do Azure false
azure.clientId Azure Client ID ""
azure.tenantId ID do Locatário do Azure ""
azure.clientSecret Segredo do Cliente Azure ""
azure.subscriptionId ID da Subscrição do Azure ""
azure.existingSecret Usar um segredo Kubernetes existente ""
app.accessLevel Nível de acesso: readonly, readwrite, admin readonly
app.transport Transporte: stdio, sse, streamable-http streamable-http
oauth.enabled Ativar autenticação OAuth false
ingress.enabled Ativar Ingress false

Desinstalar o servidor MCP do AKS

O processo de desinstalar o servidor MCP do AKS depende do modo de implementação e de onde está a correr atualmente.

Código VS com extensão AKS

  1. Abra a paleta de comandos (Ctrl+Shift+P no Windows/Linux ou Cmd+Shift+P no macOS).
  2. Executa MCP: Servidores de Listas.
  3. Selecione o AKS MCP da lista.
  4. Seleciona Parar Servidor para parar o servidor em execução.
  5. Para remover a configuração, selecione Eliminar Configuração do Servidor.

Em alternativa, remova manualmente a configuração do servidor:

  1. Abra o seu .vscode/mcp.json ficheiro ou as Definições de Utilizador do VS Code.
  2. Apaga a entrada do aks-mcp-server do objeto servers ou github.copilot.chat.mcp.servers.
  3. Apaga o AKS-MCP binário do teu sistema (a localização varia consoante o método de instalação).

Docker

Se estiver a usar o Docker MCP Toolkit:

  1. Abre o Docker Desktop.
  2. Selecione MCP Toolkit na barra lateral esquerda.
  3. Encontra o servidor AKS-MCP e desativa-o.

Se usar uma configuração containerizada, pare e remova o contentor:

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

Outros Clientes MCP

Remova a entrada aks ou aks-mcp do ficheiro de configuração do cliente MCP (por exemplo, Claude Desktop claude_desktop_config.json).

Problemas comuns e resolução de problemas

Esta secção descreve problemas comuns de configuração e execução, os seus sintomas e como os resolver.

O servidor MCP do AKS não consegue aceder ao cluster

Sintomas:

  • As ferramentas devolvem erros de autorização
  • Não há recursos visíveis

Causas prováveis:

  • A identidade do utilizador ou MCP não tem permissões suficientes
  • Vinculação incorreta da ServiceAccount
  • Contexto kubeconfig mal configurado (modo local)

Resolução:

  • Modo local: Verifique se tem permissões suficientes para aceder ao cluster. Verifica se estás no cluster e contexto de subscrição certos.
  • Modo remoto: Verificar as ligações ClusterRole para a ServiceAccount usada pelo servidor MCP

As chamadas da API do Azure falham.

Sintomas:

  • As ferramentas "call_az" devolvem erros de autenticação ou autorização.

Causas prováveis:

  • Identidade de Workload não ativada para o seu cluster
  • ServiceAccount não federada
  • Faltam as atribuições "Azure RBAC"

Resolução:

  • Verifique se a Identidade da Carga de Trabalho está ativada no seu cluster
  • Verificar configuração de identidade federada
  • Atribuir papéis Azure apropriados à identidade gerida

Próximos passos

Saiba mais sobre as funcionalidades inteligentes criadas nativamente para AKS:

  • Sobre a CLI agencial para AKS
  • Instale e use a CLI agente para AKS