Kubernetes
Conéctate al clúster de Kubernetes y gestiona pods, deployments, servicios.
Documentación
MCP Server Kubernetes
Servidor MCP que puede conectarse a un clúster de Kubernetes y gestionarlo. Admite la carga de kubeconfig desde múltiples fuentes en orden de prioridad.
https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed
Instalación y Uso
Requisitos previos
Antes de usar este servidor MCP con cualquier herramienta, asegúrate de tener:
- kubectl instalado y en tu PATH
- Un archivo kubeconfig válido con contextos configurados
- Acceso a un clúster de Kubernetes configurado para kubectl (por ejemplo, minikube, Rancher Desktop, GKE, etc.)
- Helm v3 instalado y en tu PATH (no se requiere Tiller). Opcional si no planeas usar Helm.
Puedes verificar tu conexión ejecutando kubectl get pods en una terminal para asegurarte de que puedes conectarte a tu clúster sin problemas de credenciales.
Por defecto, el servidor carga kubeconfig desde ~/.kube/config. Para opciones de autenticación adicionales (variables de entorno, rutas personalizadas, etc.), consulta ADVANCED_README.md.
Claude Code
Añade el servidor MCP a Claude Code usando el comando integrado:
claude mcp add kubernetes -- npx mcp-server-kubernetes
Esto configurará automáticamente el servidor en tu configuración MCP de Claude Code.
Codex
Añade el servidor MCP a Codex CLI usando el comando integrado:
codex mcp add kubernetes -- npx mcp-server-kubernetes
Esto registra el servidor globalmente en ~/.codex/config.toml y hace que sus herramientas estén disponibles en todas las sesiones de Codex.
Claude Desktop
Añade la siguiente configuración a tu archivo de configuración de Claude Desktop:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
Conector de Claude Desktop vía mcpb
MCP Server Kubernetes también está disponible como una extensión mcpb (anteriormente dxt). En Claude Desktop, ve a Configuración (Cmd+, en Mac) -> Extensiones -> Explorar extensiones y desplázate para encontrar mcp-server-kubernetes en el modal. Instálalo y se instalará y utilizará kubectl a través de la línea de comandos y tu kubeconfig.
Para instalar manualmente, también puedes obtener el .mcpb yendo a la última Release y descargándolo.
VS Code
Para la integración con VS Code, puedes usar el servidor MCP con extensiones que soporten el Model Context Protocol:
- Instala una extensión MCP compatible (como Claude Dev o clientes MCP similares)
- Configura la extensión para usar este servidor:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"description": "Kubernetes cluster management and operations"
}
}
}
Cursor
Cursor soporta servidores MCP a través de su integración de IA. Añade el servidor a tu configuración MCP de Cursor:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
El servidor se conectará automáticamente a tu contexto kubectl actual. Puedes verificar la conexión pidiendo al asistente de IA que liste tus pods o cree un despliegue de prueba.
Uso con mcp-chat
mcp-chat es un cliente de chat CLI para servidores MCP. Puedes usarlo para interactuar con el servidor de Kubernetes.
npx mcp-chat --server "npx mcp-server-kubernetes"
Alternativamente, pásale tu archivo de configuración de Claude Desktop existente de arriba (Linux debe pasar la ruta correcta al config):
Mac:
npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"
Windows:
npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"
Características
- Conectarse a un clúster de Kubernetes
- API kubectl unificada para gestionar recursos
- Obtener o listar recursos con
kubectl_get - Describir recursos con
kubectl_describe - Listar recursos con
kubectl_get - Crear recursos con
kubectl_create - Aplicar manifiestos YAML con
kubectl_apply - Eliminar recursos con
kubectl_delete - Obtener registros con
kubectl_logs - Gestionar contextos kubectl con
kubectl_context - Explicar recursos de Kubernetes con
explain_resource - Listar recursos de API con
list_api_resources - Escalar recursos con
kubectl_scale - Actualizar campo(s) de un recurso con
kubectl_patch - Gestionar despliegues con
kubectl_rollout - Ejecutar cualquier comando kubectl con
kubectl_generic - Verificar conexión con
ping
- Obtener o listar recursos con
- Operaciones avanzadas
- Escalar despliegues con
kubectl_scale(reemplaza el legadoscale_deployment) - Reenvío de puertos a pods y servicios con
port_forward - Ejecutar operaciones de Helm
- Instalar, actualizar y desinstalar charts
- Soporte para valores personalizados, repositorios y versiones
- Instalación basada en plantillas (
helm_template_apply) para evitar problemas de autenticación - Desinstalación basada en plantillas (
helm_template_uninstall) para evitar problemas de autenticación
- Operaciones de limpieza de pods
- Limpiar pods problemáticos (
cleanup_pods) en estados: Evicted, ContainerStatusUnknown, Completed, Error, ImagePullBackOff, CrashLoopBackOff
- Limpiar pods problemáticos (
- Operaciones de gestión de nodos
- Aislamiento, drenaje y desaislamiento de nodos (
node_management) para operaciones de mantenimiento y escalado
- Aislamiento, drenaje y desaislamiento de nodos (
- Escalar despliegues con
- Prompt de resolución de problemas (
k8s-diagnose)- Guía a través de un flujo sistemático de resolución de problemas de Kubernetes para pods basado en una palabra clave y un namespace opcional.
- Modo no destructivo para acceso de solo lectura y creación/actualización a clústeres
- Enmascaramiento de secretos por seguridad (enmascara datos sensibles en comandos
kubectl get secrets, no afecta los registros) - Observabilidad OpenTelemetry (opt-in)
- Trazado distribuido para todas las llamadas de herramientas
- Exportación a Jaeger, Tempo, Grafana o cualquier backend OTLP
- Estrategias de muestreo configurables
- Atributos de span enriquecidos (nombre de herramienta, duración, contexto K8s, errores)
- Consulta docs/OBSERVABILITY.md para más detalles
Observabilidad
El servidor MCP Kubernetes incluye una integración opcional de OpenTelemetry para una observabilidad integral. Esta característica está deshabilitada por defecto y puede habilitarse mediante variables de entorno o configuración de Helm.
Inicio rápido
Habilita la observabilidad con variables de entorno:
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
npx mcp-server-kubernetes
Qué se rastrea
- Todas las llamadas de herramientas: kubectl_get, kubectl_apply, kubectl_logs, etc.
- Duración de ejecución: Cuánto tarda cada operación
- Estado de éxito/fallo: Seguimiento automático de errores
- Contexto de Kubernetes: Namespace, contexto, tipo de recurso
- Metadatos enriquecidos: Host, proceso y atributos personalizados
Backends compatibles
Funciona con cualquier backend compatible con OTLP:
- Jaeger (código abierto)
- Grafana Tempo (código abierto)
- Grafana Cloud (comercial)
- Datadog, New Relic, Honeycomb, Lightstep, AWS X-Ray
Configuración
Consulta docs/OBSERVABILITY.md para documentación completa que incluye:
- Opciones de configuración
- Ejemplos de despliegue (Kubernetes, Helm, Claude Code)
- Estrategias de muestreo
- Mejores prácticas de producción
- Guía de resolución de problemas
Ejemplo con Jaeger
# Start Jaeger
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latest
# Enable telemetry
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_TRACES_SAMPLER=always_on
# Run server
npx mcp-server-kubernetes
# View traces: http://localhost:16686
Prompts
El servidor MCP Kubernetes incluye prompts especializados para ayudar con operaciones de diagnóstico comunes.
Prompt /k8s-diagnose
Este prompt proporciona un flujo sistemático de resolución de problemas para pods de Kubernetes. Acepta un keyword para identificar pods relevantes y un namespace opcional para acotar la búsqueda.
La salida del prompt te guiará a través de un flujo autónomo de resolución de problemas, proporcionando instrucciones para identificar problemas, recopilar evidencia y sugerir pasos de remediación.
Desarrollo local
Asegúrate de tener bun instalado. Clona el repositorio e instala las dependencias:
git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
Flujo de trabajo de desarrollo
- Inicia el servidor en modo desarrollo (observa los cambios de archivos):
bun run dev
- Ejecuta las pruebas unitarias:
bun run test
- Compila el proyecto:
bun run build
- Pruebas locales con Inspector
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
- Pruebas locales con Claude Desktop
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}
- Pruebas locales con mcp-chat
bun run chat
Contribuciones
Consulta el archivo CONTRIBUTING.md para más detalles.
Avanzado
Modo no destructivo
Puedes ejecutar el servidor en un modo no destructivo que deshabilita todas las operaciones destructivas (eliminar pods, eliminar despliegues, eliminar namespaces, etc.):
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true npx mcp-server-kubernetes
Para la configuración de Claude Desktop con modo no destructivo:
{
"mcpServers": {
"kubernetes-readonly": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"env": {
"ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS": "true"
}
}
}
}
Comandos disponibles en modo no destructivo
Todas las operaciones de solo lectura y de creación/actualización de recursos permanecen disponibles:
- Información de recursos:
kubectl_get,kubectl_describe,kubectl_logs,explain_resource,list_api_resources - Creación/Modificación de recursos:
kubectl_apply,kubectl_create,kubectl_scale,kubectl_patch,kubectl_rollout - Operaciones de Helm:
install_helm_chart,upgrade_helm_chart,helm_template_apply,helm_template_uninstall - Conectividad:
port_forward,stop_port_forward - Gestión de contextos:
kubectl_context
Comandos deshabilitados en modo no destructivo
Las siguientes operaciones destructivas están deshabilitadas:
kubectl_delete: Eliminar cualquier recurso de Kubernetesuninstall_helm_chart: Desinstalar charts de Helmcleanup: Limpieza de recursos gestionadoscleanup_pods: Limpieza de pods problemáticosnode_management: Operaciones de gestión de nodos (pueden drenar nodos)kubectl_generic: Acceso general a comandos kubectl (puede incluir operaciones destructivas)
Para características avanzadas adicionales, consulta el ADVANCED_README.md y también la carpeta docs para información específica sobre helm_install, helm_template_apply, gestión de nodos y limpieza de pods.
Arquitectura
Consulta este enlace de DeepWiki para una visión más profunda de la arquitectura creada por Devin.
Esta sección describe la arquitectura de alto nivel del servidor MCP Kubernetes.
Flujo de solicitudes
El diagrama de secuencia a continuación ilustra cómo fluyen las solicitudes a través del sistema:
sequenceDiagram
participant Client
participant Transport as Transport Layer
participant Server as MCP Server
participant Filter as Tool Filter
participant Handler as Request Handler
participant K8sManager as KubernetesManager
participant K8s as Kubernetes API
Note over Transport: StdioTransport or<br>SSE Transport
Client->>Transport: Send Request
Transport->>Server: Forward Request
alt Tools Request
Server->>Filter: Filter available tools
Note over Filter: Remove destructive tools<br>if in non-destructive mode
Filter->>Handler: Route to tools handler
alt kubectl operations
Handler->>K8sManager: Execute kubectl operation
K8sManager->>K8s: Make API call
else Helm operations
Handler->>K8sManager: Execute Helm operation
K8sManager->>K8s: Make API call
else Port Forward operations
Handler->>K8sManager: Set up port forwarding
K8sManager->>K8s: Make API call
end
K8s-->>K8sManager: Return result
K8sManager-->>Handler: Process response
Handler-->>Server: Return tool result
else Resource Request
Server->>Handler: Route to resource handler
Handler->>K8sManager: Get resource data
K8sManager->>K8s: Query API
K8s-->>K8sManager: Return data
K8sManager-->>Handler: Format response
Handler-->>Server: Return resource data
end
Server-->>Transport: Send Response
Transport-->>Client: Return Final Response
Consulta este enlace de DeepWiki para una visión más profunda de la arquitectura creada por Devin.
Publicar una nueva versión
Ve a la página de releases, haz clic en "Draft New Release", haz clic en "Choose a tag" y crea una nueva etiqueta escribiendo un nuevo número de versión usando el formato semver "v{major}.{minor}.{patch}". Luego, escribe un título de release "Release v{major}.{minor}.{patch}" y una descripción / changelog si es necesario y haz clic en "Publish Release".
Esto creará una nueva etiqueta que desencadenará una nueva compilación de release a través del flujo de trabajo cd.yml. Una vez exitoso, la nueva versión se publicará en npm. Ten en cuenta que no es necesario actualizar manualmente la versión en package.json, ya que el flujo de trabajo actualizará automáticamente el número de versión en el archivo package.json y hará un commit a main.
No planificado
Añadir clústeres a kubectx.
Historial de estrellas
🖊️ Citar
Si encuentras útil este repositorio, por favor cítalo:
@software{Patel_MCP_Server_Kubernetes_2024,
author = {Patel, Paras and Sonwalkar, Suyog},
month = jul,
title = {{MCP Server Kubernetes}},
url = {https://github.com/Flux159/mcp-server-kubernetes},
version = {2.5.0},
year = {2024}
}