Servidor MCP de Kubernetes
✨ Características | 🚀 Primeros pasos | 🎥 Demostraciones | ⚙️ Configuración | 🛠️ Herramientas | 🧑💻 Desarrollo
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ Características
Una implementación de servidor de Protocolo de contexto de modelo (MCP) de Kubernetes potente y flexible con soporte para Kubernetes y OpenShift .
- ✅ Configuración :
- Detecta automáticamente cambios en la configuración de Kubernetes y actualiza el servidor MCP.
- Ver y administrar la configuración actual de Kubernetes
.kube/config
o en el clúster.
- ✅ Recursos genéricos de Kubernetes : realice operaciones en cualquier recurso de Kubernetes u OpenShift.
- Cualquier operación CRUD (Crear o actualizar, obtener, enumerar, eliminar).
- ✅ Pods : Realiza operaciones específicas de Pod.
- Enumere los pods en todos los espacios de nombres o en un espacio de nombres específico.
- Obtener un pod por nombre del espacio de nombres especificado.
- Eliminar un pod por nombre del espacio de nombres especificado.
- Mostrar registros de un pod por nombre desde el espacio de nombres especificado.
- Ejecútelo en un pod y ejecute un comando.
- Ejecute una imagen de contenedor en un pod y, opcionalmente, expóngala.
- ✅ Espacios de nombres : enumera los espacios de nombres de Kubernetes.
- ✅ Eventos : vea eventos de Kubernetes en todos los espacios de nombres o en un espacio de nombres específico.
- ✅ Proyectos : Lista de proyectos de OpenShift.
- ☸️ Yelmo :
- Instalar un gráfico Helm en el espacio de nombres actual o proporcionado.
- Enumere las versiones de Helm en todos los espacios de nombres o en un espacio de nombres específico.
- Desinstalar una versión de Helm en el espacio de nombres actual o proporcionado.
A diferencia de otras implementaciones de servidor MCP de Kubernetes, esta NO es simplemente una envoltura para las herramientas de línea de comandos kubectl
o helm
. Es una implementación nativa basada en Go que interactúa directamente con el servidor de API de Kubernetes.
NO es necesario instalar dependencias ni herramientas externas en el sistema. Si usa los binarios nativos, no necesita tener instalado Node ni Python.
- ✅ Ligero : el servidor se distribuye como un único binario nativo para Linux, macOS y Windows.
- ✅ Alto rendimiento/baja latencia : interactúa directamente con el servidor API de Kubernetes sin la sobrecarga de llamar y esperar comandos externos.
- ✅ Multiplataforma : disponible como binario nativo para Linux, macOS y Windows, así como un paquete npm, un paquete Python y una imagen de contenedor/Docker.
- ✅ Configurable : admite argumentos de línea de comandos para configurar el comportamiento del servidor.
- ✅ Bien probado : el servidor tiene un amplio conjunto de pruebas para garantizar su confiabilidad y corrección en diferentes entornos de Kubernetes.
🚀 Primeros pasos
Requisitos
- Acceso a un clúster de Kubernetes.
Escritorio de Claude
Usando npx
Si tiene npm instalado, esta es la forma más rápida de comenzar a utilizar kubernetes-mcp-server
en Claude Desktop.
Abra su claude_desktop_config.json
y agregue el servidor mcp a la lista de mcpServers
:
VS Code / VS Code Insiders
Instale la extensión del servidor Kubernetes MCP en VS Code Insiders presionando el siguiente enlace:
Alternativamente, puede instalar la extensión manualmente ejecutando el siguiente comando:
Goose CLI
Goose CLI es la forma más sencilla (y económica) de comenzar a trabajar con agentes de inteligencia artificial (IA).
Usando npm
Si tiene npm instalado, esta es la forma más rápida de comenzar a utilizar kubernetes-mcp-server
.
Abra su goose config.yaml
y agregue el servidor mcp a la lista de mcpServers
:
🎥 Demos
Diagnóstico y reparación automática de una implementación de OpenShift
Demostración que muestra cómo Claude Desktop aprovecha el servidor Kubernetes MCP para diagnosticar y reparar automáticamente una implementación en OpenShift sin asistencia del usuario.
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
Vibe Codificación de un juego simple e implementación en OpenShift
En esta demostración, lo guiaré a través del proceso de codificación de un juego simple usando VS Code y cómo aprovechar el servidor MCP de Podman y el servidor MCP de Kubernetes para implementarlo en OpenShift.
Potencie GitHub Copilot con Kubernetes MCP Server en VS Code: ¡configuración con un solo clic!
En esta demostración, le mostraré cómo configurar el servidor Kubernetes MCP en VS Code simplemente haciendo clic en un enlace.
⚙️ Configuración
El servidor Kubernetes MCP se puede configurar mediante argumentos de la línea de comandos (CLI).
Puede ejecutar el ejecutable CLI utilizando npx
, uvx
o descargando el binario de la última versión .
Opciones de configuración
Opción | Descripción |
---|---|
--sse-port | Inicia el servidor MCP en modo de evento enviado por el servidor (SSE) y escucha en el puerto especificado. |
--log-level | Establece el nivel de registro (valores de 0 a 9 ). Similar a los niveles de registro de kubectl . |
--kubeconfig | Ruta al archivo de configuración de Kubernetes. Si no se proporciona, se intentará resolver la configuración (en el clúster, ubicación predeterminada, etc.). |
--read-only | Si se configura, el servidor MCP se ejecutará en modo de solo lectura, lo que significa que no permitirá ninguna operación de escritura (crear, actualizar, eliminar) en el clúster de Kubernetes. Esto resulta útil para depurar o inspeccionar el clúster sin realizar cambios. |
--disable-destructive | Si se configura, el servidor MCP deshabilitará todas las operaciones destructivas (eliminar, actualizar, etc.) en el clúster de Kubernetes. Esto resulta útil para depurar o inspeccionar el clúster sin realizar cambios accidentales. Esta opción no tiene efecto cuando se usa --read-only . |
🛠️ Herramientas
configuration_view
Obtenga el contenido de configuración actual de Kubernetes como un YAML de kubeconfig
Parámetros:
minified
(boolean
, opcional, predeterminado:true
)- Devuelve una versión minimizada de la configuración
- Si
true
, solo conserva el contexto actual y las partes de configuración relevantes - Si es
false
, devuelve todos los contextos, clústeres, información de autenticación y usuarios.
events_list
Enumere todos los eventos de Kubernetes en el clúster actual de todos los espacios de nombres
Parámetros:
namespace
(string
, opcional)- Espacio de nombres del que se recuperan los eventos. Si no se proporciona, se listarán los eventos de todos los espacios de nombres.
helm_install
Instalar un gráfico de Helm en el espacio de nombres actual o proporcionado con el nombre y el gráfico proporcionados
Parámetros:
chart
(string
, obligatorio)- Nombre del gráfico de Helm a instalar
- Puede ser una ruta local o una URL remota
- Ejemplo:
./my-chart.tgz
ohttps://example.com/my-chart.tgz
values
(object
, opcional)- Valores a pasar al gráfico de Helm
- Ejemplo:
{"key": "value"}
name
(string
, opcional)- Nombre de la versión de Helm
- Nombre aleatorio si no se proporciona
namespace
(string
, opcional)- Espacio de nombres para instalar el gráfico Helm
- Si no se proporciona, se utilizará el espacio de nombres configurado
helm_list
Enumere todas las versiones de Helm en el espacio de nombres actual o proporcionado (o en todos los espacios de nombres si se especifica)
Parámetros:
namespace
(string
, opcional)- Espacio de nombres para enumerar las versiones de Helm
- Si no se proporciona, se utilizará el espacio de nombres configurado
all_namespaces
(boolean
, opcional)- Si es
true
, se enumerarán las versiones de Helm de todos los espacios de nombres - Si es
false
, se enumerarán las versiones de Helm del espacio de nombres especificado
- Si es
helm_uninstall
Desinstalar una versión de Helm en el espacio de nombres actual o proporcionado con el nombre proporcionado
Parámetros:
name
(string
, requerido)- Nombre de la versión de Helm que se desinstalará
namespace
(string
, opcional)- Espacio de nombres para desinstalar la versión de Helm
- Si no se proporciona, se utilizará el espacio de nombres configurado
namespaces_list
Enumere todos los espacios de nombres de Kubernetes en el clúster actual
Parámetros: Ninguno
pods_delete
Eliminar un pod de Kubernetes en el espacio de nombres actual o proporcionado con el nombre proporcionado
Parámetros:
name
(string
, requerido)- Nombre del Pod a eliminar
namespace
(string
, obligatorio)- Espacio de nombres del cual eliminar el Pod
pods_exec
Ejecutar un comando en un pod de Kubernetes en el espacio de nombres actual o proporcionado con el nombre y comando proporcionados
Parámetros:
command
(string[]
, requerido)- Comando a ejecutar en el contenedor Pod
- El primer elemento es el comando, el resto son argumentos.
- Ejemplo:
["ls", "-l", "/tmp"]
name
(cadena, obligatorio)- Nombre del Pod
namespace
(cadena, obligatorio)- Espacio de nombres del Pod
container
(string
, opcional)- Nombre del contenedor Pod del que se obtendrán los registros
pods_get
Obtenga un pod de Kubernetes en el espacio de nombres actual o proporcionado con el nombre proporcionado
Parámetros:
name
(string
, requerido)- Nombre del Pod
namespace
(string
, obligatorio)- Espacio de nombres del que obtener el Pod
pods_list
Enumere todos los pods de Kubernetes en el clúster actual de todos los espacios de nombres
Parámetros:
labelSelector
(string
, opcional)- Selector de etiquetas de Kubernetes (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'). Use esta opción para filtrar los pods por etiqueta.
pods_list_in_namespace
Enumere todos los pods de Kubernetes en el espacio de nombres especificado en el clúster actual
Parámetros:
namespace
(string
, obligatorio)- Espacio de nombres para listar pods
labelSelector
(string
, opcional)- Selector de etiquetas de Kubernetes (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'). Use esta opción para filtrar los pods por etiqueta.
pods_log
Obtenga los registros de un pod de Kubernetes en el espacio de nombres actual o proporcionado con el nombre proporcionado
Parámetros:
name
(string
, requerido)- Nombre del pod del que se obtendrán los registros
namespace
(string
, obligatorio)- Espacio de nombres para obtener los registros del pod
container
(string
, opcional)- Nombre del contenedor Pod del que se obtendrán los registros
pods_run
Ejecute un pod de Kubernetes en el espacio de nombres actual o proporcionado con la imagen de contenedor proporcionada y el nombre opcional
Parámetros:
image
(string
, requerida)- Imagen de contenedor para ejecutar en el pod
namespace
(string
, obligatorio)- Espacio de nombres para ejecutar el Pod
name
(string
, opcional)- Nombre del Pod (nombre aleatorio si no se proporciona)
port
(number
, opcional)- Puerto TCP/IP para exponer desde el contenedor Pod
- No se expone ningún puerto si no se proporciona
projects_list
Enumere todos los proyectos de OpenShift en el clúster actual
resources_create_or_update
Cree o actualice un recurso de Kubernetes en el clúster actual proporcionando una representación YAML o JSON del recurso
Parámetros:
resource
(string
, obligatorio)- Un JSON o YAML que contiene una representación del recurso de Kubernetes
- Debe incluir campos de nivel superior como apiVersion, kind, metadata y spec
Las versiones y tipos de API más comunes incluyen:
- Cápsula v1
- Servicio v1
- Nodo v1
- Implementación de apps/v1
- networking.k8s.io/v1 Ingreso
resources_delete
Eliminar un recurso de Kubernetes en el clúster actual
Parámetros:
apiVersion
(string
, requerida)- apiVersion del recurso (por ejemplo,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion del recurso (por ejemplo,
kind
(string
, requerido)- tipo de recurso (por ejemplo,
Pod
,Service
,Deployment
,Ingress
)
- tipo de recurso (por ejemplo,
name
(string
, requerido)- Nombre del recurso
namespace
(string
, opcional)- Espacio de nombres del cual eliminar el recurso con espacio de nombres
- Ignorado para recursos con alcance de clúster
- Utiliza el espacio de nombres configurado si no se proporciona
resources_get
Obtener un recurso de Kubernetes en el clúster actual
Parámetros:
apiVersion
(string
, requerida)- apiVersion del recurso (por ejemplo,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion del recurso (por ejemplo,
kind
(string
, requerido)- tipo de recurso (por ejemplo,
Pod
,Service
,Deployment
,Ingress
)
- tipo de recurso (por ejemplo,
name
(string
, requerido)- Nombre del recurso
namespace
(string
, opcional)- Espacio de nombres del cual recuperar el recurso con espacio de nombres
- Ignorado para recursos con alcance de clúster
- Utiliza el espacio de nombres configurado si no se proporciona
resources_list
Enumerar los recursos y objetos de Kubernetes en el clúster actual
Parámetros:
apiVersion
(string
, requerida)- apiVersion de los recursos (por ejemplo,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion de los recursos (por ejemplo,
kind
(string
, requerido)- tipo de recursos (por ejemplo,
Pod
,Service
,Deployment
,Ingress
)
- tipo de recursos (por ejemplo,
namespace
(string
, opcional)- Espacio de nombres del cual recuperar los recursos con espacios de nombres
- Ignorado para recursos con alcance de clúster
- Enumera los recursos de todos los espacios de nombres si no se proporcionan
labelSelector
(string
, opcional)- Selector de etiquetas de Kubernetes (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'). Use esta opción para filtrar los pods por etiqueta.
🧑💻 Desarrollo
Ejecutando con mcp-inspector
Compile el proyecto y ejecute el servidor MCP de Kubernetes con mcp-inspector para inspeccionar el servidor MCP.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Una implementación potente y flexible de servidor MCP de Kubernetes compatible con OpenShift. No requiere herramientas CLI adicionales como kubectl o helm.
Related Resources
Related MCP Servers
- -securityAlicense-qualityThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.Last updated -279GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -487GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -115GoMIT License
- -securityAlicense-qualityOpen source MCP server specializing in easy, fast, and secure tools for Databases.Last updated -1,430GoApache 2.0