Skip to main content
Glama

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: Multi Cluster Kubernetes MCP Server

Prerrequisitos

  • Vaya a 1.20 o posterior

  • Acceso a un clúster de Kubernetes

  • kubectl configurado con acceso de clúster apropiado

Instalación

  1. Clonar el repositorio:

git clone https://github.com/reza-gholizade/k8s-mcp-server.git
cd k8s-mcp-server
  1. Instalar dependencias:

go mod download
  1. Construir el servidor:

go build -o k8s-mcp-server main.go

Uso

Iniciando el servidor

Ejecutar el servidor:

./k8s-mcp-server

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:

{
  "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 obtener

  • namespace (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 describir

  • namespace (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 proporciona resourceName .

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 checksums

Agregar nuevas herramientas

Para agregar una nueva herramienta:

  1. Cree una nueva función de definición de herramienta (por ejemplo, MyNewTool() mcp.Tool ) en handlers/handlers.go

  2. Implementar la función del controlador de herramientas (por ejemplo, MyNewHandler(client *k8s.Client) func(...) ) en handlers/handlers.go

  3. Registre la herramienta y su controlador en main.go usando s.AddTool()

Contribuyendo

¡Agradecemos sus contribuciones! Consulte CONTRIBUTING.md para obtener más información sobre cómo contribuir a este proyecto.

Licencia

gholizade.net@gmail.com

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
14hResponse time
5wRelease cycle
9Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Kubernetes clusters through natural language, supporting core Kubernetes operations, monitoring, security, and diagnostics.
    115
    947
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with multiple Kubernetes clusters simultaneously, providing comprehensive tools for cluster management, resource operations, and diagnostics across different environments.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server for Kubernetes that provides full resource coverage and advanced troubleshooting tools via HTTP chunked streaming. It enables users to manage clusters and diagnose complex issues like pod crashloops through specialized prompts and standard kubectl-like operations.
    12,374
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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

View all related MCP servers

Related MCP Connectors

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

  • A MCP server built for developers enabling Git based project management with project and personal…

  • MCP server for InsForge BaaS — database, storage, edge functions, and deployments

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reza-gholizade/k8s-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server