/ Directorio / Playground / Kubernetes MCP Server
● Comunidad containers 🔑 Requiere tu clave

Kubernetes MCP Server

por containers · containers/kubernetes-mcp-server

kubectl, pero manejado por Claude — usa tu kubeconfig + RBAC, compatible con cualquier cluster (k8s estándar, OpenShift, EKS, GKE, AKS, k3s).

kubernetes-mcp-server (org containers) es un único binario Go que habla con cualquier API server de Kubernetes usando tu kubeconfig existente. Expone los verbos estándar (list/get/apply/delete/log/exec) como herramientas MCP respetando tu RBAC — para que el principio de mínimos privilegios siga funcionando. También admite extensiones de OpenShift.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

kubernetes-mcp-containers.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kubernetes-mcp-containers",
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "kubernetes-mcp-containers": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "kubernetes-mcp-server@latest"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add kubernetes-mcp-containers -- npx -y kubernetes-mcp-server@latest

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: Kubernetes MCP Server

Triar un incidente de producción en Kubernetes

👤 SREs / ingenieros de plataforma ⏱ ~10 min intermediate

Cuándo usarlo: Una app se comporta mal en producción y necesitas revisar pods, eventos y logs sin alt-tab.

Requisitos previos
  • kubeconfig con acceso al cluster — Estándar aws eks update-kubeconfig o equivalente
Flujo
  1. Encontrar pods no saludables
    k8s: en el contexto prod-us-east, namespace checkout, lista los pods que no están en estado Running. Incluye reason + restart count.✓ Copiado
    → Pods mostrados con estado, reason y reinicios
  2. Obtener eventos
    Obtén los eventos en ese namespace de los últimos 30 minutos, ordenados por tiempo.✓ Copiado
    → Lista de eventos; OOMKilled o ImagePullBackOff visible si están presentes
  3. Obtener logs
    Para el pod con el reinicio más reciente, muestra los logs del contenedor anterior (últimas 200 líneas).✓ Copiado
    → Stack trace / causa visible
  4. Diagnosticar
    Sintetiza: ¿cuál es probablemente la causa raíz y qué deberíamos hacer? Sé específico.✓ Copiado
    → Próximo paso concreto (p. ej. aumentar límite de memoria + desplegar)

Resultado: Triaje en menos de 5 minutos con nombres de pod y líneas de log citados.

Errores comunes
  • Los logs del contenedor anterior no están disponibles — Si el pod solo se reinició una vez, comprueba los logs del contenedor actual y el anterior solo si se crasheó
  • Contexto incorrecto — Especifica siempre el contexto por llamada; no confíes en la deriva de current-context
Combinar con: sentry · github

Crear un Deployment usando el contexto del cluster

👤 Devs de app escribiendo manifiestos ⏱ ~20 min intermediate

Cuándo usarlo: Necesitas un nuevo Deployment y quieres que coincida con las convenciones del cluster.

Flujo
  1. Inspeccionar uno existente
    k8s: obtén un Deployment existente de muestra en el namespace apps. Quiero coincidir con sus labels, security context y resources.✓ Copiado
    → Devuelve un YAML de Deployment representativo
  2. Crear el nuevo
    Ahora escribe un nuevo Deployment para image-resizer:1.2.0, 2 réplicas, puerto 8080, siguiendo las convenciones.✓ Copiado
    → YAML que respeta las convenciones del cluster
  3. Dry-run apply
    Aplica con --dry-run=server. Informa de cualquier error de validación.✓ Copiado
    → La validación server-side pasa; sin ApplyConfiguration drift

Resultado: Manifiesto que coincide con los idiomas del cluster al primer intento.

Errores comunes
  • Olvidar los labels de PSA — Lee primero los labels pod-security del namespace
Combinar con: filesystem · github

Auditar releases de Helm en todos los namespaces

👤 Equipo de plataforma ⏱ ~25 min intermediate

Cuándo usarlo: Trimestral: encontrar versiones de chart desactualizadas en toda la flota.

Flujo
  1. Listar todos los releases
    k8s/Helm: lista todos los releases en todos los namespaces. Incluye chart + versión + appVersion.✓ Copiado
    → Tabla completa de releases
  2. Destacar los desactualizados
    Para cada uno, compara contra la última versión del chart (puedes buscarla). Marca los releases con más de 2 versiones menores de retraso.✓ Copiado
    → Conjunto marcado con versión actual vs última

Resultado: Backlog de actualizaciones con orden de prioridad.

Errores comunes
  • Restos mixtos de Helm 2 — Filtra a releases v3; el MCP solo maneja Helm 3

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

kubernetes-mcp-containers + sentry

Correlacionar errores con reinicios de pod

Sentry: pico de errores a las 14:00. k8s: ¿algún reinicio de pod en el namespace checkout a esa hora?✓ Copiado
kubernetes-mcp-containers + github

Abrir PR con corrección de manifiesto

k8s: identifica el límite de memoria incorrecto. GitHub: abre un PR aumentándolo en helm/values.yaml.✓ Copiado
kubernetes-mcp-containers + mcp-grafana

Cruzar el estado de k8s con Prometheus

k8s: el pod está reiniciando. Grafana: extrae el historial de uso de memoria para ese pod.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_resources context?, namespace?, kind: str, label_selector? Descubrimiento 1 llamada API
get_resource context?, namespace?, kind, name Inspeccionar elemento específico 1 llamada
apply_yaml context?, yaml: str, dry_run?: bool Crear o actualizar 1 llamada
delete_resource context?, namespace?, kind, name Eliminar 1 llamada
get_logs context?, namespace, pod, container?, previous?, tail? Inspeccionar runtime 1 llamada
exec context?, namespace, pod, container?, command: str[] Diagnosticar dentro del contenedor 1 llamada
list_events context?, namespace, since? Buscar OOMKilled/ImagePullBackOff 1 llamada
list_helm_releases context?, namespace? Auditoría de Helm 1 llamada

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Limitada por QPS del kube-apiserver (predeterminado ~50)
Tokens por llamada
200–8000 (logs/yaml pueden ser grandes)
Monetario
OSS gratuito; factura del cluster aplica
Consejo
Usa --tail en logs agresivamente; nunca get pods -o yaml -A en clusters grandes

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: lo que tenga tu usuario kubeconfig — RBAC aplicado server-side
Almacenamiento de credenciales: Archivo kubeconfig; rota via tu proveedor cloud
Salida de datos: Solo tu endpoint de API de Kubernetes
No conceder nunca: cluster-admin a un kubeconfig usado con un LLM

Resolución de problemas

Errores comunes y soluciones

Unauthorized / 403

RBAC deniega el verbo; comprueba kubectl auth can-i para ese usuario

Verificar: kubectl auth can-i get pods -n checkout
Connection refused

VPN no activa, o el contexto apunta al endpoint incorrecto; comprueba kubectl cluster-info

Apply rechazado: error de validación

Ejecuta con dry_run=server primero; muestra el error exacto

Logs demasiado grandes

Usa el parámetro tail; por defecto es todo el log

Alternativas

Kubernetes MCP Server vs otros

AlternativaCuándo usarlaContrapartida
kubectl-mcp (otros forks)Prefieres un binario diferenteMenos mantenido activamente
Lens / k9sQuieres una UI interactiva, no LLMSin capa de automatización
Argo CD MCPSolo usas GitOpsIndirecto; despliega via Git, no API directa

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills