Servidor MCP de Kubernetes
Un servidor de Protocolo de contexto de modelo (MCP) de Kubernetes que proporciona herramientas para interactuar con clústeres de Kubernetes a través de una interfaz estandarizada.
Características
Descubrimiento de recursos de API : obtenga todos los recursos de API disponibles en su clúster de Kubernetes
Listado de recursos : enumera recursos de cualquier tipo con filtrado de etiquetas y espacios de nombres opcional
Detalles del recurso : obtenga información detallada sobre recursos específicos de Kubernetes
Descripción del recurso : Obtenga descripciones completas de los recursos de Kubernetes
Registros de pods : recupera registros de pods específicos
Métricas de nodo : obtenga métricas de uso de recursos para nodos específicos
Métricas de pod : obtenga métricas de CPU y memoria para pods específicos
Listado de eventos : enumera eventos dentro de un espacio de nombres o para un recurso específico.
Creación de recursos : crea nuevos recursos de Kubernetes a partir de un manifiesto.
Interfaz estandarizada : utiliza el protocolo MCP para una interacción consistente con las herramientas
Configuración flexible : admite diferentes contextos de Kubernetes y alcances de recursos
Related MCP server: MCP Server
Prerrequisitos
Vaya a 1.20 o posterior
Acceso a un clúster de Kubernetes
kubectlconfigurado con acceso de clúster apropiado
Instalación
Clonar el repositorio:
Instalar dependencias:
Construir el servidor:
Uso
Iniciando el servidor
Ejecutar el servidor:
El servidor se iniciará y escuchará en stdin/stdout los mensajes del protocolo MCP.
Herramientas disponibles
1. getAPIResources
Recupera todos los recursos de API disponibles en el clúster de Kubernetes.
Parámetros:
includeNamespaceScoped(booleano): si se deben incluir recursos con alcance de espacio de nombres (el valor predeterminado es verdadero)includeClusterScoped(booleano): si se deben incluir recursos con alcance de clúster (el valor predeterminado es verdadero)
Ejemplo:
2. listResources
Enumera todas las instancias de un tipo de recurso específico.
Parámetros:
Kind(cadena, obligatoria): el tipo de recurso a enumerar (por ejemplo, "Pod", "Implementación")namespace(cadena): el espacio de nombres del cual se listarán los recursos (si se omite, se listan todos los espacios de nombres para los recursos con espacios de nombres)labelSelector(cadena): Filtrar recursos por selector de etiquetas
Ejemplo:
3. getResource
Recupera información detallada sobre un recurso específico.
Parámetros:
kind(cadena, obligatorio): el tipo de recurso a obtener (por ejemplo, "Pod", "Implementación")name(cadena, obligatorio): el nombre del recurso a obtenernamespace(cadena): el espacio de nombres del recurso (si es un recurso con espacio de nombres)
Ejemplo:
4. describeResource
Describe un recurso en el clúster de Kubernetes según el tipo y nombre determinados, similar a kubectl describe .
Parámetros:
Kind(cadena, obligatoria): el tipo de recurso a describir (por ejemplo, "Pod", "Implementación")name(cadena, obligatoria): el nombre del recurso a describirnamespace(cadena): el espacio de nombres del recurso (si es un recurso con espacio de nombres)
Ejemplo:
5. getPodsLogs
Recupera los registros de un pod específico en el clúster de Kubernetes.
Parámetros:
Name(cadena, obligatoria): el nombre del pod del que se obtendrán los registros.namespace(cadena): el espacio de nombres del pod (si es un recurso con espacio de nombres).
Ejemplo:
6. getNodeMetrics
Recupera métricas de uso de recursos para un nodo específico en el clúster de Kubernetes.
Parámetros:
Name(cadena, obligatoria): el nombre del nodo del que se obtendrán las métricas.
Ejemplo:
7. getPodMetrics
Recupera métricas de CPU y memoria para un pod específico en el clúster de Kubernetes.
Parámetros:
namespace(cadena, obligatoria): el espacio de nombres del pod.podName(cadena, obligatoria): el nombre del pod.
Ejemplo:
8. getEvents
Recupera eventos para un espacio de nombres o recurso específico en el clúster de Kubernetes.
Parámetros:
namespace(cadena): El espacio de nombres del que se obtienen los eventos. Si se omite, se consideran los eventos de todos los espacios de nombres (si RBAC lo permite).resourceName(cadena): el nombre de un recurso específico (por ejemplo, un nombre de Pod) para filtrar eventos.resourceKind(cadena): el tipo de recurso específico (por ejemplo, "Pod") si se proporcionaresourceName.
Ejemplo (eventos de espacio de nombres):
Ejemplo (eventos de recursos):
9. createorUpdateResource
Crea un nuevo recurso en el clúster de Kubernetes a partir de un manifiesto YAML o JSON.
Parámetros:
manifest(cadena, obligatorio): el manifiesto YAML o JSON del recurso a crear.namespace(cadena, opcional): El espacio de nombres donde se creará el recurso. Si el manifiesto contiene un espacio de nombres, este parámetro puede omitirse o usarse para sobrescribirlo (el comportamiento puede depender de la implementación del servidor).
Ejemplo:
Desarrollo
Estructura del proyecto
Agregar nuevas herramientas
Para agregar una nueva herramienta:
Cree una nueva función de definición de herramienta (por ejemplo,
MyNewTool() mcp.Tool) enhandlers/handlers.goImplementar la función del controlador de herramientas (por ejemplo,
MyNewHandler(client *k8s.Client) func(...)) enhandlers/handlers.goRegistre la herramienta y su controlador en
main.gousandos.AddTool()
Contribuyendo
¡Agradecemos sus contribuciones! Consulte CONTRIBUTING.md para obtener más información sobre cómo contribuir a este proyecto.
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.