En este lab vamos a crear un clúster local usando Kind y luego usar la idea de AWS MCP para EKS como apoyo para revisar recursos de Kubernetes con más contexto.
La idea es simple:
Crear un clúster local.
Desplegar una app de prueba.
Revisar qué está pasando.
Usar MCP como apoyo para entender mejor el entorno.
Requisitos
Antes de empezar, necesitas tener instalado:
Docker
Kind
kubectl
AWS CLI
Un cliente compatible con MCP.
Valida que Docker esté corriendo:
docker ps
Valida Kind:
kind version
Y valida kubectl:
kubectl version --client
Crear el clúster local con Kind
Creamos un clúster local llamado demo-eks-lab:
kind create cluster --name demo-eks-lab
Luego confirmamos que el clúster esté arriba:
kubectl cluster-info --context kind-demo-eks-lab
Y revisamos los nodos:
kubectl get nodes
Si ves el nodo en estado Ready, ya tienes tu clúster local funcionando.
Crear un namespace de prueba
Creamos un namespace para el lab:
kubectl create namespace app-demo
Validamos que exista:
kubectl get namespaces
Desplegar una aplicación de prueba
Ahora vamos a crear un deployment sencillo usando NGINX:
kubectl create deployment web-demo \
--image=nginx \
--replicas=2 \
-n app-demo
Revisamos los pods:
kubectl get pods -n app-demo
Y revisamos el deployment:
kubectl get deployment -n app-demo
Hasta aquí tenemos un clúster local, un namespace y una aplicación corriendo.
Exponer la aplicación
Creamos un servicio para exponer la app dentro del clúster:
kubectl expose deployment web-demo \
--port=80 \
--target-port=80 \
--type=ClusterIP \
-n app-demo
Validamos el servicio:
kubectl get svc -n app-demo
Para probarlo localmente, usamos port-forward:
kubectl port-forward svc/web-demo 8080:80 -n app-demo
Luego abre en el navegador:
http://localhost:8080
Si ves la página de NGINX, la app está funcionando.
Configurar EKS MCP Server usando kubeconfig
Como este lab está usando un clúster local con Kind, vamos a configurar el EKS MCP Server para que use el mismo contexto que ya tienes en kubectl.
En este caso no vamos a usar un clúster real de EKS todavía.
Vamos a usar el modo:
EKS_AUTH_MODE=kubeconfig
Este modo permite que el MCP Server lea el acceso desde tu archivo kubeconfig, que normalmente es el mismo archivo que usa kubectl. AWS Labs documenta este modo para ambientes donde Kubernetes se accede usando kubeconfig, certificados, tokens u otros métodos similares.
Confirmar que kubectl apunta al clúster
Primero valida el contexto actual:
kubectl config current-context
Si creaste el clúster con Kind usando este comando:
kind create cluster --name demo-eks-lab
Entonces deberías ver algo parecido a esto:
kind-demo-eks-lab
Ahora confirma que puedes ver los nodos:
kubectl get nodes
La salida debería verse parecida a esto:
NAME STATUS ROLES AGE VERSION
demo-eks-lab-control-plane Ready control-plane 2m v1.30.x
Si kubectl get nodes funciona, entonces tu kubeconfig está bien para este lab.
Confirmar la ruta del kubeconfig
Normalmente, kubectl usa este archivo:
~/.kube/config
Pero para la configuración del MCP es mejor usar la ruta completa.
En macOS o Linux puedes verla con:
echo $HOME/.kube/config
Ejemplo:
/Users/wilkins/.kube/config
Si tienes la variable KUBECONFIG definida, revisa su valor:
echo $KUBECONFIG
Si no devuelve nada, usa:
$HOME/.kube/config
Para confirmar que el archivo existe:
ls -la $HOME/.kube/config
Confirmar que tienes uvx instalado
El EKS MCP Server se puede ejecutar usando uvx.
Valida si lo tienes instalado:
uvx --version
Si el comando no existe, instala uv.
En macOS con Homebrew:
brew install uv
Luego valida otra vez:
uvx --version
Crear o editar el archivo de MCP
Ahora necesitas abrir el archivo de configuración MCP de tu cliente.
La ruta depende de la herramienta que estés usando.
Algunos ejemplos comunes:
Cursor:
~/.cursor/mcp.json
Kiro:
~/.kiro/settings/mcp.json
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
Si estás en macOS y usas Cursor, puedes abrirlo así:
mkdir -p ~/.cursor
nano ~/.cursor/mcp.json
Si usas Kiro:
mkdir -p ~/.kiro/settings
nano ~/.kiro/settings/mcp.json
Si usas Claude Desktop en macOS:
nano "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
Agregar la configuración del EKS MCP
Pega esta configuración en el archivo MCP de tu cliente:
{
"mcpServers": {
"awslabs.eks-mcp-server": {
"command": "uvx",
"args": [
"awslabs.eks-mcp-server@latest"
],
"env": {
"EKS_AUTH_MODE": "kubeconfig",
"KUBECONFIG": "/Users/wilkins/.kube/config",
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": []
}
}
}
Cambia esta línea:
"KUBECONFIG": "/Users/wilkins/.kube/config"
Por la ruta real de tu máquina.
Por ejemplo:
"KUBECONFIG": "/Users/tu-usuario/.kube/config"
En este lab, lo importante es esta parte:
"env": {
"EKS_AUTH_MODE": "kubeconfig",
"KUBECONFIG": "/Users/tu-usuario/.kube/config",
"FASTMCP_LOG_LEVEL": "ERROR"
}
Porque ahí le decimos al MCP Server:
Usa mi kubeconfig local.
Trabaja con el mismo contexto que usa kubectl.
No intentes autenticar contra EKS usando IAM para este lab.
AWS Labs muestra EKS_AUTH_MODE=kubeconfig y KUBECONFIG como variables válidas para este modo. También indica que en kubeconfig mode la autenticación la maneja el cliente de Kubernetes usando lo que ya esté configurado en el kubeconfig.
Reiniciar el cliente MCP
Después de guardar el archivo, cierra y abre de nuevo tu cliente.
Por ejemplo:
Cierra Cursor, Kiro o Claude Desktop.
Ábrelo de nuevo.
Espera unos segundos para que cargue el MCP Server.
Si el cliente tiene una sección de MCP tools o MCP servers, valida que aparezca:
awslabs.eks-mcp-server
Primera prueba desde el asistente
Ahora prueba desde tu cliente de IA con una pregunta sencilla:
Lista los namespaces del clúster actual.
También puedes probar:
Revisa los pods del namespace default.
Dame un resumen de los recursos que existen en el clúster actual.
Si todo está bien, el asistente debería poder leer información del clúster usando tu kubeconfig.
Prueba con el namespace del lab
Si en el lab creaste el namespace app-demo, prueba esto:
Revisa los pods del namespace app-demo.
Luego:
Lista los deployments del namespace app-demo.
Y después:
Revisa los eventos recientes del namespace app-demo y dime si hay algo fallando.
Prueba con un error real
Si rompiste el deployment cambiando la imagen a una que no existe:
kubectl set image deployment/web-demo \
nginx=nginx:no-existe \
-n app-demo
Puedes pedirle al asistente:
Revisa el namespace app-demo y dime por qué los pods están fallando.
O más directo:
Tengo pods en ImagePullBackOff en app-demo. Revisa el deployment, los pods y los eventos, y explícame qué está pasando.
El resultado esperado es que el asistente identifique que el problema viene de la imagen:
nginx:no-existe
Y que el pod no puede descargarla.
Corregir el problema
Corrige la imagen:
kubectl set image deployment/web-demo \
nginx=nginx:latest \
-n app-demo
Valida el rollout:
kubectl rollout status deployment/web-demo -n app-demo
Confirma los pods:
kubectl get pods -n app-demo
Luego puedes pedirle al asistente:
Confirma si el deployment web-demo en app-demo ya está saludable.
Video relacionado
Puedes verlo aquí
Unete a la conversacion
Necesitas iniciar sesion con una cuenta registrada para comentar en este articulo.