k8s-mcp-server
Servidor MCP para Operaciones de K8s
Servicio MCP de operaciones de Kubernetes basado en FastMCP. Encapsula acciones de diagnóstico diario como kubectl get / describe / logs / events --watch en herramientas de solo lectura invocables por LLM, permitiendo que clientes como Claude lean directamente el estado del clúster y localicen fallos en el primer punto de incidencia.
⚠️ Este proyecto solo expone herramientas de solo lectura (sin create/update/delete). No obstante, se recomienda usar un ServiceAccount de solo lectura con RBAC, como se indica en «Recomendaciones de seguridad».
Lista de herramientas
Herramienta | Descripción | Equivalente en kubectl |
| Resumen de la lista de nodos |
|
| Detalle de un nodo |
|
| Resumen de solicitudes/límites de recursos del nodo y evaluación de sobrecarga |
|
| Escaneo de nodos con problemas (NotReady / varias Pressure) | — |
| Lista de Pods (admite filtro por namespace / label / field) |
|
| Detalle de un Pod (admite localización por label / workload / prefijo de nombre) |
|
| Lectura de logs de contenedores de un Pod |
|
| Consulta de eventos del clúster (deduplicación + ordenación) |
|
| Monitoreo en tiempo real del flujo de eventos |
|
| Monitoreo en tiempo real de cambios de estado de los nodos |
|
| Monitoreo en tiempo real de cambios de estado de los Pods |
|
Además, se incluyen dos capacidades adicionales: @mcp.prompt (guía para diagnóstico de nodos / inspección del clúster) y @mcp.resource (resumen del clúster k8s://cluster/summary).
Related MCP server: k8s-readonly-mcp
Estructura de directorios
├── app.py # FastMCP 实例(叶子模块,破循环导入)
├── k8s_server.py # 入口:导入 Tools 即自动注册全部工具
├── k8s_client.py # K8s 客户端懒加载 + 单一配置真源
├── config.py # 12-Factor 环境变量配置
├── prompts.py # @mcp.prompt 引导
├── resources.py # @mcp.resource 资源
├── Tools/ # 每个工具一个文件,导入即注册
├── utils/ # 纯解析/辅助模块(无 K8s/MCP 依赖)
└── tests/ # 单元测试Instalación y ejecución
# 1. 创建虚拟环境并安装依赖
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate
pip install -r requirements.txt
# 2. 运行(HTTP transport,默认 127.0.0.1:8081)
python k8s_server.pyEjecución de pruebas
pip install -r requirements-dev.txt
python -m pytest -qConfiguración
Toda la configuración se realiza mediante variables de entorno, con valores predeterminados (ver config.py):
Variable | Valor predeterminado | Descripción |
|
| Ruta explícita al kubeconfig; si se deja vacía, se sigue la cadena oficial de resolución ( |
|
| Si se verifica el certificado TLS; establecer |
|
| Nombre del servicio MCP |
|
| Transporte, |
|
| Dirección de escucha |
|
| Puerto de escucha |
Prioridad de carga de la conexión a K8s: in-cluster (dentro del Pod) → KUBECONFIG_PATH explícito → cadena oficial de resolución del kubeconfig, con una única fuente de verdad, sin ensamblar desde múltiples archivos.
Integración con clientes MCP
Tomando Claude Code como ejemplo (con transporte HTTP ya en ejecución en 127.0.0.1:8081):
{
"mcpServers": {
"k8s-node-server": {
"url": "http://127.0.0.1:8081/mcp"
}
}
}Recomendaciones de seguridad
Usar RBAC de solo lectura: configurar un ClusterRole de solo lectura para el Pod / usuario que ejecuta este servicio, evitando usar credenciales con privilegios elevados.
Vincular solo a la máquina local por defecto:
MCP_HOSTtiene como valor predeterminado127.0.0.1. Si se necesita exponer el servicio, asegurarse de añadir autenticación en la capa de proxy inverso (TLS + Token / OIDC), ya que el transporte HTTP en sí no tiene autenticación ni limitación de tasa.No desactivar la verificación de certificados:
K8S_VERIFY_SSL=falsese usa únicamente para depurar temporalmente certificados autofirmados; en producción mantenertrue.No almacenar credenciales en el repositorio: el kubeconfig contiene secretos;
.gitignoreya excluyekubeconfig*, no forzar su inclusión.
Limitaciones conocidas
Todas las herramientas son de solo lectura, sin operaciones de modificación (es una decisión de diseño deliberada).
La serie
watch_*está sujeta a un bloqueo global de concurrencia: solo se permite un watch a la vez, para evitar presión sobre el API Server.La salida de eventos/logs tiene un límite de longitud; los contenidos demasiado grandes se truncarán (ver la lógica de truncamiento en
read_pod_logymax_countenquery_events).
This server cannot be deployed
Maintenance
Related MCP Connectors
Provides read access to your GKE and Kubernetes resources.
The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides a set of read-only Kubernetes functions via an MCP server, enabling interaction with Kubernetes clusters through agents or coding assistants like GitHub Copilot.21406 PyPI3Apache 2.0
- AlicenseAqualityDmaintenanceA read-only MCP server for inspecting Kubernetes clusters, allowing LLMs to list resources, describe pods, and read logs without mutation.5MIT
- FlicenseNot gradedqualityCmaintenanceProvides a read-only interface to Kubernetes clusters, enabling LLMs to list pods, get pod status and logs, fetch deployment manifests, and perform pod health analysis with resource trend tracking.-
- AlicenseNot gradedqualityBmaintenanceEnables read-only Kubernetes cluster diagnostics through MCP tools, allowing a local LLM to inspect pods and events and debug issues via natural language queries.MIT