Kubernetes MCP Server

Inspecciona y depura clústeres de Kubernetes con acceso de solo lectura a recursos, CRDs y registros de pods.

Documentación

Kubernetes MCP Server

tests

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

Un servidor de Model Context Protocol (MCP) para depuración e inspección de Kubernetes. Este servidor proporciona acceso de solo lectura a los recursos de Kubernetes sin la capacidad de crearlos o modificarlos, lo que lo hace seguro para fines de depuración y monitoreo.

Características

  • Acceso de solo lectura: Inspeccione de forma segura los recursos de Kubernetes sin capacidades de modificación
  • Soporte para CRD: Funciona con cualquier definición de recursos personalizados (CRD) en su clúster
  • Búsqueda por subcadena: Descubra recursos por subcadena del grupo de API (por ejemplo, "flux" para FluxCD, "argo" para ArgoCD)
  • Herramientas integradas:
    • list_resources: Listar y filtrar recursos de Kubernetes
    • describe_resource: Obtener información detallada sobre recursos específicos
    • get_pod_logs: Recuperar registros de pods con filtrado avanzado
    • rollout_restart: Realizar un reinicio gradual de un despliegue de Kubernetes

Instalación

Requisitos previos

  • Acceso a un clúster de Kubernetes (se requiere kubeconfig)

Opción 1: Instalar con Go

Si tiene Go instalado, esta es la forma más sencilla:

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

El binario se instalará 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

Si prefiere compilar desde el código fuente:

Requisitos:

  • Go 1.24 o posterior
git clone https://github.com/k4mrul/kubernetes-mcp.git
cd kubernetes-mcp
go build -o kubernetes-mcp .

Uso

Configuración

Para usar este servidor MCP, agréguelo a su archivo de configuración:

Configuración básica (usa ~/.kube/config automáticamente):

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

Reemplace /path/to/kubernetes-mcp con la ruta real a su binario.

Ubicación personalizada de kubeconfig:

{
  "mcpServers": {
    "kubernetes": {
      "command": "/usr/local/bin/kubernetes-mcp",
      "env": {
        "KUBECONFIG": "/path/to/your/kubeconfig"
      }
    }
  }
}

Uso manual

El servidor usa su kubeconfig predeterminado para el acceso al clúster. Asegúrese de tener los permisos de lectura adecuados para los recursos que desea inspeccionar.

./kubernetes-mcp

Herramientas disponibles

1. list_resources

Listar recursos de Kubernetes con capacidades de filtrado.

Parámetros:

  • kind (obligatorio): Tipo de recurso (Pod, Deployment, Service, etc.) o "all" para descubrimiento
  • groupFilter (opcional): Filtrar por subcadena del grupo de API para descubrir recursos específicos del proyecto
  • namespace (opcional): Espacio de nombres objetivo (por defecto, todos los espacios de nombres)
  • labelSelector (opcional): Filtrar por etiquetas (por ejemplo, "app=nginx")
  • fieldSelector (opcional): Filtrar por campos (por ejemplo, "metadata.name=my-pod")
  • limit (opcional): Número máximo de recursos a devolver
  • timeoutSeconds (opcional): Tiempo de espera de la solicitud (por defecto: 30s)
  • showDetails (opcional): Devolver objetos de recurso completos en lugar de un resumen

Ejemplo de uso:

{
  "kind": "Pod",
  "namespace": "default",
  "labelSelector": "app=nginx"
}

Modo de descubrimiento:

{
  "kind": "all",
  "groupFilter": "flux"
}

2. describe_resource

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

Parámetros:

  • kind (obligatorio): Tipo de recurso
  • name (obligatorio): Nombre del recurso
  • namespace (opcional): Espacio de nombres objetivo

Ejemplo de uso:

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

3. get_pod_logs

Recuperar registros de pods con varias opciones de filtrado.

Parámetros:

  • name (obligatorio): Nombre del pod
  • namespace (opcional): Espacio de nombres del pod (por defecto, "default")
  • container (opcional): Nombre del contenedor específico
  • tail (opcional): Número de líneas desde el final (por defecto: 100)
  • since (opcional): Duración como "5s", "2m", "3h"
  • sinceTime (opcional): Marca de tiempo RFC3339
  • timestamps (opcional): Incluir marcas de tiempo
  • previous (opcional): Obtener registros de la instancia de contenedor anterior

Ejemplo de uso:

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

Características principales

Soporte para CRD

El servidor descubre y trabaja automáticamente con cualquier definición de recursos personalizados en su clúster. Simplemente use el nombre de Kind del CRD con las herramientas list_resources o describe_resource.

Descubrimiento de recursos

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

  • "flux" - Descubrir recursos de FluxCD (HelmReleases, Kustomizations, etc.)
  • "argo" - Descubrir recursos de ArgoCD (Applications, AppProjects, etc.)
  • "istio" - Descubrir recursos de Istio (VirtualServices, DestinationRules, etc.)
  • "cert-manager" - Descubrir recursos de cert-manager (Certificates, Issuers, etc.)

Seguridad ante todo

Este servidor está diseñado solo para depuración e inspección:

  • Sin capacidades de creación, modificación o eliminación de recursos
  • Acceso de solo lectura a los recursos del clúster
  • Seguro de usar en entornos de producción para monitoreo

Contribuciones

Este proyecto es de código abierto y agradece contribuciones. Asegúrese de que todos los cambios mantengan la naturaleza de solo lectura del servidor.

Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para obtener más detalles.

Soporte