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: Multi Cluster 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 installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables AI assistants to interact with Kubernetes clusters through natural language, supporting core Kubernetes operations, monitoring, security, and diagnostics.115947MIT
- 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 gradedqualityDmaintenanceA 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,374MIT
- AlicenseNot gradedqualityCmaintenanceAn 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
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
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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