Conexión del clúster de Azure Kubernetes Service (AKS) a agentes de IA mediante el servidor de Protocolo de contexto de modelo (MCP)

El servidor del Protocolo de contexto de modelo de AKS (MCP) permite a los asistentes de inteligencia artificial interactuar con clústeres de Azure Kubernetes Service (AKS) con claridad, seguridad y control. Actúa como un puente entre las herramientas de inteligencia artificial (como GitHub Copilot, Claude y otros asistentes de IA compatibles con MCP) y AKS, la traducción de solicitudes de lenguaje natural en operaciones de AKS y la devolución de los resultados en un formato que las herramientas de IA pueden comprender.

El servidor MCP de AKS se conecta a Azure mediante el SDK de Azure y proporciona un conjunto de herramientas que los asistentes de IA pueden usar para interactuar con los recursos de AKS. Estas herramientas permiten a los agentes de inteligencia artificial realizar tareas como:

  • Solución de problemas y diagnósticos
  • Análisis del estado del clúster
  • Uso de recursos de AKS (CRUD)
  • Recuperación de detalles relacionados con clústeres de AKS (redes virtuales, subredes, grupos de seguridad de red (NSG), tablas de rutas, etc.)
  • Habilitación de procedimientos recomendados y características recomendadas
  • Administración de operaciones de Flota de Azure para escenarios de varios clústeres

El servidor MCP de AKS es un proyecto de código abierto completo, con plantillas de ejemplo y configuraciones de Helm disponibles en el repositorio de GitHub.

Cuándo usar el servidor MCP de AKS

El servidor MCP de AKS se puede usar con cualquier asistente de IA compatible, incluida la CLI agente para AKS y Microsoft Copilot. Entre los casos de uso comunes se incluyen:

  • Formular preguntas a los asistentes de IA, como:
    • "¿Por qué hay pods pendientes en este clúster?"
    • "¿Cuál es la configuración de red del clúster de AKS?"
    • "Cree una ubicación para implementar cargas de trabajo nginx en clústeres con la etiqueta app=frontend".
  • Permitir que las herramientas de inteligencia artificial:
    • Leer el estado y la configuración del clúster
    • Inspección de métricas, eventos y registros
    • Correlación de señales entre recursos de Kubernetes y Azure
    • Aplicación de cambios y habilitación de nuevas características directamente en el clúster

Todas las acciones realizadas a través del servidor MCP de AKS están restringidas por Kubernetes Role-Based Access Control (RBAC) y RBAC de Azure. De forma predeterminada, el servidor MCP de AKS hereda los permisos del usuario al acceder al clúster y a los recursos de Azure. Para personalizar los roles y permisos del servidor MCP de AKS, implemente el modo de servidor MCP de AKS remoto con el control RBAC integrado.

Herramientas disponibles

El servidor MCP de AKS proporciona un conjunto completo de herramientas para interactuar con clústeres de AKS y recursos asociados. De forma predeterminada, el servidor usa herramientas unificadas (call_az para las operaciones de Azure y call_kubectl para las operaciones de Kubernetes), que proporcionan una interfaz más flexible para interactuar con los recursos de Kubernetes y Azure.

Hay tres conjuntos de permisos que puede habilitar para el servidor MCP de AKS: de solo lectura (valor predeterminado), lectura y escritura y administrador. Algunas herramientas requieren permisos de lectura y escritura o de administrador para realizar acciones como la implementación de pods de depuración o acciones CRUD en el clúster. Para habilitar permisos de lectura y escritura o administrador para el servidor de AKS-MCP, agregue el parámetro de nivel de acceso al archivo de configuración de MCP:

  1. Navega a tu archivo mcp.json, o dirígete a MCP: List Servers -> AKS-MCP -> Mostrar detalles de configuración en la Paleta de Comandos (para VS Code; Ctrl+Shift+P en Windows/Linux o Cmd+Shift+P en macOS).
  2. En la sección "args" de AKS-MCP, agregue los parámetros siguientes: "--access-level", "readwrite" o "admin".

Por ejemplo:

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

Estas herramientas están diseñadas para proporcionar una funcionalidad completa a través de interfaces unificadas:

Operaciones de la CLI de Azure (herramienta unificada)

Herramienta:call_az

Herramienta unificada para ejecutar comandos de la CLI de Azure directamente. Esta herramienta proporciona una interfaz flexible para ejecutar cualquier comando de la CLI de Azure.

Parámetros:

  • cli_command: comando completo de la CLI de Azure que se va a ejecutar. Por ejemplo, az aks list --resource-group myRG o az vm list --subscription <sub-id>.
  • timeout: tiempo de espera opcional en segundos (valor predeterminado: 120)

Uso de ejemplo:

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

Control de acceso:

  • readonly: solo se permiten las operaciones de lectura.
  • readwrite/admin: se permiten las operaciones de lectura y escritura.

Importante

Los comandos deben ser invocaciones simples de la CLI de Azure sin características de shell como canalizaciones (|), redireccionamientos (>, <), sustitución de comandos o punto y coma (;).

Operaciones de Kubernetes (herramienta unificada)

Herramienta kubectl unificada

Herramienta:call_kubectl

Herramienta unificada para ejecutar comandos kubectl directamente. Esta herramienta proporciona una interfaz flexible para ejecutar cualquier kubectl comando con compatibilidad completa con argumentos.

Parámetros:

  • args: los argumentos del comando kubectl. Por ejemplo, get pods, describe node mynode o apply -f deployment.yaml.

Uso de ejemplo:

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

Control de acceso: Las operaciones se restringen en función del nivel de acceso configurado:

  • readonly: solo se permiten operaciones de lectura (get, describe, logs, etc.)
  • readwrite/admin: todas las operaciones, incluidos los comandos de mutación (crear, eliminar, aplicar, etc.)

Helm

Herramienta:call_helm

Administrador de paquetes Helm para Kubernetes.

Cilium

Herramienta:call_cilium

CLI de Cilium para redes y seguridad basadas en eBPF.

Hubble

Herramienta:call_hubble

Observabilidad de red Hubble para Cilium.

Administración de recursos de red

Herramienta:aks_network_resources

Herramienta unificada para obtener información de recursos de red de Azure que usan los clústeres de AKS.

Tipos de recursos disponibles:

  • all: obtener información sobre todos los recursos de red
  • vnet: información de red virtual
  • subnet: información de subred
  • nsg: Información del grupo de seguridad de red
  • route_table: información de la tabla de rutas
  • load_balancer: información del equilibrador de carga
  • private_endpoint: información del punto de conexión privado
Supervisión y diagnóstico

Herramienta:aks_monitoring

Herramienta unificada para operaciones de supervisión y diagnóstico de Azure para clústeres de AKS.

Operaciones disponibles:

  • metrics: Listar valores de métricas para recursos
  • resource_health: recuperar eventos de Resource Health para clústeres de AKS
  • app_insights: Ejecutar consultas KQL en los datos de telemetría de Application Insights.
  • diagnostics: compruebe si el clúster de AKS tiene la configuración de diagnóstico configurada.
  • control_plane_logs: Consultar los registros del plano de control de AKS con restricciones de seguridad y validación de rango temporal
Recursos de proceso

Herramienta:get_aks_vmss_info

  • Obtenga una configuración detallada de los conjuntos de escalado de máquinas virtuales (grupos de nodos) en el clúster de AKS.
Administración de flotas

Herramienta:az_fleet

Administración completa de flotas de Azure para escenarios de varios clústeres.

Operaciones disponibles:

  • Operaciones de flota: list, show, create, update, delete, get-credentials
  • Operaciones de miembro: listar, mostrar, crear, actualizar, eliminar
  • Actualizar operaciones de ejecución: listar, mostrar, crear, iniciar, detener, eliminar
  • Operaciones de estrategia de actualización: listar, mostrar, crear, eliminar
  • Operaciones de ClusterResourcePlacement: listar, mostrar, obtener, crear, eliminar

Admite tanto la administración de flotas de Azure como las operaciones de ClusterResourcePlacement CRD de Kubernetes.

Detectores de diagnóstico

Herramienta:aks_detector

Herramienta unificada para ejecutar operaciones de detector de diagnóstico de AKS.

Operaciones disponibles:

  • list: enumera todos los detectores de clúster de AKS disponibles.
  • run: ejecutar un detector de diagnóstico de AKS específico
  • run_by_category: ejecutar todos los detectores en una categoría específica

Parámetros:

  • operation (obligatorio): operación para realizar (list, runo run_by_category)
  • aks_resource_id (obligatorio): identificador de recurso del clúster de AKS
  • detector_name (obligatorio para run la operación): nombre del detector que se va a ejecutar
  • category (obligatorio para run_by_category operación): categoría de detector
  • start_time (requerido para las operaciones de run y run_by_category): hora de inicio en formato ISO UTC (en los últimos 30 días)
  • end_time (obligatorio para run las operaciones y run_by_category ): hora de finalización en formato ISO UTC (en los últimos 30 días, máximo 24 horas desde el inicio)

Categorías disponibles:

  • Procedimientos recomendados
  • Disponibilidad y rendimiento del clúster y el plano de control
  • Problemas de conectividad
  • Crear, actualizar, eliminar y escalar
  • En desuso
  • Identidad y seguridad
  • Estado del nodo
  • Storage

Uso de ejemplo:

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

Herramienta:aks_advisor_recommendation

Recupere y administre recomendaciones de Azure Advisor para clústeres de AKS.

Operaciones disponibles:

  • list: enumera las recomendaciones con opciones de filtrado
  • report: generación de informes de recomendaciones
  • Opciones de filtro: resource_group, cluster_names, categoría (costo, alta disponibilidad, rendimiento, seguridad), gravedad (alto, medio, bajo)
Observabilidad en tiempo real

Herramienta:inspektor_gadget_observability

Herramienta de observabilidad en tiempo real para clústeres de Azure Kubernetes Service (AKS) mediante eBPF.

Acciones disponibles:

  • deploy: Desplegar Inspektor Gadget en el clúster
  • undeploy: eliminación de Inspektor Gadget del clúster
  • is_deployed: comprobación del estado de implementación
  • run: ejecutar gadgets de un solo uso
  • start: iniciar gadgets continuos
  • stop: dejar de ejecutar gadgets
  • get_results: recuperar los resultados del dispositivo
  • list_gadgets: enumerar los gadgets disponibles.

Gadgets disponibles:

  • observe_dns: Supervisión de solicitudes y respuestas DNS
  • observe_tcp: Supervisión de conexiones TCP
  • observe_file_open: Supervisión de las operaciones del sistema de archivos
  • observe_process_execution: Supervisión de la ejecución de procesos
  • observe_signal: Supervisión de la entrega de señales
  • observe_system_calls: Monitoreo de llamadas del sistema
  • top_file: Principales archivos según operaciones de E/S
  • top_tcp: conexiones TCP principales por tráfico
  • tcpdump: captura de paquetes de red

Introducción al servidor MCP de AKS

El servidor MCP de AKS tiene dos modos: local y remoto. En esta sección, tratamos los casos de uso y los procesos de instalación para ambos modos.

Servidor MCP local

En el modo local, el servidor MCP se ejecuta en la máquina local de un desarrollador y se conecta a AKS mediante los permisos existentes del desarrollador. Este modo es el mejor para configurar rápidamente tu agente de inteligencia artificial local con experiencia y herramientas de AKS sin requerir componentes del lado del clúster. El modo local puede usar el contexto del clúster actual y aplica los permisos de Kubernetes y Azure RBAC del desarrollador. De forma predeterminada, el servidor MCP de AKS local admite los modos de transporte STDIO y SSE.

Prerrequisitos

Antes de instalar el servidor MCP de AKS, configure la CLI de Azure y autentíquese:

az login

La manera más fácil de empezar a trabajar con AKS-MCP es a través de la extensión de Azure Kubernetes Service para VS Code. La extensión de AKS controla automáticamente las descargas binarias, las actualizaciones y la configuración, lo que garantiza que siempre tiene la versión más reciente con una configuración óptima.

Paso 1: Instalar la extensión de AKS

  1. Abra VS Code y vaya a Extensiones (Ctrl+Shift+X en Windows/Linux o Cmd+Shift+X en macOS).
  2. Busque Azure Kubernetes Service.
  3. Instale la extensión oficial de Microsoft AKS.

Paso 2: Iniciar el servidor de AKS-MCP

  1. Abra la paleta de comandos (Ctrl+Shift+P en Windows/Linux o Cmd+Shift+P en macOS).
  2. Buscar y ejecutar: AKS: configuración del servidor MCP de AKS.

Tras la instalación correcta, el servidor aparece en MCP: List Servers (a través de la paleta de comandos). Desde allí, puede iniciar el servidor MCP o ver su estado.

Paso 3: Empezar a usar AKS-MCP

Una vez iniciado, el servidor MCP aparece en la lista desplegable Copilot Chat: Configurar herramientas en MCP Server: AKS MCP, listo para mejorar las solicitudes contextuales basadas en el entorno de AKS. De forma predeterminada, todas las herramientas de servidor de AKS-MCP están habilitadas. Puede revisar la lista de herramientas disponibles y deshabilitar cualquiera que no sea necesario para su escenario.

Pruebe un mensaje como "Enumerar todos los clústeres de AKS" para empezar a usar herramientas del servidor de AKS-MCP.

Sugerencia

Configuración de WSL: si usa VS Code en Windows con WSL, use "command": "wsl" para invocar el binario WSL. Si VS Code se ejecuta dentro de WSL (Remote-WSL), llame directamente al archivo binario o use un contenedor bash en su lugar.

Servidor MCP remoto

En modo remoto, el servidor MCP se ejecuta como una carga de trabajo dentro del clúster de AKS o cualquier proceso que elija. Este modo es mejor para entornos de producción con herramientas compartidas, permisos coherentes entre usuarios y control de acceso total mediante Kubernetes ServiceAccount e Identidad de carga de trabajo. El servidor MCP de AKS remoto usa el protocolo HTTP para facilitar las interacciones entre el asistente de IA y el clúster de AKS.

Prerrequisitos

  • Clúster de AKS con Kubernetes 1.19+
  • Helm 3.8+
  • CLI de Azure instalada y autenticada (az login)

Instalación con el gráfico de Helm

Clone el repositorio e instale el gráfico de Helm de AKS-MCP:

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

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

Para obtener la lista completa de parámetros de configuración, consulte la documentación del gráfico de Helm.

Configurar la autenticación

Elija un método de autenticación en función de los requisitos de seguridad y entorno:

La identidad de carga de trabajo proporciona autenticación sin contraseña mediante la vinculación de una cuenta de Kubernetes ServiceAccount a una identidad administrada de Azure.

1. Habilitación de OIDC en el clúster de AKS

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

2. Creación de una identidad administrada y asignación de permisos de 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. Creación de una credencial de identidad 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

Cree la credencial federada antes de instalar el gráfico de Helm.

4. Instalación con la identidad de carga de trabajo habilitada

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>

Habilitar Ingreso con Enrutamiento de Aplicaciones de Azure

Exponga el servidor MCP externamente mediante el enrutamiento de aplicaciones de 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

Conexión del cliente MCP

Después de la implementación, conecte el asistente de IA al servidor MCP remoto:

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

Configure el cliente MCP para conectarse:

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

Para el acceso en clúster, use: http://aks-mcp.aks-mcp.svc.cluster.local:8000

Referencia de configuración de Helm

Parámetro Description Predeterminado
workloadIdentity.enabled Habilitación de la identidad de carga de trabajo de Azure false
azure.clientId Identificador de cliente de Azure ""
azure.tenantId Id. de inquilino de Azure ""
azure.clientSecret Secreto de cliente de Azure ""
azure.subscriptionId Identificador de suscripción de Azure ""
azure.existingSecret Uso de un secreto de Kubernetes existente ""
app.accessLevel Nivel de acceso: readonly, readwrite, admin readonly
app.transport Transporte: stdio, sse, streamable-http streamable-http
oauth.enabled Habilitación de la autenticación de OAuth false
ingress.enabled Habilitar ingreso false

Desinstalación del servidor MCP de AKS

El proceso de desinstalación del servidor MCP de AKS depende del modo de implementación y de dónde se está ejecutando actualmente.

VS Code con la extensión de AKS

  1. Abra la paleta de comandos (Ctrl+Shift+P en Windows/Linux o Cmd+Shift+P en macOS).
  2. Ejecute MCP: Enumerar servidores.
  3. Seleccione AKS MCP en la lista.
  4. Seleccione Detener servidor para detener el servidor en ejecución.
  5. Para quitar la configuración, seleccione Eliminar configuración del servidor.

Como alternativa, quite manualmente la configuración del servidor:

  1. Abra el .vscode/mcp.json archivo o la configuración de usuario de VS Code.
  2. Elimine la aks-mcp-server entrada del servers objeto o github.copilot.chat.mcp.servers .
  3. Elimine el AKS-MCP binario del sistema (la ubicación varía en función del método de instalación).

Docker

Si usa Docker MCP Toolkit:

  1. Abra Docker Desktop.
  2. Seleccione MCP Toolkit en la barra lateral izquierda.
  3. Busque el servidor AKS-MCP y deshabilítelo.

Si usa una configuración en contenedor, detenga y quite el contenedor:

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

Otros clientes MCP

Quite la entrada aks o aks-mcp del archivo de configuración de su cliente MCP (por ejemplo, de Claude Desktop claude_desktop_config.json).

Problemas habituales y soluciones

En esta sección se describen los problemas comunes de configuración y tiempo de ejecución, sus síntomas y cómo resolverlos.

El servidor MCP de AKS no puede acceder al clúster

Síntomas:

  • Las herramientas devuelven errores de autorización
  • No hay recursos visibles

Causas probables:

  • La identidad de usuario o MCP no tiene permisos suficientes
  • Enlace de ServiceAccount incorrecto
  • Contexto kubeconfig mal configurado (modo local)

Resolución:

  • Modo local: compruebe que tiene permisos suficientes para acceder al clúster. Compruebe que se encuentra en el clúster y el contexto de suscripción correctos.
  • Modo remoto: compruebe los enlaces ClusterRole para la cuenta de servicio usada por el servidor MCP.

Error en las llamadas API de Azure

Síntomas:

  • Las herramientas de call_az devuelven errores de autenticación o autorización.

Causas probables:

  • Identidad de carga de trabajo no habilitada para su clúster
  • ServiceAccount no federado
  • Faltan asignaciones de RBAC de Azure

Resolución:

  • Comprueba que la identidad de carga de trabajo esté habilitada en tu clúster.
  • Comprobación de la configuración de identidad federada
  • Asignación de roles de Azure adecuados a la identidad administrada

Pasos siguientes

Obtenga más información sobre las características inteligentes creadas de forma nativa para AKS:

  • Acerca del CLI agentic para AKS
  • Instalación y uso de la CLI agente para AKS