Servidor MCP Kubernetes - MCP Server Seguro por ALMC Security 2025

Servidor MCP Kubernetes

Ver en GitHub

Servidor MCP Kubernetes

testscodecovLicense: MIT

https://github.com/user-attachments/assets/89df70b0-65d1-461c-b4ab-84b2087136fa

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso seguro y de solo lectura a los recursos de Kubernetes para depuración e inspección. Construido pensando en la seguridad, ofrece una visibilidad completa del clúster sin capacidad de modificación.

Características

  • 🔒Seguridad desolo lectura: Inspeccione de forma segura los recursos de Kubernetes sin capacidades de modificación
  • 🎯 Compatibilidad con CRD: Funciona sin problemas con cualquier Custom Resource Definitions en su clúster
  • 🌐 Compatibilidad con varios clústeres: Cambia entre diferentes contextos de Kubernetes sin problemas
  • 🔍Descubrimiento inteligente: Encuentre recursos por subcadena de grupo de API (por ejemplo, "flux" para FluxCD, "argo" para ArgoCD)
  • Alto rendimiento: Consulta eficiente de recursos con filtrado y paginación
  • 🛠️ Completo conjunto de herramientas
    • list_resources: Enumera y filtra los recursos de Kubernetes con opciones avanzadas
    • describe_resource: Obtenga información detallada sobre recursos específicos
    • get_pod_logs: Recupera los registros del pod con sofisticadas capacidades de filtrado
    • list_events: Enumera y filtra eventos de Kubernetes para depuración y monitorización
    • list_contexts: Lista todos los contextos de Kubernetes disponibles en kubeconfig

inicio rápido

Requisitos previos

  • Acceso al clúster Kubernetes con un archivo kubeconfig válido
  • Go 1.24+ (para construir desde el código fuente)

Opciones de instalación

Opción 1: Instalar con Go (recomendado)

go install github.com/kkb0318/kubernetes-mcp@latest

El binario estará disponible en $GOPATH/bin/kubernetes-mcp (o $HOME/go/bin/kubernetes-mcp si GOPATH no está configurado).

Opción 2: Compilar desde el código fuente

git clone https://github.com/kkb0318/kubernetes-mcp.git cd kubernetes-mcp go build -o kubernetes-mcp

⚙️ Configuración

Configuración del servidor MCP

Añada el servidor a su configuración MCP:

Configuración básica

Utiliza ~/.kube/config automáticamente:

{ "mcpServers": { "kubernetes": { "command": "/path/to/kubernetes-mcp" } }

Kubeconfig personalizado

{ "mcpServers": { "kubernetes": { "command": "/path/to/kubernetes-mcp", "env": { "KUBECONFIG": "/ruta/a/tu/kubeconfig" } } }

Nota: Sustituya /ruta/a/kubernetes-mcp por su ruta binaria real.

Uso autónomo

# Kubeconfig por defecto (~/.kube/config) ./kubernetes-mcp KUBECONFIG=/ruta/su/kubeconfig ./kubernetes-mcp

Importante: Asegúrese de que dispone de los permisos de lectura adecuados para los recursos de Kubernetes que desea inspeccionar.

🛠️ Herramientas disponibles

list_resources

Enumere y filtre los recursos de Kubernetes con funciones avanzadas.

ParámetroTipoDescripción
contextoopcionalNombre del contexto Kubernetes de kubeconfig (dejar vacío para el contexto actual)
tipoobligatorioTipo de recurso (Pod, Deployment, Service, etc.) o "all" para descubrimiento
groupFilteropcionalFiltro por subcadena de grupo de API para recursos específicos del proyecto
espacio de nombresopcionalEspacio de nombres de destino (por defecto, todos los espacios de nombres)
labelSelectoropcionalFiltro por etiquetas (por ejemplo, "app=nginx")
fieldSelectoropcionalFiltrar por campos (por ejemplo, "metadata.name=my-pod")
límiteopcionalNúmero máximo de recursos a devolver
timeoutSecondsopcionalTiempo de espera de la solicitud (por defecto: 30 segundos)
showDetailsopcionalDevuelve los objetos de recurso completos en lugar del resumen

Ejemplos:

// Listar pods con selector de etiquetas { "kind": "Pod", "namespace": "default", "labelSelector": "app=nginx" } // Listar pods de un contexto de cluster específico { "kind": "Pod", "context": "production-cluster", "namespace": "default" } // Descubrir recursos FluxCD { "kind": "all", "groupFilter": "flux" }

describe_resource

Obtener información detallada sobre un recurso Kubernetes específico.

ParámetroTipoDescripción
contextoopcionalNombre del contexto Kubernetes de kubeconfig (dejar vacío para el contexto actual)
tipoobligatorioTipo de recurso (Pod, Deployment, etc.)
nombreobligatorioNombre del recurso
espacio de nombresopcionalEspacio de nombres de destino

Ejemplo:

{ "kind": "Pod", "name": "nginx-pod", "namespace": "default" }

get_pod_logs

Recupera los registros del pod con sofisticadas opciones de filtrado.

ParámetroTipoDescripción
contextoopcionalNombre del contexto Kubernetes de kubeconfig (dejar vacío para el contexto actual)
nombreobligatorioNombre del Pod
espacio de nombresopcionalEspacio de nombres del pod (por defecto "default")
contenedoropcionalNombre específico del contenedor
colaopcionalNúmero de líneas desde el final (por defecto: 100)
desdeopcionalDuración como "5s", "2m", "3h"
desdeHoraopcionalMarca de tiempo RFC3339
marcas de tiempoopcionalIncluir marcas de tiempo en la salida
anterioropcionalObtener registros de la instancia anterior del contenedor

Ejemplo:

{ "name": "nginx-pod", "namespace": "default", "tail": 50, "since": "5m", "timestamps": true }

list_events

Enumera y filtra eventos de Kubernetes con opciones avanzadas de filtrado para depuración y monitorización.

ParámetroTipoDescripción
contextoopcionalNombre del contexto Kubernetes de kubeconfig (dejar vacío para el contexto actual)
espacio de nombresopcionalEspacio de nombres de destino (dejar vacío para todos los espacios de nombres)
objetoopcionalFiltro por nombre de objeto (por ejemplo, nombre de pod, nombre de despliegue)
eventTypeopcionalFiltro por tipo de evento: "Normal" o "Advertencia" (no distingue mayúsculas de minúsculas)
motivoopcionalFiltro por motivo del evento (por ejemplo, "Pulled", "Failed", "FailedScheduling")
desdeopcionalDuración como "5s", "2m", "1h"
desdeHoraopcionalRFC3339 timestamp (por ejemplo, "2025-06-20T10:00:00Z")
límiteopcionalNúmero máximo de eventos a devolver (por defecto: 100)
timeoutSecondsopcionalTiempo de espera de la solicitud (por defecto: 30s)

Ejemplos:

// Listar eventos de advertencia recientes { "eventType": "Warning", "since": "30m" } // Listar eventos para un pod específico { "object": "nginx-pod", "namespace": "default" } // Listar eventos de programación fallida { "reason": "FailedScheduling", "limit": 50 }

list_contexts

Lista todos los contextos Kubernetes disponibles en su archivo kubeconfig.

Parámetros:None - esta herramienta no toma parámetros.

Ejemplo de respuesta:

{ "contexts": [ { "name": "production-cluster", "is_current": false }, { "name": "staging-cluster", "is_current": true }, { "name": "development-cluster", "is_current": false } ], "current_context": "staging-cluster", "total": 3 }

Caso de uso:Perfecto para flujos de trabajo multiclúster en los que es necesario:

  • Descubrir los contextos Kubernetes disponibles
  • Identificar el contexto activo actual
  • Planificar operaciones a través de múltiples clústeres

🌟 Funciones avanzadas

🌐 Compatibilidad con varios clústeres

Trabaje sin problemas con múltiples clústeres Kubernetes utilizando el cambio de contexto:

  • Parámetro de contexto: Todas las herramientas ahora admiten un parámetro de contexto opcional para especificar qué clúster consultar
  • Detección automática: Utiliza su archivo kubeconfig existente y descubre automáticamente los contextos disponibles
  • Contexto por defecto: Cuando no se especifica ningún contexto, utiliza el contexto actual de su kubeconfig
  • Conexiones en caché: Gestiona eficientemente las conexiones a múltiples clusters con el almacenamiento en caché de conexiones

Ejemplos multiclúster:

// Consultar clúster de producción { "kind": "Pod", "context": "production-cluster", "namespace": "default" } // Get logs from staging environment { "name": "api-server", "context": "staging-cluster", "namespace": "api" } // Comparar recursos entre entornos (utilizar varias llamadas) { "kind": "Deployment", "context": "production-cluster", "namespace": "app" }

🎯 Compatibilidad con definiciones de recursos personalizadas (CRD)

Descubre automáticamente y trabaja con cualquier CRD en su clúster. Basta con utilizar el nombre de tipo de CRD con las herramientas list_resources o describe_resource.

descubrimiento inteligente de recursos

Utilice el parámetro groupFilter para descubrir recursos por subcadena de grupo de API:

FiltroDescubreEjemplos
"fluxRecursos FluxCDHelmReleases, Kustomizations, GitRepositories
"argoRecursos ArgoCDAplicaciones, AppProjects, ApplicationSets
"istioRecursos IstioVirtualServices, DestinationRules, Gateways
"cert-managerrecursos cert-managerCertificados, Emisores, ClusterIssuers

🔒 Seguridad

Construido con la seguridad como principal preocupación:

  • Acceso de sólo lectura - Sin creación, modificación o eliminación de recursos
  • ✅ S eguro para producción - Seguro para su uso en entornos de producción
  • Permisos mínimos - Sólo se requiere acceso de lectura a los recursos del clúster
  • ✅ S in operaciones destructivas - No puede dañar su clúster

🤝 Contribuir

Las contribuciones son bienvenidas Por favor, asegúrese de que todos los cambios mantienen la naturaleza de sólo lectura del servidor e incluyen las pruebas adecuadas.

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
KiotViet SDKNo hay documentación disponible.Ver
Nube TerraformVer
Recuperación de KB de Bedrock de AWSServidor MCP para acceder a las bases de conocimiento de Amazon BedrockVer
APISIX-MCPVer
Servidor MCP de WazuhUn servidor basado en Rust diseñado para tender un puente entre un sistema Wazuh de Información de S...Ver
Servidor Slide MCPUna implementación de servidor MCP que se integra con la API Slide, proporcionando capacidades compl...Ver