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
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 Kubernetesdescribe_resource: Obtener información detallada sobre recursos específicosget_pod_logs: Recuperar registros de pods con filtrado avanzadorollout_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 descubrimientogroupFilter(opcional): Filtrar por subcadena del grupo de API para descubrir recursos específicos del proyectonamespace(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 devolvertimeoutSeconds(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 recursoname(obligatorio): Nombre del recursonamespace(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 podnamespace(opcional): Espacio de nombres del pod (por defecto, "default")container(opcional): Nombre del contenedor específicotail(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 RFC3339timestamps(opcional): Incluir marcas de tiempoprevious(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.