k8s-mcp-server
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: kubernetes-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:
git clone https://github.com/reza-gholizade/k8s-mcp-server.git
cd k8s-mcp-serverInstalar dependencias:
go mod downloadConstruir el servidor:
go build -o k8s-mcp-server main.goUso
Iniciando el servidor
Ejecutar el servidor:
./k8s-mcp-serverEl 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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getAPIResources",
"params": {
"arguments": {
"includeNamespaceScoped": true,
"includeClusterScoped": true
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "listResources",
"params": {
"arguments": {
"Kind": "Pod",
"namespace": "default",
"labelSelector": "app=nginx"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getResource",
"params": {
"arguments": {
"kind": "Pod",
"name": "nginx-pod",
"namespace": "default"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "describeResource",
"params": {
"arguments": {
"Kind": "Pod",
"name": "nginx-pod",
"namespace": "default"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getPodsLogs",
"params": {
"arguments": {
"Name": "my-app-pod-12345",
"namespace": "production"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getNodeMetrics",
"params": {
"arguments": {
"Name": "worker-node-1"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getPodMetrics",
"params": {
"arguments": {
"namespace": "default",
"podName": "my-app-pod-67890"
}
}
}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):
{
"jsonrpc": "2.0",
"id": 1,
"method": "getEvents",
"params": {
"arguments": {
"namespace": "default"
}
}
}Ejemplo (eventos de recursos):
{
"jsonrpc": "2.0",
"id": 1,
"method": "getEvents",
"params": {
"arguments": {
"namespace": "production",
"resourceName": "my-app-pod-12345",
"resourceKind": "Pod"
}
}
}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:
{
"jsonrpc": "2.0",
"id": 1,
"method": "createResource",
"params": {
"arguments": {
"namespace": "default",
"manifest": "apiVersion: v1\nkind: Pod\nmetadata:\n name: my-new-pod\nspec:\n containers:\n - name: nginx\n image: nginx:latest"
}
}
}Desarrollo
Estructura del proyecto
.
├── handlers/ # Tool handlers
│ └── handlers.go # Implementation of MCP tools
├── pkg/ # Internal packages
│ └── k8s/ # Kubernetes client implementation
├── main.go # Server entry point
├── go.mod # Go module definition
└── go.sum # Go module checksumsAgregar 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP Server for an Agent Task Marketplace
MCP server for Product Management
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.382MIT
- AlicenseNot gradedqualityAmaintenanceA powerful and flexible Kubernetes MCP server implementation with support for OpenShift.2,151GoApache 2.0
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with multiple Kubernetes clusters simultaneously, providing comprehensive tools for cluster management, resource operations, and diagnostics across different environments.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server for generating Kubernetes manifests (deployments, services, configmaps, secrets, ingresses, namespaces) and performing kubectl operations like apply, delete, get, describe, logs, and exec.MIT