Kubernetes MCP Server

Un servidor MCP versátil para Kubernetes y OpenShift, distribuido como binario nativo, paquete npm/Python o imagen Docker.

Documentación

Kubernetes MCP Server

GitHub License npm PyPI - Version GitHub release (latest SemVer) Build

✨ Características | 🚀 Primeros Pasos | 🎥 Demostraciones | ⚙️ Configuración | 🛠️ Herramientas | 💬 Comunidad | 🧑‍💻 Desarrollo

https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e

✨ Características

Una implementación potente y flexible de un servidor de Kubernetes Model Context Protocol (MCP) con soporte para Kubernetes y OpenShift.

  • ✅ Configuración:
    • Detecta automáticamente los cambios en la configuración de Kubernetes y actualiza el servidor MCP.
    • Ver y gestionar el Kubernetes .kube/config actual o la configuración dentro del clúster.
  • ✅ Recursos Genéricos de Kubernetes: Realiza operaciones sobre cualquier recurso de Kubernetes u OpenShift.
    • Cualquier operación CRUD (Crear o Actualizar, Obtener, Listar, Eliminar).
  • ✅ Pods: Realiza operaciones específicas de Pods.
    • Listar pods en todos los namespaces o en un namespace específico.
    • Obtener un pod por nombre desde el namespace especificado.
    • Eliminar un pod por nombre desde el namespace especificado.
    • Mostrar logs de un pod por nombre desde el namespace especificado.
    • Top obtiene métricas de uso de recursos para todos los pods o un pod específico en el namespace especificado.
    • Exec dentro de un pod y ejecutar un comando.
    • Ejecutar una imagen de contenedor en un pod y opcionalmente exponerla.
  • ✅ Namespaces: Lista los Namespaces de Kubernetes.
  • ✅ Eventos: Ver eventos de Kubernetes en todos los namespaces o en un namespace específico.
  • ✅ Proyectos: Lista los Proyectos de OpenShift.
  • ☸️ Helm:
    • Instalar un chart de Helm en el namespace actual o proporcionado.
    • Listar releases de Helm en todos los namespaces o en un namespace específico.
    • Desinstalar un release de Helm en el namespace actual o proporcionado.
  • 🔧 Tekton: Operaciones específicas de Tekton que complementan la gestión genérica de recursos de Kubernetes.
    • Pipeline: Iniciar un Pipeline de Tekton creando un PipelineRun.
    • PipelineRun: Reiniciar, cancelar, solucionar problemas y recuperar logs de PipelineRun.
    • Task: Iniciar una Task de Tekton creando un TaskRun.
    • TaskRun: Reiniciar un TaskRun con la misma especificación y recuperar logs de TaskRun mediante la resolución de pods.
  • 🔭 Observabilidad: Trazado distribuido y métricas opcionales de OpenTelemetry con tasas de muestreo personalizadas. Incluye el endpoint /stats para estadísticas en tiempo real. Ver OTEL.md.

A diferencia de otras implementaciones de servidores MCP de Kubernetes, esto NO ES solo un envoltorio alrededor de las herramientas de línea de comandos kubectl o helm. Es una implementación nativa basada en Go que interactúa directamente con el servidor de la API de Kubernetes.

NO HAY NECESIDAD de dependencias externas o herramientas instaladas en el sistema. Si usas los binarios nativos, no necesitas tener Node o Python instalados en tu sistema.

  • ✅ Ligero: El servidor se distribuye como un único binario nativo para Linux, macOS y Windows.
  • ✅ Alto Rendimiento / Baja Latencia: Interactúa directamente con el servidor de la API de Kubernetes sin la sobrecarga de llamar y esperar comandos externos.
  • ✅ Multi-Clúster: Puede interactuar con múltiples clústeres de Kubernetes simultáneamente (según lo definido en tus archivos kubeconfig).
  • ✅ Multiplataforma: Disponible como binario nativo para Linux, macOS y Windows, así como paquete npm, paquete de Python e imagen de contenedor/Docker.
  • ✅ Configurable: Soporta argumentos de línea de comandos, archivos de configuración TOML y variables de entorno.
  • ✅ Bien probado: El servidor tiene un amplio conjunto de pruebas para garantizar su fiabilidad y corrección en diferentes entornos de Kubernetes.
  • 📚 Documentación: Documentación completa para usuarios que incluye guías de configuración, referencia de configuración y observabilidad.

🚀 Primeros Pasos

Requisitos

  • Acceso a un clúster de Kubernetes.
Claude Code

Sigue la guía dedicada de primeros pasos con Claude Code en nuestra documentación para usuarios.

Para una configuración segura de producción con una ServiceAccount dedicada y acceso de solo lectura, consulta también la guía de configuración de Kubernetes.

Claude Desktop

Usando npx

Si tienes npm instalado, esta es la forma más rápida de comenzar con kubernetes-mcp-server en Claude Desktop.

Abre tu claude_desktop_config.json y agrega el servidor mcp a la lista de mcpServers:

{
  "mcpServers": {
    "kubernetes": {
      "command": "npx",
      "args": ["-y", "kubernetes-mcp-server@latest"]
    }
  }
}

VS Code / VS Code Insiders

Instala la extensión del servidor Kubernetes MCP en VS Code Insiders presionando el siguiente enlace:

Install in VS Code Install in VS Code Insiders

Alternativamente, puedes instalar la extensión manualmente ejecutando el siguiente comando:

# For VS Code
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'

Cursor

Instala la extensión del servidor Kubernetes MCP en Cursor presionando el siguiente enlace:

Install MCP Server

Alternativamente, puedes instalar la extensión manualmente editando el archivo mcp.json:

{
  "mcpServers": {
    "kubernetes-mcp-server": {
      "command": "npx",
      "args": ["-y", "kubernetes-mcp-server@latest"]
    }
  }
}

Goose CLI

Goose CLI es la forma más fácil (y económica) de comenzar con agentes de inteligencia artificial (IA).

Usando npm

Si tienes npm instalado, esta es la forma más rápida de comenzar con kubernetes-mcp-server.

Abre tu goose config.yaml y agrega el servidor mcp a la lista de mcpServers:

extensions:
  kubernetes:
    command: npx
    args:
      - -y
      - kubernetes-mcp-server@latest

🎥 Demostraciones

Diagnosticando y corrigiendo automáticamente un Deployment de OpenShift

Demostración que muestra cómo el servidor Kubernetes MCP es aprovechado por Claude Desktop para diagnosticar y corregir automáticamente un deployment en OpenShift sin asistencia del usuario.

https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941

Vibe Coding de un juego simple y su despliegue en OpenShift

En esta demostración, te guío a través del proceso de Vibe Coding de un juego simple usando VS Code y cómo aprovechar Podman MCP server y el servidor Kubernetes MCP para desplegarlo en OpenShift.

Vibe Coding: Build & Deploy a Game on Kubernetes

Potencia GitHub Copilot con Kubernetes MCP Server en VS Code - ¡Configuración en un clic!

En esta demostración, te mostraré cómo configurar el servidor Kubernetes MCP en VS Code simplemente haciendo clic en un enlace.

Supercharge GitHub Copilot with Kubernetes MCP Server in VS Code - One-Click Setup!

⚙️ Configuración

El servidor Kubernetes MCP se puede configurar usando argumentos de línea de comandos (CLI).

Puedes ejecutar el ejecutable CLI usando npx, uvx, o descargando el binario de la última versión.

# Run the Kubernetes MCP server using npx (in case you have npm and node installed)
npx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using uvx (in case you have uv and python installed)
uvx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using the latest release binary
./kubernetes-mcp-server --help

Opciones de Configuración

OpciónDescripción
--versionImprime información de versión y sale.
--configRuta al archivo de configuración TOML principal. Ver Referencia de Configuración para todas las opciones (puerto, toolsets, read_only, kubeconfig, …).
--config-dirDirectorio de archivos .toml léxicos. Usable solo o con --config. Omitido significa sin drop-ins. Las rutas relativas se resuelven contra el directorio de trabajo.

Nota: La configuración en tiempo de ejecución es TOML (o nombres de entorno existentes), no banderas CLI. Ver Cambios de Configuración para el mapeo de bandera a TOML.

Archivos de Configuración TOML

Para configuraciones complejas o persistentes, usa archivos de configuración TOML en lugar de argumentos CLI:

kubernetes-mcp-server --config /etc/kubernetes-mcp-server/config.toml

Ejemplo de configuración:

log_level = 2
read_only = true
toolsets = ["core", "config", "helm", "kubevirt"]

# Deny access to sensitive resources
[[denied_resources]]
group = ""
version = "v1"
kind = "Secret"

[telemetry]
endpoint = "http://localhost:4317"

Para documentación completa de configuración TOML, incluyendo:

  • Todas las opciones de configuración y sus valores predeterminados
  • Archivos de configuración drop-in para ajustes modulares
  • Recarga dinámica de configuración mediante SIGHUP
  • Recursos denegados para restringir el acceso a tipos de recursos sensibles
  • Instrucciones del servidor para la Búsqueda de Herramientas MCP
  • Prompts MCP personalizados
  • Autenticación OAuth/OIDC para modo HTTP (Keycloak, Microsoft Entra ID)

Consulta la Referencia de Configuración.

📊 Registro MCP

El servidor soporta la capacidad de registro MCP, permitiendo a los clientes recibir información de depuración a través de mensajes de registro estructurados. Los errores de la API de Kubernetes se categorizan automáticamente y se registran para los clientes con niveles de severidad apropiados. Los datos sensibles (tokens, claves, contraseñas, credenciales de nube) se redactan automáticamente antes de enviarse a los clientes.

Consulta la Guía de Registro MCP.

🛠️ Herramientas y Funcionalidades

El servidor Kubernetes MCP soporta habilitar o deshabilitar grupos específicos de herramientas y funcionalidades (herramientas, recursos, prompts, etc.) mediante la opción de configuración toolsets. Esto te permite controlar qué funcionalidades de Kubernetes están disponibles para tus herramientas de IA. Habilitar solo los toolsets que necesitas puede ayudar a reducir el tamaño del contexto y mejorar la precisión de selección de herramientas del LLM.

Proyectos Validados del Ecosistema Kubernetes

Los siguientes proyectos del ecosistema CNCF y Kubernetes están cubiertos por escenarios de evaluación automatizados en evals/tasks. La mayoría de los escenarios funcionan solo con el toolset core. Los toolsets dedicados a continuación son opcionales y solo se necesitan para los escenarios específicos del proyecto indicados.

ProyectoToolset(s) opcional(es)Escenarios de evaluación
Helmhelm3
Istiokiali5
Kialikiali16
Kubernetes-32
KubeVirtkubevirt, tekton27
NetObservnetobserv4
Tektontekton9

Toolsets Disponibles

Los siguientes conjuntos de herramientas están disponibles (los toolsets marcados con ✓ en la columna Predeterminado están habilitados por defecto):

ToolsetDescripciónPredeterminado
configVer y gestionar la configuración local actual de Kubernetes (kubeconfig)✓
coreHerramientas más comunes para la gestión de Kubernetes (Pods, Recursos Genéricos, Eventos, etc.)✓
helmHerramientas para gestionar charts y releases de Helm
kcpGestionar workspaces de kcp y características de multi-tenencia
kialiHerramientas más comunes para gestionar Kiali, consulta la documentación de Kiali para más detalles.
kubevirtHerramientas de gestión de máquinas virtuales KubeVirt, consulta la documentación de KubeVirt para más detalles.
netobservHerramientas de observabilidad de red respaldadas por la API del plugin de consola NetObserv (flujos, métricas, exportación). Consulta la documentación de NetObserv para más detalles.
observability/logsConjunto de herramientas para consultar logs de Loki
observability/metricsConjunto de herramientas para consultar endpoints de Prometheus y Alertmanager de manera eficiente.
observability/otelcolConjunto de herramientas para asistencia en la configuración del OpenTelemetry Collector, incluyendo validación de esquemas, documentación de componentes y gestión de versiones.
observability/tracesHerramientas de trazado distribuido para descubrir instancias de Tempo, buscar y recuperar trazas, y explorar atributos de trazas.
tektonHerramientas de gestión de pipelines Tekton para Pipelines, PipelineRuns, Tasks, TaskRuns y solución de problemas.

Herramientas

En caso de que el soporte multi-clúster esté habilitado (predeterminado) y tengas acceso a múltiples clústeres, todas las herramientas aplicables incluirán un argumento adicional context para especificar el contexto de Kubernetes (clúster) a utilizar para esa operación.

config
  • configuration_contexts_list - Lista todos los nombres de contexto disponibles y las URLs de servidor asociadas del archivo kubeconfig

  • targets_list - Lista todos los objetivos disponibles

  • configuration_view - Obtiene el contenido actual de la configuración de Kubernetes como un kubeconfig YAML

    • minified (boolean) - Devuelve una versión minificada de la configuración. Si se establece en true, conserva solo el contexto actual y las partes relevantes de la configuración para ese contexto. Si se establece en false, se devuelven todos los contextos, clústeres, auth-infos y usuarios en la configuración. (Opcional, predeterminado true)
core
  • events_list - Lista eventos de Kubernetes (advertencias, errores, cambios de estado) para depuración y solución de problemas en el clúster actual de todos los namespaces

    • fieldSelector (string) - Selector de campo de Kubernetes opcional para filtrar eventos por valores de campo (p. ej., 'type=Warning', 'involvedObject.name=my-pod'). Campos admitidos: involvedObject.kind, involvedObject.name, involvedObject.namespace, involvedObject.uid, involvedObject.apiVersion, involvedObject.resourceVersion, involvedObject.fieldPath, reason, reportingComponent, source, type. Ver https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • namespace (string) - Namespace opcional para recuperar los eventos. Si no se proporciona, se listarán eventos de todos los namespaces
  • namespaces_list - Lista todos los namespaces de Kubernetes en el clúster actual

  • projects_list - Lista todos los proyectos de OpenShift en el clúster actual

  • nodes_log - Obtiene logs de un nodo de Kubernetes (kubelet, kube-proxy u otros logs del sistema). Esto accede a los logs del nodo a través del proxy de la API de Kubernetes hacia el kubelet

    • name (string) (obligatorio) - Nombre del nodo del cual obtener logs
    • query (string) (obligatorio) - query especifica servicios o archivos de los cuales devolver logs (obligatorio). Ejemplo: "kubelet" para obtener logs de kubelet, "/" para obtener un archivo de log específico del nodo (p. ej., "/var/log/kubelet.log" o "/var/log/kube-proxy.log")
    • tailLines (integer) - Número de líneas a recuperar desde el final de los logs (Opcional, 0 significa todos los logs)
  • nodes_stats_summary - Obtiene estadísticas detalladas de uso de recursos de un nodo de Kubernetes a través de la API Summary del kubelet. Proporciona métricas completas que incluyen uso de CPU, memoria, sistema de archivos y red a nivel de nodo, pod y contenedor. En sistemas con cgroup v2 y kernel 4.20+, también incluye métricas PSI (Pressure Stall Information) que muestran la presión de recursos para CPU, memoria y E/S. Ver https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/ para detalles sobre métricas PSI

    • name (string) (obligatorio) - Nombre del nodo del cual obtener estadísticas
  • nodes_top - Lista el consumo de recursos (CPU y memoria) registrado por el Kubernetes Metrics Server para los nodos de Kubernetes especificados o todos los nodos del clúster

    • label_selector (string) - Selector de etiquetas de Kubernetes (p. ej., 'node-role.kubernetes.io/worker=') para filtrar nodos por etiqueta (Opcional, solo aplicable cuando no se proporciona el nombre)
    • name (string) - Nombre del nodo del cual obtener el consumo de recursos (Opcional, todos los nodos si no se proporciona)
  • pods_list - Lista todos los pods de Kubernetes en el clúster actual de todos los namespaces

    • fieldSelector (string) - Selector de campo de Kubernetes opcional para filtrar pods por valores de campo (p. ej., 'status.phase=Running', 'spec.nodeName=node1'). Campos admitidos: metadata.name, metadata.namespace, spec.nodeName, spec.restartPolicy, spec.schedulerName, spec.serviceAccountName, status.phase (Pending/Running/Succeeded/Failed/Unknown), status.podIP, status.nominatedNodeName. Nota: CrashLoopBackOff es un estado de contenedor, no una fase de pod, por lo que no se puede filtrar directamente. Ver https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • labelSelector (string) - Selector de etiquetas de Kubernetes opcional (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'), usa esta opción cuando quieras filtrar los pods por etiqueta
  • pods_list_in_namespace - Lista todos los pods de Kubernetes en el namespace especificado en el clúster actual

    • fieldSelector (string) - Selector de campo de Kubernetes opcional para filtrar pods por valores de campo (p. ej., 'status.phase=Running', 'spec.nodeName=node1'). Campos admitidos: metadata.name, metadata.namespace, spec.nodeName, spec.restartPolicy, spec.schedulerName, spec.serviceAccountName, status.phase (Pending/Running/Succeeded/Failed/Unknown), status.podIP, status.nominatedNodeName. Nota: CrashLoopBackOff es un estado de contenedor, no una fase de pod, por lo que no se puede filtrar directamente. Ver https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • labelSelector (string) - Selector de etiquetas de Kubernetes opcional (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'), usa esta opción cuando quieras filtrar los pods por etiqueta
    • namespace (string) (obligatorio) - Namespace del cual listar pods
  • pods_get - Obtiene un Pod de Kubernetes en el namespace actual o proporcionado con el nombre proporcionado

    • name (string) (obligatorio) - Nombre del Pod
    • namespace (string) - Namespace del cual obtener el Pod
  • pods_delete - Elimina un Pod de Kubernetes en el namespace actual o proporcionado con el nombre proporcionado

    • name (string) (obligatorio) - Nombre del Pod a eliminar
    • namespace (string) - Namespace del cual eliminar el Pod
  • pods_top - Lista el consumo de recursos (CPU y memoria) registrado por el Kubernetes Metrics Server para los Pods de Kubernetes especificados en todos los namespaces, el namespace proporcionado o el namespace actual

    • all_namespaces (boolean) - Si es true, lista el consumo de recursos para todos los Pods en todos los namespaces. Si es false, lista el consumo de recursos para los Pods en el namespace proporcionado o el namespace actual
    • label_selector (string) - Selector de etiquetas de Kubernetes (p. ej., 'app=myapp,env=prod' o 'app in (myapp,yourapp)'), usa esta opción cuando quieras filtrar los pods por etiqueta (Opcional, solo aplicable cuando no se proporciona el nombre)
    • name (string) - Nombre del Pod del cual obtener el consumo de recursos (Opcional, todos los Pods en el namespace si no se proporciona)
    • namespace (string) - Namespace del cual obtener el consumo de recursos de los Pods (Opcional, namespace actual si no se proporciona y all_namespaces es false)
  • pods_exec - Ejecuta un comando en un Pod de Kubernetes (acceso a shell, ejecutar comandos en el contenedor) en el namespace actual o proporcionado con el nombre y comando proporcionados

    • command (array) (obligatorio) - Comando a ejecutar en el contenedor del Pod. El primer elemento es el comando a ejecutar, y el resto son los argumentos de ese comando. Ejemplo: ["ls", "-l", "/tmp"]
    • container (string) - Nombre del contenedor del Pod donde se ejecutará el comando (Opcional)
    • name (string) (obligatorio) - Nombre del Pod donde se ejecutará el comando
    • namespace (string) - Namespace del Pod donde se ejecutará el comando
  • pods_log - Obtiene los logs de un Pod de Kubernetes en el namespace actual o proporcionado con el nombre proporcionado

    • container (string) - Nombre del contenedor del Pod del cual obtener logs (Opcional)
    • name (string) (obligatorio) - Nombre del Pod del cual obtener logs
    • namespace (string) - Namespace del cual obtener los logs del Pod
    • previous (boolean) - Devuelve logs de contenedores terminados anteriormente (Opcional)
    • tail (integer) - Número de líneas a recuperar desde el final de los logs (Opcional, predeterminado: 100)
  • pods_run - Ejecuta un Pod de Kubernetes en el namespace actual o proporcionado con la imagen de contenedor proporcionada y un nombre opcional

    • image (string) (obligatorio) - Imagen del contenedor para ejecutar en el Pod
    • name (string) - Nombre del Pod (opcional, nombre aleatorio si no se proporciona)
    • namespace (string) - Namespace donde ejecutar el Pod
    • port (number) - Puerto TCP/IP para exponer desde el contenedor del Pod (opcional, no se expone ningún puerto si no se proporciona)
  • resources_list - Lista los recursos y objetos de Kubernetes en el clúster actual proporcionando su apiVersion y kind, y opcionalmente el namespace y el selector de etiquetas (los apiVersion y kind comunes incluyen: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obligatorio) - apiVersion de los recursos (ejemplos de apiVersion válidos son: v1, apps/v1, networking.k8s.io/v1)
    • fieldSelector (string) - Selector de campo de Kubernetes opcional para filtrar recursos por valores de campo (p. ej. 'status.phase=Running', 'metadata.name=myresource'). Los campos admitidos varían según el tipo de recurso. Para Pods: metadata.name, metadata.namespace, spec.nodeName, spec.restartPolicy, spec.schedulerName, spec.serviceAccountName, status.phase (Pending/Running/Succeeded/Failed/Unknown), status.podIP, status.nominatedNodeName. Ver https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • kind (string) (obligatorio) - kind de los recursos (ejemplos de kind válidos son: Pod, Service, Deployment, Ingress)
    • labelSelector (string) - Selector de etiquetas de Kubernetes opcional (p. ej. 'app=myapp,env=prod' o 'app in (myapp,yourapp)'), use esta opción cuando desee filtrar los recursos por etiqueta
    • namespace (string) - Namespace opcional para recuperar los recursos con espacio de nombres (se ignora en caso de recursos de ámbito de clúster). Si no se proporciona, se listarán los recursos de todos los namespaces
  • resources_get - Obtiene un recurso de Kubernetes en el clúster actual proporcionando su apiVersion, kind, opcionalmente el namespace, y su nombre (los apiVersion y kind comunes incluyen: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obligatorio) - apiVersion del recurso (ejemplos de apiVersion válidos son: v1, apps/v1, networking.k8s.io/v1)
    • kind (string) (obligatorio) - kind del recurso (ejemplos de kind válidos son: Pod, Service, Deployment, Ingress)
    • name (string) (obligatorio) - Nombre del recurso
    • namespace (string) - Namespace opcional para recuperar el recurso con espacio de nombres (se ignora en caso de recursos de ámbito de clúster). Si no se proporciona, se obtendrá el recurso del namespace configurado
  • resources_create_or_update - Crea o actualiza un recurso de Kubernetes mediante Server-Side Apply. El manifiesto es el estado deseado completo: cualquier campo que esta herramienta haya establecido previamente y que el nuevo manifiesto omita se elimina. Para editar un recurso existente, obténgalo con resources_get, modifíquelo y luego vuelva a aplicar el recurso completo. (los apiVersion y kind comunes incluyen: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • resource (string) (obligatorio) - Representación YAML o JSON completa del recurso de Kubernetes (estado deseado completo, no un parche parcial). Incluya apiVersion, kind, metadata y la especificación completa.
  • resources_delete - Elimina un recurso de Kubernetes en el clúster actual proporcionando su apiVersion, kind, opcionalmente el namespace, y su nombre (los apiVersion y kind comunes incluyen: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obligatorio) - apiVersion del recurso (ejemplos de apiVersion válidos son: v1, apps/v1, networking.k8s.io/v1)
    • gracePeriodSeconds (integer) - Duración opcional en segundos antes de que el objeto deba eliminarse. El valor debe ser un entero no negativo. El valor cero indica eliminación inmediata. Si este valor es nulo, se utilizará el período de gracia predeterminado para el tipo especificado
    • kind (string) (obligatorio) - kind del recurso (ejemplos de kind válidos son: Pod, Service, Deployment, Ingress)
    • name (string) (obligatorio) - Nombre del recurso
    • namespace (string) - Namespace opcional para eliminar el recurso con espacio de nombres (se ignora en caso de recursos de ámbito de clúster). Si no se proporciona, se eliminará el recurso del namespace configurado
  • resources_scale - Obtiene o actualiza la escala de un recurso de Kubernetes en el clúster actual proporcionando su apiVersion, kind, nombre y opcionalmente el namespace. Si la escala se establece en la llamada a la herramienta, la escala se actualizará a ese valor. Siempre devuelve la escala actual del recurso

    • apiVersion (string) (obligatorio) - apiVersion del recurso (ejemplos de apiVersion válidos son apps/v1)
    • kind (string) (obligatorio) - kind del recurso (ejemplos de kind válidos son: StatefulSet, Deployment)
    • name (string) (obligatorio) - Nombre del recurso
    • namespace (string) - Namespace opcional para obtener/actualizar la escala del recurso con espacio de nombres (se ignora en caso de recursos de ámbito de clúster). Si no se proporciona, se obtendrá/actualizará la escala del recurso del namespace configurado
    • scale (integer) - Escala opcional para actualizar la escala del recurso. Si no se proporciona, se devolverá la escala actual del recurso y no se actualizará
helm
  • helm_install - Instala (despliega) un chart de Helm para crear un release en el namespace actual o proporcionado

    • chart (string) (obligatorio) - Referencia del chart para instalar (por ejemplo: stable/grafana, oci://ghcr.io/nginxinc/charts/nginx-ingress)
    • name (string) - Nombre del release de Helm (opcional, nombre aleatorio si no se proporciona)
    • namespace (string) - Namespace donde instalar el chart de Helm (opcional, namespace actual si no se proporciona)
    • values (object) - Valores para pasar al chart de Helm (opcional)
  • helm_list - Lista todos los releases de Helm en el namespace actual o proporcionado (o en todos los namespaces si se especifica)

    • all_namespaces (boolean) - Si es verdadero, lista todos los releases de Helm en todos los namespaces ignorando el argumento de namespace (opcional)
    • namespace (string) - Namespace para listar los releases de Helm (opcional, todos los namespaces si no se proporciona)
  • helm_uninstall - Desinstala un release de Helm en el namespace actual o proporcionado

    • name (string) (obligatorio) - Nombre del release de Helm para desinstalar
    • namespace (string) - Namespace desde el cual desinstalar el release de Helm (opcional, namespace actual si no se proporciona)
kcp
  • kcp_workspaces_list - Lista todos los workspaces kcp disponibles en el clúster actual

  • kcp_workspace_describe - Obtiene información detallada sobre un workspace kcp específico

    • workspace (string) (obligatorio) - Nombre o ruta del workspace para describir
kiali
  • kiali_get_mesh_traffic_graph - Devuelve la topología de tráfico servicio a servicio, dependencias y métricas de red (rendimiento, tiempo de respuesta, mTLS) para los namespaces especificados. Use esto para diagnosticar problemas de enrutamiento, latencia o encontrar dependencias ascendentes/descendentes.

    • graphType (string) - Granularidad del gráfico. 'app' agrega por nombre de aplicación, 'versionedApp' separa por versiones, 'workload' mapea pods/deployments específicos. Predeterminado: versionedApp.
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (p. ej. west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespaces (string) (obligatorio) - Lista separada por comas de namespaces para mapear
  • kiali_get_mesh_status - Recupera los detalles de salud, topología y entorno de alto nivel de la malla de servicios Istio. Devuelve el estado del plano de control multinúcleo (istiod), la salud de los namespaces del plano de datos (incluido el estado de la malla ambiental), la salud de la pila de observabilidad (Prometheus, Grafana...) y la conectividad de los componentes. Use esta herramienta como primer paso para diagnosticar problemas en toda la malla, verificar versiones de Istio/Kiali o comprobar la salud general antes de profundizar en cargas de trabajo específicas.

  • kiali_manage_istio_config_read - Lee la configuración de Istio, Gateway API e Inference API. 'list' agrupa por namespace→'group/version/kind'→{valid:[...],invalid:[...]} donde los arreglos valid/invalid contienen nombres de recursos; omita group/kind para recuperar TODOS los tipos de configuración en una sola llamada. Admite Istio (networking.istio.io, security.istio.io), Gateway API (gateway.networking.k8s.io) e Inference API (inference.networking.k8s.io) cuando están instalados. 'get' devuelve el YAML completo. Para escrituras use manage_istio_config.

    • action (string) (obligatorio) - Acción a realizar (solo lectura)
    • group (string) - Grupo de API del objeto Istio. Requerido SOLO para la acción 'get'. Para 'list', OMITA group y kind para recuperar TODOS los tipos de configuración en una sola llamada. Use 'gateway.networking.k8s.io' para recursos de Gateway API. Use 'inference.networking.k8s.io' para recursos de Inference API.
    • kind (string) - Kind del objeto Istio. Requerido SOLO para la acción 'get'. Para 'list', OMÍTALO para devolver todos los kinds a la vez — no llame por separado para cada kind.
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (p. ej. west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespace (string) - Namespace que contiene el objeto Istio. Para 'list', si no se proporciona, devuelve objetos de todos los namespaces. Para 'get', es obligatorio.
    • object (string) - Nombre del objeto Istio. Requerido para la acción 'get'.
    • serviceName (string) - Filtra las configuraciones de Istio (VirtualServices, DestinationRules y sus Gateways referenciados) que afectan a un servicio específico. Solo aplicable para la acción 'list'
    • version (string) - Versión de API. Use 'v1' para todos los tipos de recursos. Requerido para la acción 'get'.
  • kiali_manage_istio_config - Crear, parchear o eliminar configuración de Istio, Gateway API e Inference API. Admite recursos de Istio (networking.istio.io, security.istio.io), recursos de Gateway API (gateway.networking.k8s.io) y recursos de Inference API (inference.networking.k8s.io) cuando están instalados en el clúster. Para listar y obtener (solo lectura), use manage_istio_config_read.

    • action (string) (obligatorio) - Acción a realizar (escritura)
    • data (string) - Datos JSON o YAML para el recurso. Obligatorio para acciones de crear y parchear. Para crear, puede proporcionar contenido parcial (por ejemplo, solo spec) y se fusionará con una plantilla válida con valores predeterminados. Los arreglos (como servers, http, etc.) se REEMPLAZAN por completo, así que incluya TODOS los elementos que desee.
    • group (string) (obligatorio) - Grupo de API del objeto Istio. Use 'gateway.networking.k8s.io' para recursos de Gateway API. Use 'inference.networking.k8s.io' para recursos de Inference API.
    • kind (string) (obligatorio) - Tipo del objeto Istio (por ejemplo, 'VirtualService', 'DestinationRule').
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespace (string) (obligatorio) - Namespace que contiene el objeto Istio.
    • object (string) (obligatorio) - Nombre del objeto Istio.
    • version (string) (obligatorio) - Versión de API. Use 'v1' para todos los tipos de recursos.
  • kiali_list_mesh_clusters - Devuelve la lista de clústeres de malla Istio a los que Kiali puede acceder. Cada entrada incluye su nombre y si es el clúster local (donde está desplegado Kiali). Llame a esta herramienta antes de usar meshCluster en otras herramientas de Kiali cuando el clúster de destino sea desconocido.

  • kiali_get_resource_details - Obtiene una lista de recursos O recupera datos detallados de un recurso específico. Si se omite 'resourceName', devuelve una lista. Si se proporciona 'resourceName', devuelve detalles de ese recurso específico.

    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespaces (string) - Lista separada por comas de namespaces para consultar (por ejemplo, 'bookinfo' o 'bookinfo,default'). Si no se proporciona, consultará en todos los namespaces accesibles.
    • resourceName (string) - Opcional. El nombre específico del recurso. Si se deja vacío, la herramienta devuelve una lista de todos los recursos del tipo especificado. Si se proporciona, la herramienta devuelve detalles profundos de este recurso específico.
    • resourceType (string) (obligatorio) - El tipo de recurso a consultar. Use 'app' para aplicaciones de Kiali (agrupadas por la etiqueta 'app' de Kubernetes). Use 'argoapp' para CRDs de aplicaciones ArgoCD (requiere ArgoCD instalado y la cuenta de servicio de Kiali debe tener permisos de lectura en applications.argoproj.io).
  • kiali_list_traces - Lista trazas distribuidas para un servicio en un namespace. Devuelve un resumen (namespace, service, total_found, avg_duration_ms) y una lista de trazas con id, duration_ms, spans_count, root_op, slowest_service, has_errors. Use get_trace_details con un id de traza para obtener la jerarquía completa.

    • errorOnly (boolean) - Si es true, solo considera trazas que contengan errores. Por defecto false.
    • limit (integer) - Número máximo de trazas a devolver. Por defecto 10.
    • lookbackSeconds (integer) - Cuánto tiempo hacia atrás buscar. Por defecto 600 (10m).
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespace (string) (obligatorio) - Namespace de Kubernetes del servicio.
    • serviceName (string) (obligatorio) - Nombre del servicio para buscar trazas (obligatorio). Devuelve múltiples trazas hasta el límite.
  • kiali_get_trace_details - Obtiene una sola traza distribuida por trace_id y devuelve su jerarquía de llamadas (árbol de servicios con duración, estado y llamadas anidadas). Use esto después de list_traces para profundizar en una traza específica.

    • traceId (string) (obligatorio) - ID de traza para obtener y resumir. Si se proporciona, namespace/service_name se ignoran.
  • kiali_get_pod_performance - Devuelve un resumen de texto legible con el uso actual de CPU/memoria del Pod (de Prometheus) comparado con los requests/limits de Kubernetes (de la especificación del Pod). Útil para responder preguntas como '¿Está esta carga de trabajo usando demasiada memoria?'

    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespace (string) (obligatorio) - Namespace de Kubernetes del Pod.
    • podName (string) - Nombre del Pod de Kubernetes. Si se proporciona workloadName, la herramienta intentará resolver un Pod de esa carga de trabajo primero.
    • queryTime (string) - Marca de tiempo final opcional (RFC3339) para la consulta. Por defecto es ahora.
    • timeRange (string) - Ventana de tiempo usada para calcular la tasa de CPU (duración de Prometheus como '5m', '10m', '1h', '1d'). Por defecto '10m'.
    • workloadName (string) - Nombre de la carga de trabajo de Kubernetes (por ejemplo, Deployment/StatefulSet/etc). La herramienta buscará la carga de trabajo y elegirá uno de sus Pods. Si no se encuentra, tratará este valor como un podName.
  • kiali_get_logs - Obtiene los logs de un Pod de Kubernetes (o nombre de carga de trabajo que se resolverá a un pod) en un namespace. La salida es texto plano, coincidiendo con kubernetes-mcp-server pods_log. El campo line_count indica el número total de líneas de log devueltas. Analice TODAS ellas, pero resuma los resultados a menos que el usuario pida explícitamente la salida sin procesar. No omita ninguna línea de error o advertencia.

    • container (string) - Opcional. Nombre del contenedor del Pod del que obtener los logs.
    • format (string) - Formato de salida para el chat. 'codeblock' envuelve los logs en cercas ~~~ (recomendado). 'plain' devuelve texto sin procesar como kubernetes-mcp-server pods_log.
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • name (string) (obligatorio) - Nombre del Pod del que obtener los logs. Si no existe, se tratará como un nombre de carga de trabajo y se seleccionará un pod en ejecución.
    • namespace (string) (obligatorio) - Namespace del que obtener los logs del Pod
    • previous (boolean) - Opcional. Devuelve logs de contenedores terminados anteriormente
    • severity (string) - Filtro de severidad opcional aplicado en el lado del cliente. Acepta 'ERROR', 'WARN' o combinaciones como 'ERROR,WARN'.
    • tail (integer) - Número de líneas a recuperar desde el final de los logs (Opcional, por defecto 50). No puede exceder 200 líneas.
    • workload (string) - Opcional. Anulación del nombre de la carga de trabajo (usado cuando falla la búsqueda por nombre).
  • kiali_get_metrics - Devuelve un resumen JSON compacto de métricas de Istio (cuantiles de latencia, tendencias de tráfico, rendimiento, tamaños de payload) para el recurso dado.

    • byLabels (string) - Lista separada por comas de etiquetas para agrupar métricas (por ejemplo, 'source_workload,destination_service'). Opcional
    • direction (string) - Dirección del tráfico. Opcional, por defecto 'outbound'
    • meshCluster (string) - Nombre opcional del clúster de malla Istio de kiali_list_mesh_clusters (por ejemplo, west). Cuando se omite, Kiali usa su clúster local por defecto.
    • namespace (string) (obligatorio) - Namespace del que obtener métricas
    • quantiles (string) - Lista separada por comas de cuantiles para métricas de histograma (por ejemplo, '0.5,0.95,0.99'). Opcional
    • rateInterval (string) - Intervalo de tasa para métricas (por ejemplo, '1m', '5m'). Opcional, por defecto '10m'
    • reporter (string) - Reportero(s) de métricas. Lista separada por comas de: 'source', 'destination', 'waypoint', o el valor especial 'both' (sin filtro de reportero). Opcional, por defecto 'source'. Ejemplo: 'source,waypoint'
    • requestProtocol (string) - Filtrar por protocolo de solicitud (por ejemplo, 'http', 'grpc', 'tcp'). Opcional
    • resourceName (string) (obligatorio) - Nombre del recurso del que obtener métricas
    • resourceType (string) (obligatorio) - Tipo de recurso del que obtener métricas
    • step (string) - Paso entre puntos de datos en segundos (por ejemplo, '15'). Opcional, por defecto 15 segundos
kubevirt
  • vm_clone - Clonar una VirtualMachine en KubeVirt creando un recurso VirtualMachineClone. Esto crea una copia de la VM de origen con un nuevo nombre usando la API de clonación de KubeVirt

    • name (string) (obligatorio) - El nombre de la máquina virtual de origen a clonar
    • namespace (string) (obligatorio) - El namespace de la máquina virtual de origen
    • targetName (string) (obligatorio) - El nombre para la nueva máquina virtual clonada
  • vm_console_screenshot - Capturar una captura de pantalla de la consola gráfica (VNC) de una VirtualMachine en KubeVirt como imagen PNG. Use esto para ver lo que se muestra actualmente en la pantalla de la VM (por ejemplo, firmware, un cargador de arranque o un prompt de inicio de sesión). Solo lectura: nunca envía entrada al invitado.

    • name (string) (obligatorio) - El nombre de la máquina virtual
    • namespace (string) (obligatorio) - El namespace de la máquina virtual
  • vm_create - Crea una VirtualMachine en KubeVirt con la configuración especificada, resolviendo automáticamente tipos de instancia, preferencias e imágenes de disco contenedor. La VM se creará en estado Halted por defecto; usa el parámetro autostart para iniciarla inmediatamente.

    • autostart (boolean) - Indicador opcional para iniciar automáticamente la VM después de su creación (establece runStrategy en Always en lugar de Halted). El valor predeterminado es false.
    • instancetype (string) - Nombre opcional del tipo de instancia para la VM (p. ej., 'u1.small', 'u1.medium', 'u1.large')
    • name (string) (obligatorio) - El nombre de la máquina virtual
    • namespace (string) (obligatorio) - El namespace de la máquina virtual
    • networks (array) - Interfaces de red secundarias opcionales para adjuntar a la VM. Cada elemento especifica una Multus NetworkAttachmentDefinition para adjuntar. Acepta cadenas simples (nombres de NetworkAttachmentDefinition) u objetos con propiedades 'name' (nombre de la interfaz en la VM) y 'networkName' (nombre de la NetworkAttachmentDefinition). Cada red crea una interfaz bridge en la VM.
    • performance (string) - Sugerencia opcional de familia de rendimiento para el tipo de instancia de la VM (p. ej., 'u1' para propósito general, 'o1' para sobrecomprometido, 'c1' para optimizado en cómputo, 'm1' para optimizado en memoria). El valor predeterminado es 'u1' (propósito general) si no se especifica.
    • preference (string) - Nombre opcional de preferencia para la VM
    • size (string) - Sugerencia opcional de tamaño de carga de trabajo para la VM (p. ej., 'small', 'medium', 'large', 'xlarge'). Se usa para seleccionar automáticamente un tipo de instancia apropiado si no se especifica explícitamente.
    • storage (string) - Tamaño de almacenamiento opcional para el disco raíz de la VM al usar DataSources (p. ej., '30Gi', '50Gi', '100Gi'). El valor predeterminado es 30Gi. Se ignora al usar discos contenedor.
    • workload (string) - La carga de trabajo para la VM. Acepta nombres de sistemas operativos (p. ej., 'fedora' (predeterminado), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap') o URLs completas de imágenes de disco contenedor
  • vm_guest_info - Obtiene información del sistema operativo invitado desde el agente invitado QEMU de una VirtualMachine. Requiere que el agente invitado esté instalado y ejecutándose dentro de la VM. Proporciona información detallada sobre el sistema operativo, sistemas de archivos, interfaces de red y usuarios conectados.

    • info_type (string) - Tipo de información a recuperar: 'all' (predeterminado: toda la información disponible), 'os' (detalles del sistema operativo), 'filesystem' (información de disco y sistemas de archivos), 'users' (usuarios conectados), 'network' (interfaces de red e IPs)
    • name (string) (obligatorio) - El nombre de la máquina virtual
    • namespace (string) (obligatorio) - El namespace de la máquina virtual
  • vm_lifecycle - Gestiona el ciclo de vida de la VirtualMachine de KubeVirt: iniciar, detener, reiniciar, pausar o reanudar una VM

    • action (string) (obligatorio) - La acción de ciclo de vida a realizar: 'start' (cambia runStrategy a Always), 'stop' (cambia runStrategy a Halted), 'restart' (detiene y luego inicia la VM), 'pause' (suspende la VMI en ejecución en su lugar) o 'unpause' (reanuda una VMI pausada)
    • name (string) (obligatorio) - El nombre de la máquina virtual
    • namespace (string) (obligatorio) - El namespace de la máquina virtual
  • vm_create_from_template - Crea una VirtualMachine a partir de una VirtualMachineTemplate (virt-template) en KubeVirt. Procesa la plantilla en el servidor para sustituir parámetros (valores obligatorios, valores predeterminados y valores generados automáticamente como contraseñas), y luego crea la VirtualMachine resultante en el mismo namespace. No se admite el uso de plantillas entre namespaces.

    • namespace (string) (obligatorio) - El namespace de la VirtualMachineTemplate y de la VirtualMachine resultante (deben ser el mismo)
    • parameters (object) - Valores de parámetros para sustituir en la plantilla. Las claves son nombres de parámetros (p. ej., VM_NAME), los valores son cadenas. Los parámetros obligatorios deben proporcionarse; los parámetros opcionales usan sus valores predeterminados si se omiten; los parámetros con generate/from se generarán automáticamente si no se proporcionan.
    • template_name (string) (obligatorio) - El nombre de la VirtualMachineTemplate desde la cual crear la VM
  • vm_troubleshoot - Diagnostica problemas de la VirtualMachine de KubeVirt con detección automatizada de causa raíz. Recopila el estado de la VM, el estado de la VMI, volúmenes, estado de DataVolume/PVC, configuración de cloud-init, estado del pod, registros y eventos, y luego ejecuta comprobaciones heurísticas para identificar problemas específicos y sugerir correcciones. Devuelve una sección 'Detected Issues' con hallazgos CRITICAL/WARNING y pasos de remediación accionables, seguida de datos de diagnóstico sin procesar. Usa esta herramienta PRIMERO siempre que un usuario pregunte por qué una VM no se inicia, está atascada en Provisioning, en crashloop, falla al migrar o muestra comportamiento inesperado. Detecta automáticamente: StorageClasses faltantes, especificaciones de PVC inválidas, comandos peligrosos de cloud-init (shutdown/halt), bloqueadores de migración por nodeSelector, migraciones fallidas y crashloops de pods. Si el usuario pide corregir o remediar el problema, usa las Suggested Fixes del informe con vm_lifecycle (restart) o resources_create_or_update.

    • name (string) (obligatorio) - El nombre de la VirtualMachine a diagnosticar
    • namespace (string) (obligatorio) - El namespace de la VirtualMachine a diagnosticar
netobserv
  • netobserv_list_flows - Lista los registros de flujo de red NetObserv desde Loki. Úsalo al investigar tráfico entre cargas de trabajo, IPs, puertos o protocolos en un namespace o ventana de tiempo.
    • endTime (integer) - Fin del rango de tiempo como segundos de época Unix. El valor predeterminado es ahora.
    • filters (string) - Expresión de filtro de NetObserv pasada al plugin de consola (texto plano; el cliente la codifica en URL).

Sintaxis:

  • key=value — coincidencia exacta; key=a,b — OR de múltiples valores para la misma clave
  • key~pattern — coincidencia por regex / contiene; key!~pattern — NO regex
  • key!=value — no igual; key>number — numérico mayor o igual (p. ej., Bytes>1000)
  • AND dentro de un grupo: & (p. ej., SrcK8S_Namespace=default&Proto=6)
  • OR entre grupos: | (p. ej., SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefiere el parámetro dedicado "namespace" para el alcance por namespace cuando sea posible. Usa las herramientas de listado de Kubernetes (namespaces, pods, deployments, etc.) para descubrir valores de filtro.

Campos comunes de Kubernetes (los prefijos Src/Dst se reflejan entre sí):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (p. ej., Pod, Service, Node)
  • SrcK8S_OwnerName, DstK8S_OwnerName, SrcK8S_OwnerType, DstK8S_OwnerType (para Deployment, StatefulSet, etc.)
  • SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone, K8S_ClusterName, UDN

Red y flujo:

  • SrcAddr, DstAddr (IPs), SrcPort, DstPort, Proto (número IANA, p. ej., 6=TCP, 17=UDP)
  • FlowDirection (0=Ingress, 1=Egress, 2=Inner), Bytes, Packets, Dscp, Flags

Pérdida de paquetes (a menudo con recordType flowLog y packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Ejemplos:

  • SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app

  • Proto=6&DstPort=443

  • SrcK8S_Name=pod-a|SrcK8S_Name=pod-b

    • limit (integer) - Número máximo de registros de flujo a devolver. El valor predeterminado es 100.
    • namespace (string) - Restringe los resultados a flujos donde el namespace de origen o destino coincida (tenant de Loki con alcance de desarrollo).
    • packetLoss (string) - Filtro de pérdida de paquetes.
    • recordType (string) - Filtro de tipo de registro de flujo.
    • startTime (integer) - Inicio del rango de tiempo como segundos de época Unix. Anula timeRange cuando se establece.
    • timeRange (integer) - Ventana de retroceso en segundos cuando se omite startTime. El valor predeterminado es 300.
  • netobserv_export_flows - Exporta registros de flujo de NetObserv como CSV con los mismos filtros que list_flows. Úsalo cuando el usuario necesite datos de flujo descargables para auditorías o análisis sin conexión.

    • columns (string) - Nombres de columnas opcionales separados por comas para incluir (p. ej., SrcK8S_Namespace,DstK8S_Namespace,Bytes). Omítelo para exportar todas las columnas presentes en el resultado.
    • endTime (integer) - Fin del rango de tiempo como segundos de época Unix. El valor predeterminado es ahora.
    • filters (string) - Expresión de filtro de NetObserv pasada al plugin de consola (texto plano; el cliente la codifica en URL).

Sintaxis:

  • key=value — coincidencia exacta; key=a,b — OR de múltiples valores para la misma clave
  • key~pattern — coincidencia por regex / contiene; key!~pattern — NO regex
  • key!=value — no igual; key>number — numérico mayor o igual (p. ej., Bytes>1000)
  • AND dentro de un grupo: & (p. ej., SrcK8S_Namespace=default&Proto=6)
  • OR entre grupos: | (p. ej., SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefiere el parámetro dedicado "namespace" para el alcance por namespace cuando sea posible. Usa las herramientas de listado de Kubernetes (namespaces, pods, deployments, etc.) para descubrir valores de filtro.

Campos comunes de Kubernetes (los prefijos Src/Dst se reflejan entre sí):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (p. ej., Pod, Service, Node)
  • SrcK8S_OwnerName, DstK8S_OwnerName, SrcK8S_OwnerType, DstK8S_OwnerType (para Deployment, StatefulSet, etc.)
  • SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone, K8S_ClusterName, UDN

Red y flujo:

  • SrcAddr, DstAddr (IPs), SrcPort, DstPort, Proto (número IANA, p. ej., 6=TCP, 17=UDP)
  • FlowDirection (0=Ingress, 1=Egress, 2=Inner), Bytes, Packets, Dscp, Flags

Pérdida de paquetes (a menudo con recordType flowLog y packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Ejemplos:

  • SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app

  • Proto=6&DstPort=443

  • SrcK8S_Name=pod-a|SrcK8S_Name=pod-b

    • format (string) - Formato de exportación. Solo se admite csv.
    • limit (integer) - Número máximo de registros de flujo a devolver. El valor predeterminado es 100.
    • namespace (string) - Restringe los resultados a flujos donde el namespace de origen o destino coincida (tenant de Loki con alcance de desarrollo).
    • packetLoss (string) - Filtro de pérdida de paquetes.
    • recordType (string) - Filtro de tipo de registro de flujo.
    • startTime (integer) - Inicio del rango de tiempo como segundos de época Unix. Anula timeRange cuando se establece.
    • timeRange (integer) - Ventana de retroceso en segundos cuando se omite startTime. El valor predeterminado es 300.
  • netobserv_get_flow_metrics - Devuelve métricas de flujo de NetObserv agregadas como datos de topología o series temporales. Úsalo para rendimiento, desgloses de TLS/DNS/pérdidas y análisis de tráfico por namespace o carga de trabajo; consulta aggregateBy y groups para opciones de agrupación.

    • aggregateBy (string) (obligatorio) - Dimensión principal para netobserv_get_flow_metrics (plugin de consola /api/flow/metrics).

Dos formas (usa la ortografía exacta):

  1. Ámbitos de topología — agregan endpoints para vistas de grafo/topología:
  • app — cargas de trabajo de aplicación (pods/services), excluyendo tráfico de infraestructura
  • namespace — namespace de Kubernetes (predeterminado)
  • owner — controlador propietario (Deployment, StatefulSet, …)
  • resource — pod, service o node (granularidad de carga de trabajo más fina)
  • host — nombre del nodo
  • zone — zona de disponibilidad
  • cluster — nombre del clúster (multi-clúster)
  • network — nombre de red definida por el usuario / secundaria
  1. Campos de registro de flujo — agrupa por un único atributo de flujo (nombre de campo en PascalCase). Úsalo para gráficos de desglose (TLS, DNS, pérdidas, protocolo). Los nombres de campo coinciden con los filtros / registros de flujo.

TLS (requiere seguimiento de TLS en el FlowCollector):

  • TLSVersion, TLSCipherSuite, TLSGroup, TLSTypes

DNS:

  • DnsName, DnsFlagsResponseCode, DnsErrno

Caídas de paquetes:

  • PktDropLatestState, PktDropLatestDropCause

Red / K8s (desglose de un solo lado; combinar con filtros para src/dst):

  • Proto, SrcPort, DstPort, FlowDirection, Dscp
  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type, SrcK8S_OwnerName, DstK8S_OwnerName
  • SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone
  • K8S_ClusterName, SrcK8S_NetworkName, DstK8S_NetworkName

Combina aggregateBy con type y function:

  • Throughput: type=Bytes o Packets, function=rate
  • Conteo de flujos: type=Flows, function=count o rate
  • Volumen de DNS: type=DnsFlows, function=count
  • Latencia de DNS: type=DnsLatencyMs, function=avg, p90 o max
  • RTT: type=TimeFlowRttNs, function=avg, min o p90
  • Caídas: type=PktDropPackets o PktDropBytes, function=rate

Ejemplos:

  • aggregateBy=namespace, type=Bytes, function=rate
  • aggregateBy=TLSVersion, type=Bytes, function=rate, filters=TLSTypes!~""
  • aggregateBy=TLSGroup, type=Flows, function=count
  • aggregateBy=DnsFlagsResponseCode, type=DnsFlows, function=count
  • aggregateBy=PktDropLatestState, type=PktDropPackets, function=rate, packetLoss=dropped
  • aggregateBy=resource, type=Bytes, function=rate, namespace=netobserv
    • dataSource (string) - Backend de métricas: auto (prefiere Prometheus, con respaldo a Loki), prom o loki.
    • endTime (integer) - Fin del rango de tiempo en segundos de época Unix. Por defecto, ahora.
    • filters (string) - Expresión de filtro de NetObserv pasada al plugin de consola (texto plano; el cliente la codifica en URL).

Sintaxis:

  • key=value — coincidencia exacta; key=a,b — OR de múltiples valores para la misma clave
  • key~pattern — coincidencia regex / contiene; key!~pattern — NOT regex
  • key!=value — no igual; key>number — numérico mayor o igual (p. ej., Bytes>1000)
  • AND dentro de un grupo: & (p. ej., SrcK8S_Namespace=default&Proto=6)
  • OR entre grupos: | (p. ej., SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefiere el parámetro dedicado "namespace" para el alcance por namespace cuando sea posible. Usa las herramientas de listado de Kubernetes (namespaces, pods, deployments, etc.) para descubrir valores de filtro.

Campos comunes de Kubernetes (los prefijos Src/Dst se reflejan entre sí):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (p. ej., Pod, Service, Node)
  • SrcK8S_OwnerName, DstK8S_OwnerName, SrcK8S_OwnerType, DstK8S_OwnerType (para Deployment, StatefulSet, etc.)
  • SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone, K8S_ClusterName, UDN

Red y flujo:

  • SrcAddr, DstAddr (IPs), SrcPort, DstPort, Proto (número IANA, p. ej., 6=TCP, 17=UDP)
  • FlowDirection (0=Ingress, 1=Egress, 2=Inner), Bytes, Packets, Dscp, Flags

Caídas de paquetes (a menudo con recordType flowLog y packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Ejemplos:

  • SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
  • Proto=6&DstPort=443
  • SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
    • function (string) - Función de agregación.
    • groups (string) - Alcances principales opcionales separados por comas cuando aggregateBy es un alcance de topología. Añade dimensiones de etiqueta adicionales (p. ej., desglosar resultados de namespace por clúster o zona). Se ignora o es menos útil cuando aggregateBy ya es un campo de flujo sin procesar (p. ej., TLSVersion); usa filtros en su lugar.

Alcances individuales:

  • clusters, networks, zones, hosts, namespaces, owners

Alcances combinados (usa +, sin espacios):

  • clusters+zones, clusters+hosts, clusters+namespaces, clusters+owners
  • zones+hosts, zones+namespaces, zones+owners
  • hosts+namespaces, hosts+owners
  • namespaces+owners
  • networks+zones, networks+hosts, networks+namespaces, networks+owners

Ejemplos:

  • aggregateBy=namespace, groups=clusters
  • aggregateBy=resource, groups=namespaces
  • aggregateBy=owner, groups=zones,hosts
    • limit (integer) - Número máximo de registros de flujo a devolver. Por defecto, 100.
    • namespace (string) - Restringe los resultados a flujos donde el namespace de origen o destino coincide (tenant de Loki con alcance de desarrollo).
    • packetLoss (string) - Filtro de pérdida de paquetes.
    • rateInterval (string) - Intervalo de tasa de Prometheus (p. ej., 1m, 5m).
    • recordType (string) - Filtro de tipo de registro de flujo.
    • startTime (integer) - Inicio del rango de tiempo en segundos de época Unix. Anula timeRange cuando se establece.
    • step (string) - Paso de resolución de consulta (p. ej., 30s, 1m).
    • timeRange (integer) - Ventana de retroceso en segundos cuando se omite startTime. Por defecto, 300.
    • type (string) - Tipo de métrica a agregar.
observability/logs
  • loki_list_instances - Lista las instancias de LokiStack disponibles en el clúster de Kubernetes. Llama a esto primero cuando uses stacks gestionados por Loki Operator para poder pasar lokiNamespace y lokiName a otras herramientas de Loki.

  • loki_label_names - Lista los nombres de etiquetas de Loki disponibles para un rango de tiempo. Usa esto antes de escribir consultas LogQL.

    • end (string) - Hora de fin como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
    • lokiName (string) - Nombre del LokiStack. Usa loki_list_instances para descubrir valores válidos.
    • lokiNamespace (string) - Namespace de Kubernetes del LokiStack. Usa loki_list_instances para descubrir valores válidos.
    • start (string) - Hora de inicio como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
    • tenant (string) - ID de tenant de Loki (X-Scope-OrgID). Para modos de puerta de enlace de LokiStack (p. ej., openshift-network) esto selecciona la ruta /api/logs/v1/<tenant>; usa network para openshift-network.
  • loki_label_values - Lista los valores posibles para una clave de etiqueta de Loki. Usa esto para construir coincidencias de etiquetas precisas en LogQL.

    • end (string) - Hora de fin como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
    • label (string) (obligatorio) - Clave de etiqueta a inspeccionar (por ejemplo, namespace, pod, container).
    • lokiName (string) - Nombre del LokiStack. Usa loki_list_instances para descubrir valores válidos.
    • lokiNamespace (string) - Namespace de Kubernetes del LokiStack. Usa loki_list_instances para descubrir valores válidos.
    • start (string) - Hora de inicio como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
    • tenant (string) - ID de tenant de Loki (X-Scope-OrgID). Para modos de puerta de enlace de LokiStack (p. ej., openshift-network) esto selecciona la ruta /api/logs/v1/<tenant>; usa network para openshift-network.
  • loki_query_range - Ejecuta una consulta de rango LogQL de Loki y devuelve los flujos y líneas de registro coincidentes.

Usa primero coincidencias de etiquetas precisas y una ventana de tiempo corta.

  • direction (string) - Dirección de búsqueda: backward (por defecto) o forward.
  • duration (string) - Duración de retroceso desde ahora cuando se omiten start/end (por ejemplo, 5m, 1h). Por defecto, 15m.
  • end (string) - Hora de fin como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
  • limit (integer) - Número máximo de líneas de registro a devolver. Por defecto, 100, máximo 1000.
  • lokiName (string) - Nombre del LokiStack. Usa loki_list_instances para descubrir valores válidos.
  • lokiNamespace (string) - Namespace de Kubernetes del LokiStack. Usa loki_list_instances para descubrir valores válidos.
  • query (string) (obligatorio) - Cadena de consulta LogQL.
  • start (string) - Hora de inicio como RFC3339, marca de tiempo Unix, NOW o expresión relativa a NOW (opcional).
  • tenant (string) - ID de tenant de Loki (X-Scope-OrgID). Para modos de puerta de enlace de LokiStack (p. ej., openshift-network) esto selecciona la ruta /api/logs/v1/<tenant>; usa network para openshift-network.
observability/metrics
  • list_metrics - PASO INICIAL OBLIGATORIO: Lista todos los nombres de métricas disponibles en Prometheus.

DEBES LLAMAR A ESTA HERRAMIENTA ANTES QUE CUALQUIER OTRA HERRAMIENTA DE CONSULTA

Esta herramienta DEBE llamarse primero para CADA pregunta de observabilidad para:

  1. Descubrir qué métricas existen realmente en este entorno
  2. Encontrar el nombre EXACTO de la métrica para usar en las consultas
  3. Evitar consultar métricas inexistentes
  4. El parámetro 'name_regex' siempre debe proporcionarse y ser una mejor suposición de cómo se llamaría la métrica.
  5. No uses un regex genérico como .* o .+ en el parámetro 'name_regex'. Usa específicos como kube., node., etc.

GUÍA DE PATRONES REGEX:

  • Las métricas de Prometheus suelen tener prefijos (p. ej., 'prometheus_tsdb_head_series', 'kube_pod_status_phase')
  • Para coincidir métricas que CONTIENEN una subcadena, usa comodines: '.tsdb.' coincide con 'prometheus_tsdb_head_series'
  • Sin comodines, el patrón coincide EXACTAMENTE: 'tsdb' solo coincide con una métrica literalmente llamada 'tsdb' (que rara vez existe)
  • Patrones comunes: 'kube_pod.' (pods), '.memory.' (relacionado con memoria), 'node_.' (métricas de nodo)
  • Si obtienes resultados vacíos, intenta añadir '.*' antes/después de tu término de búsqueda

NUNCA omitas este paso. NUNCA adivines nombres de métricas. Los nombres de métricas varían entre entornos.

Después de llamar a esta herramienta:

  1. Busca en la lista devuelta las métricas relevantes
  2. Usa el nombre EXACTO de la métrica encontrada en consultas posteriores
  3. Si no existe una métrica relevante, informa al usuario
  • name_regex (string) (obligatorio) - Patrón regex para filtrar nombres de métricas. IMPORTANTE: Los nombres de métricas suelen tener prefijos (p. ej., 'prometheus_tsdb_head_series'). Usa comodines para coincidir subcadenas: '.tsdb.' coincide con cualquier métrica que contenga 'tsdb', mientras que 'tsdb' solo coincide con la cadena exacta 'tsdb'. Ejemplos: 'http_.' (empieza con http_), '.memory.' (contiene memory), 'node_.' (empieza con node_). Este parámetro es obligatorio. No pases regex genéricos como '.*' o '.+'.

  • execute_instant_query - Ejecuta una consulta instantánea PromQL para obtener valores actuales/puntuales.

PRERREQUISITO: DEBES llamar a list_metrics primero para verificar que la métrica existe

CUÁNDO USAR:

  • Preguntas de estado actual: "¿Cuál es la tasa de error actual?"
  • Instantáneas puntuales: "¿Cuántos pods están en ejecución?"
  • Valores más recientes: "¿Qué pods están en estado Pending?"

El parámetro 'query' DEBE usar nombres de métricas devueltos por list_metrics.

  • query (string) (obligatorio) - Cadena de consulta PromQL usando nombres de métricas verificados mediante list_metrics

  • time (string) - Hora de evaluación como RFC3339 o marca de tiempo Unix. Omite o usa 'NOW' para la hora actual.

  • execute_range_query - Ejecuta una consulta de rango PromQL para obtener datos de series temporales durante un período.

PRERREQUISITO: DEBES llamar a list_metrics primero para verificar que la métrica existe

CUÁNDO USAR:

  • Tendencias a lo largo del tiempo: "¿Cuál fue el uso de CPU durante la última hora?"
  • Cálculos de tasa: "¿Cuántas solicitudes por segundo?"
  • Análisis histórico: "¿Hubo reinicios en los últimos 5 minutos?"

PARÁMETROS DE TIEMPO:

  • 'duration': Retroceso desde ahora (p. ej., "5m", "1h", "24h")

  • 'step': Resolución de puntos de datos (p. ej., "1m" para duración de 1 hora, "5m" para duración de 24 horas) El parámetro 'query' DEBE usar nombres de métricas que fueron devueltos por list_metrics.

    • duration (string) - Duración para mirar hacia atrás desde ahora (ej., '1h', '30m', '1d', '2w') (opcional)
    • end (string) - Tiempo final como RFC3339 o timestamp Unix (opcional). Use NOW para el tiempo actual.
    • query (string) (requerido) - Cadena de consulta PromQL usando nombres de métricas verificados a través de list_metrics
    • start (string) - Tiempo inicial como RFC3339 o timestamp Unix (opcional)
    • step (string) (requerido) - Ancho del paso de resolución de consulta (ej., '15s', '1m', '1h'). Elija según el rango de tiempo: rangos más cortos usan pasos más pequeños.
  • show_timeseries - Muestra los resultados como un gráfico de series temporales interactivo.

Esta herramienta funciona como execute_range_query pero renderiza los resultados como un gráfico visual en los clientes de UI. Úsela cuando el usuario quiera ver un gráfico o visualización de datos de series temporales y usar visuales para proporcionar la respuesta. Use show_timeseries como la última llamada de herramienta después de que todas las demás llamadas de herramientas de Prometheus estén finalizadas.

PARÁMETROS DE TIEMPO:

  • 'duration': Mirar hacia atrás desde ahora (ej., "5m", "1h", "24h")
  • 'step': Resolución de puntos de datos (ej., "1m" para duración de 1 hora, "5m" para duración de 24 horas)
  • 'title': Un título descriptivo del gráfico (ej., "Tasa de Errores de API en la Última Hora")
  • 'description': Una explicación del significado o contexto del gráfico (ej., "Muestra la tasa de errores HTTP 5xx por segundo, desglosada por pod")

El parámetro 'query' DEBE ser una consulta de rango y debe usar nombres de métricas que fueron devueltos por list_metrics.

  • description (string) - Explicación del significado o contexto del gráfico (ej., 'Muestra la tasa de errores HTTP 5xx por segundo, desglosada por pod'). Se muestra debajo del título cuando se proporciona.

  • duration (string) - Duración para mirar hacia atrás desde ahora (ej., '1h', '30m', '1d', '2w') (opcional)

  • end (string) - Tiempo final como RFC3339 o timestamp Unix (opcional). Use NOW para el tiempo actual.

  • query (string) (requerido) - Cadena de consulta PromQL usando nombres de métricas verificados a través de list_metrics

  • start (string) - Tiempo inicial como RFC3339 o timestamp Unix (opcional)

  • step (string) (requerido) - Ancho del paso de resolución de consulta (ej., '15s', '1m', '1h'). Elija según el rango de tiempo: rangos más cortos usan pasos más pequeños.

  • title (string) - Título legible del gráfico que describe lo que muestra la consulta (ej., 'Tasa de Errores de API en la Última Hora'). Se muestra encima del gráfico cuando se proporciona.

  • get_label_names - Obtener todos los nombres de etiquetas (dimensiones) disponibles para filtrar una métrica.

CUÁNDO USAR (después de llamar a list_metrics):

  • Para descubrir cómo filtrar métricas (por namespace, pod, servicio, etc.)
  • Antes de construir matchers de etiquetas en consultas PromQL

El parámetro 'metric' debe usar un nombre de métrica de la salida de list_metrics.

  • end (string) - Tiempo final para el descubrimiento de etiquetas como RFC3339 o timestamp Unix (opcional, por defecto ahora)

  • metric (string) - Nombre de la métrica (de list_metrics) para obtener nombres de etiquetas. Déjelo vacío para todas las métricas.

  • start (string) - Tiempo inicial para el descubrimiento de etiquetas como RFC3339 o timestamp Unix (opcional, por defecto hace 1 hora)

  • get_label_values - Obtener todos los valores únicos para una etiqueta específica.

CUÁNDO USAR (después de llamar a list_metrics y get_label_names):

  • Para encontrar valores exactos de etiquetas para filtrar (nombres de namespace, nombres de pod, etc.)
  • Para ver qué valores existen antes de construir consultas

El parámetro 'metric' debe usar un nombre de métrica de la salida de list_metrics.

  • end (string) - Tiempo final para el descubrimiento de valores de etiquetas como RFC3339 o timestamp Unix (opcional, por defecto ahora)

  • label (string) (requerido) - Nombre de la etiqueta (de get_label_names) para obtener valores

  • metric (string) - Nombre de la métrica (de list_metrics) para limitar los valores de etiquetas. Déjelo vacío para todas las métricas.

  • start (string) - Tiempo inicial para el descubrimiento de valores de etiquetas como RFC3339 o timestamp Unix (opcional, por defecto hace 1 hora)

  • get_series - Obtener series temporales que coincidan con selectores y previsualizar cardinalidad.

CUÁNDO USAR (opcional, después de llamar a list_metrics):

  • Para verificar que los filtros de etiquetas coincidan con las series esperadas antes de consultar
  • Para comprobar la cardinalidad y evitar consultas lentas

GUÍA DE CARDINALIDAD:

  • <100 series: Seguro
  • 100-1000: Generalmente bien
  • 1000: Agregue más filtros de etiquetas

El selector debe usar nombres de métricas de la salida de list_metrics.

  • end (string) - Tiempo final para el descubrimiento de series como RFC3339 o timestamp Unix (opcional, por defecto ahora)

  • matches (string) (requerido) - Selector de series PromQL usando nombres de métricas de list_metrics

  • start (string) - Tiempo inicial para el descubrimiento de series como RFC3339 o timestamp Unix (opcional, por defecto hace 1 hora)

  • get_alerts - Obtener alertas de Alertmanager.

CUÁNDO USAR:

  • EMPIECE AQUÍ al investigar problemas: si el usuario pregunta sobre cosas que se rompen, errores, fallos, interrupciones, servicios caídos, o cualquier cosa que vaya mal en el clúster
  • Cuando el usuario mencione un nombre de alerta específico - use esta herramienta para obtener las etiquetas completas de la alerta (namespace, pod, servicio, etc.) que son esenciales para una investigación adicional con otras herramientas
  • Para ver alertas actualmente activas en el clúster
  • Para comprobar qué alertas están activas, silenciadas o inhibidas
  • Para entender qué está sucediendo antes de profundizar en métricas o registros

CONSEJO DE INVESTIGACIÓN: Las etiquetas de alerta a menudo contienen los identificadores exactos (nombres de pod, namespaces, nombres de trabajo) necesarios para consultas dirigidas con herramientas de Prometheus.

FILTRADO:

  • Use 'active' para filtrar solo alertas activas (no resueltas)
  • Use 'silenced' para filtrar alertas silenciadas
  • Use 'inhibited' para filtrar alertas inhibidas
  • Use 'filter' para aplicar matchers de etiquetas (ej., "alertname=HighCPU")
  • Use 'receiver' para filtrar alertas por nombre de receptor

Todos los parámetros de filtro son opcionales. Sin filtros, se devuelven todas las alertas.

  • active (boolean) - Filtrar solo alertas activas (true/false, opcional)

  • filter (string) - Matchers de etiquetas para filtrar alertas (ej., 'alertname=HighCPU', opcional)

  • inhibited (boolean) - Filtrar solo alertas inhibidas (true/false, opcional)

  • receiver (string) - Nombre del receptor para filtrar alertas (opcional)

  • silenced (boolean) - Filtrar solo alertas silenciadas (true/false, opcional)

  • unprocessed (boolean) - Filtrar solo alertas no procesadas (true/false, opcional)

  • get_silences - Obtener silencios de Alertmanager.

CUÁNDO USAR:

  • Para ver qué alertas están actualmente silenciadas
  • Para comprobar silencios activos, pendientes o expirados
  • Para investigar por qué ciertas alertas no están enviando notificaciones

FILTRADO:

  • Use 'filter' para aplicar matchers de etiquetas para encontrar silencios específicos

Los silencios se usan para silenciar temporalmente alertas basadas en matchers de etiquetas. Esta herramienta le ayuda a entender qué está actualmente silenciado en su entorno.

  • filter (string) - Matchers de etiquetas para filtrar silencios (ej., 'alertname=HighCPU', opcional)
observability/otelcol
  • otelcol_list_components - Listar componentes disponibles del OpenTelemetry Collector (receptores, procesadores, exportadores, extensiones, conectores) para una versión dada.

    • version (string) - Versión del Collector (ej., 'v0.100.0'). Por defecto a la última disponible.
  • otelcol_get_component_schema - Obtener el esquema JSON para las opciones de configuración de un componente del OpenTelemetry Collector.

    • component_name (string) (requerido) - Nombre del componente de otelcol_list_components (ej., 'otlp', 'batch', 'debug')
    • component_type (string) (requerido) - Tipo de componente: receiver, processor, exporter, extension, connector
    • version (string) - Versión del Collector (ej., 'v0.100.0'). Por defecto a la última disponible.
  • otelcol_validate_config - Validar una configuración de componente del OpenTelemetry Collector contra su esquema JSON.

    • component_name (string) (requerido) - Nombre del componente de otelcol_list_components (ej., 'otlp', 'batch', 'debug')
    • component_type (string) (requerido) - Tipo de componente: receiver, processor, exporter, extension, connector
    • config (string) (requerido) - Configuración a validar como cadena YAML o JSON
    • format (string) - Formato de configuración: 'yaml' (por defecto) o 'json'
    • version (string) - Versión del Collector (ej., 'v0.100.0'). Por defecto a la última disponible.
  • otelcol_get_versions - Listar versiones disponibles del OpenTelemetry Collector e identificar la última.

observability/traces
  • tempo_list_instances - Listar todas las instancias de Tempo disponibles en el clúster de Kubernetes. Llame a esta herramienta primero para descubrir instancias de Tempo disponibles antes de usar otras herramientas de Tempo, ya que los valores de namespace, nombre y tenant devueltos son parámetros requeridos para todas las demás herramientas de Tempo. Siempre imprima la salida de esta herramienta en una tabla.

  • tempo_get_trace_by_id - Recuperar un único trace distribuido por su ID de trace de Tempo. Devuelve el trace completo con todos sus spans, incluyendo nombres de servicio, nombres de operación, duraciones y atributos. Use esta herramienta cuando ya tenga un ID de trace específico, ej., de resultados de búsqueda o registros.

    • end (string) - Fin opcional del rango de tiempo en formato RFC 3339, ej., "2025-01-02T00:00:00Z". Reduce el rango de tiempo para mejorar el rendimiento de la consulta.
    • start (string) - Inicio opcional del rango de tiempo en formato RFC 3339, ej., "2025-01-01T00:00:00Z". Reduce el rango de tiempo para mejorar el rendimiento de la consulta.
    • tempoName (string) (requerido) - El nombre de la instancia de Tempo a consultar. Use tempo_list_instances para descubrir nombres de instancias disponibles.
    • tempoNamespace (string) (requerido) - El namespace de Kubernetes donde está desplegada la instancia de Tempo. Use tempo_list_instances para descubrir namespaces disponibles.
    • tenant (string) - El tenant a consultar. Este parámetro es requerido para instancias multi-tenant. Use tempo_list_instances para descubrir tenants disponibles para cada instancia.
    • traceid (string) (requerido) - El ID de trace a recuperar, ej., "26dad4a0e2b0dd9a440dd5ff203a24a4".
  • tempo_search_traces - Buscar traces distribuidos en Tempo usando TraceQL. Use esta herramienta para encontrar traces que coincidan con criterios específicos como nombre de servicio, código de estado HTTP, duración, u otros atributos de span o recurso.

IMPORTANTE — Solicitudes de traces "lentos" o "largos": NO adivine un umbral de duración. Primero llame a esta herramienta SIN un filtro de duración para establecer una línea base de latencia, luego use esa línea base para establecer un umbral sensato. Ambos pasos son requeridos — NO omita la segunda búsqueda con el filtro de duración. Omita este proceso de dos pasos solo cuando el usuario proporcione una duración explícita (ej., "encontrar traces más lentos que 2s").

  • end (string) - Fin del rango de tiempo en formato RFC 3339, ej., "2025-01-01T00:00:00Z". Use "NOW" para el tiempo actual. Tanto el inicio como el fin deben proporcionarse para buscar en el rango de tiempo completo; si se omiten, solo se busca una pequeña ventana de datos recientes.
  • limit (integer) - Número máximo de traces a devolver. Por defecto al límite del lado del servidor si no se especifica.
  • query (string) (requerido) - Una expresión de consulta TraceQL. Formato: query: "{ <filters joined by &&> }" Filtros:
  • nombre del servicio: resource.service.name="" (cadena, use comillas)
  • código de estado HTTP: span.http.response.status_code= (número, sin comillas)
  • duración: duration><value like 100ms, 2s, 5m> (sin comillas)
  • estado de error: status=error (palabra clave, SIN comillas — NO escriba status="error")

IMPORTANTE: los valores de estado (error, ok, unset) son palabras clave, NO cadenas. Escriba status=error, NUNCA status="error".

Operadores: =, !=, >, <, >=, <=

Atributos comunes:

  • resource.service.name (nombre del servicio)
  • resource.k8s.namespace.name (namespace de Kubernetes)
  • resource.k8s.deployment.name (deployment de Kubernetes)
  • resource.k8s.statefulset.name (statefulset de Kubernetes)
  • resource.k8s.daemonset.name (daemonset de Kubernetes)
  • resource.k8s.replicaset.name (replicaset de Kubernetes)
  • resource.k8s.pod.name (pod de Kubernetes)
  • resource.k8s.container.name (contenedor de Kubernetes)
  • resource.k8s.job.name (job de Kubernetes)
  • resource.k8s.cronjob.name (cronjob de Kubernetes)
  • resource.k8s.node.name (nodo de Kubernetes)
  • resource.k8s.cluster.name (clúster de Kubernetes)
  • span.http.response.status_code (código de respuesta HTTP)
  • span.http.request.method (método HTTP como GET, POST)
  • span.url.full (URL de la solicitud)
  • name (nombre del span / nombre de la operación, p. ej. "GET /api/users")
  • duration (duración del trace, p. ej. 100ms, 2s)
  • status (estado del trace: ok, error, unset)

Nota: la instrumentación más antigua puede usar nombres de atributos HTTP heredados (p. ej. span.http.status_code en lugar de span.http.response.status_code). Si una consulta no devuelve resultados, pruebe con tempo_search_tags para verificar qué atributos existen.

IMPORTANTE:

  • Siempre envuelva los filtros entre llaves { }.
  • NO use sintaxis de SQL, PromQL o Lucene.
  • NO omita el prefijo "resource." o "span." de los nombres de atributos.
  • Cuando el usuario se refiera a un tipo de recurso de Kubernetes (deployment, pod, namespace, etc.), use el atributo resource.k8s.* correspondiente, NO resource.service.name.

Ejemplos:

  • { resource.service.name="frontend" }
  • { resource.k8s.deployment.name="checkout" && span.http.response.status_code>=500 }
  • { status=error && duration>2s }

Si no está seguro de qué atributos usar para filtrar, use tempo_search_tags para descubrir los atributos disponibles antes de construir una consulta.

  • spss (integer) - Número máximo de spans coincidentes a devolver por trace.

  • start (string) - Inicio del rango de tiempo en formato RFC 3339, p. ej. "2025-01-01T00:00:00Z". Use "NOW" para la hora actual. Se deben proporcionar tanto el inicio como el final para buscar en todo el rango de tiempo; si se omiten, solo se busca una pequeña ventana de datos recientes.

  • tempoName (string) (obligatorio) - El nombre de la instancia de Tempo a consultar. Use tempo_list_instances para descubrir los nombres de instancias disponibles.

  • tempoNamespace (string) (obligatorio) - El namespace de Kubernetes donde está desplegada la instancia de Tempo. Use tempo_list_instances para descubrir los namespaces disponibles.

  • tenant (string) - El tenant a consultar. Este parámetro es obligatorio para instancias multi-tenant. Use tempo_list_instances para descubrir los tenants disponibles para cada instancia.

  • tempo_search_tags - Lista los nombres de etiquetas disponibles (claves de atributos) en Tempo, agrupados por ámbito. Use esta herramienta para descubrir qué atributos están disponibles para construir consultas TraceQL con tempo_search_traces. Por ejemplo, esta herramienta puede revelar nombres de etiquetas como "service.name" (en el ámbito "resource") o "http.response.status_code" (en el ámbito "span"). Para usarlos en consultas TraceQL, prefíjelos con su ámbito, p. ej. "resource.service.name" o "span.http.response.status_code".

    • end (string) - Final opcional del rango de tiempo (en formato RFC 3339, p. ej. "2025-01-01T00:00:00Z") para filtrar qué traces se consideran al listar etiquetas.
    • limit (integer) - Número máximo de nombres de etiquetas a devolver por ámbito.
    • maxStaleValues (integer) - Número máximo de bloques consecutivos sin nuevos nombres de etiquetas antes de que la búsqueda se detenga antes de tiempo. Los valores más altos son más exhaustivos pero más lentos.
    • query (string) - Consulta TraceQL opcional para filtrar qué traces se consideran al listar etiquetas, p. ej. '{ resource.service.name="payment-service" }' para mostrar solo etiquetas presentes en traces del servicio 'payment-service'.
    • scope (string) - Filtra etiquetas a un ámbito específico. Uno de: "resource" (atributos a nivel de servicio como service.name), "span" (atributos de span individuales como http.response.status_code), "intrinsic" (campos integrados como duration, status, name). Si se omite, se devuelven etiquetas de todos los ámbitos.
    • start (string) - Inicio opcional del rango de tiempo (en formato RFC 3339, p. ej. "2025-01-01T00:00:00Z") para filtrar qué traces se consideran al listar etiquetas.
    • tempoName (string) (obligatorio) - El nombre de la instancia de Tempo a consultar. Use tempo_list_instances para descubrir los nombres de instancias disponibles.
    • tempoNamespace (string) (obligatorio) - El namespace de Kubernetes donde está desplegada la instancia de Tempo. Use tempo_list_instances para descubrir los namespaces disponibles.
    • tenant (string) - El tenant a consultar. Este parámetro es obligatorio para instancias multi-tenant. Use tempo_list_instances para descubrir los tenants disponibles para cada instancia.
  • tempo_search_tag_values - Lista los valores conocidos para una etiqueta específica (clave de atributo) en Tempo. Use esta herramienta para descubrir qué valores existen para una etiqueta dada, p. ej. para encontrar todos los nombres de servicios (valores de "resource.service.name") o todos los métodos HTTP (valores de "span.http.request.method"). Esto es útil para construir consultas TraceQL precisas con tempo_search_traces.

    • end (string) - Final opcional del rango de tiempo (en formato RFC 3339, p. ej. "2025-01-01T00:00:00Z") para filtrar qué traces se consideran al listar valores.
    • limit (integer) - Número máximo de valores de etiquetas a devolver.
    • maxStaleValues (integer) - Número máximo de bloques consecutivos sin nuevos valores antes de que la búsqueda se detenga antes de tiempo. Los valores más altos son más exhaustivos pero más lentos.
    • query (string) - Consulta TraceQL opcional para filtrar qué traces se consideran al listar valores, p. ej. '{ resource.service.name="payment-service" }' para mostrar solo valores de etiquetas del servicio 'payment-service'.
    • start (string) - Inicio opcional del rango de tiempo (en formato RFC 3339, p. ej. "2025-01-01T00:00:00Z") para filtrar qué traces se consideran al listar valores.
    • tag (string) (obligatorio) - El nombre de etiqueta completamente calificado para obtener valores, incluido su prefijo de ámbito, p. ej. "resource.service.name" o "span.http.response.status_code". Use tempo_search_tags para descubrir los nombres de etiquetas disponibles.
    • tempoName (string) (obligatorio) - El nombre de la instancia de Tempo a consultar. Use tempo_list_instances para descubrir los nombres de instancias disponibles.
    • tempoNamespace (string) (obligatorio) - El namespace de Kubernetes donde está desplegada la instancia de Tempo. Use tempo_list_instances para descubrir los namespaces disponibles.
    • tenant (string) - El tenant a consultar. Este parámetro es obligatorio para instancias multi-tenant. Use tempo_list_instances para descubrir los tenants disponibles para cada instancia.
tekton
  • tekton_pipeline_start - Inicia un Pipeline de Tekton creando un PipelineRun que lo referencia

    • name (string) (obligatorio) - Nombre del Pipeline a iniciar
    • namespace (string) - Namespace del Pipeline
    • params (object) - Valores de parámetros a pasar al Pipeline. Las claves son nombres de parámetros; los valores pueden ser una cadena, un array de cadenas o un objeto (mapa de cadena a cadena) dependiendo del tipo de parámetro definido en la especificación del Pipeline
  • tekton_pipelinerun_lifecycle - Gestiona el ciclo de vida de un PipelineRun de Tekton reiniciándolo con la misma especificación o cancelándolo estableciendo spec.status en Cancelled.

    • action (string) (obligatorio) - Acción de ciclo de vida a realizar: 'restart' crea un nuevo PipelineRun con la misma especificación; 'cancel' establece spec.status en Cancelled.
    • name (string) (obligatorio) - Nombre del PipelineRun a gestionar
    • namespace (string) - Namespace del PipelineRun
  • tekton_pipelinerun_logs - Obtiene los registros de todos los TaskRuns propiedad de un PipelineRun de Tekton. Use esto para inspeccionar la salida de ejecución del PipelineRun sin localizar pods manualmente.

    • name (string) (obligatorio) - Nombre del PipelineRun del que obtener registros
    • namespace (string) - Namespace del PipelineRun
    • step (string) - Nombre del paso a incluir dentro de los TaskRuns coincidentes
    • tail (integer) - Número de líneas a recuperar desde el final de cada registro de contenedor (predeterminado: 100)
    • task (string) - Nombre de la tarea del Pipeline para filtrar (etiqueta tekton.dev/pipelineTask)
  • tekton_task_start - Inicia una Task de Tekton creando un TaskRun que la referencia

    • name (string) (obligatorio) - Nombre de la Task a iniciar
    • namespace (string) - Namespace de la Task
    • params (object) - Valores de parámetros a pasar a la Task. Las claves son nombres de parámetros; los valores pueden ser una cadena, un array de cadenas o un objeto (mapa de cadena a cadena) dependiendo del tipo de parámetro definido en la especificación de la Task
  • tekton_taskrun_restart - Reinicia un TaskRun de Tekton creando un nuevo TaskRun con la misma especificación

    • name (string) (obligatorio) - Nombre del TaskRun a reiniciar
    • namespace (string) - Namespace del TaskRun
  • tekton_taskrun_logs - Obtiene los registros de un TaskRun de Tekton resolviendo su pod subyacente

    • name (string) (obligatorio) - Nombre del TaskRun del que obtener registros
    • namespace (string) - Namespace del TaskRun
    • step (string) - Nombre del paso a incluir. Si se omite, se devuelven los registros de todos los pasos y sidecars
    • tail (integer) - Número de líneas a recuperar desde el final de los registros (Opcional, predeterminado: 100)

Prompts

core
  • cluster-health-check - Realiza una evaluación integral de salud del clúster de Kubernetes/OpenShift
    • namespace (string) - Namespace opcional para limitar el alcance de la verificación de salud (predeterminado: todos los namespaces)
    • check_events (string) - Incluir eventos recientes de advertencia/error (true/false, predeterminado: true)
kiali
  • mesh-list-applications - Lista las aplicaciones en los namespaces de la malla

    • namespace (string) - Namespace opcional para filtrar aplicaciones (predeterminado: todos los namespaces)
  • list-istio-config - Lista los recursos de configuración de Istio en los namespaces de la malla

    • namespace (string) - Namespace opcional para filtrar la configuración de Istio (predeterminado: todos los namespaces)
  • mesh-list-namespaces - Lista todos los namespaces con su estado de inyección de sidecar y etiquetas de Istio

  • mesh-list-services - Lista los servicios en los namespaces de la malla

    • namespace (string) - Namespace opcional para filtrar servicios (predeterminado: todos los namespaces)
  • mesh-list-workloads - Lista las cargas de trabajo en los namespaces de la malla

    • namespace (string) - Namespace opcional para filtrar cargas de trabajo (predeterminado: todos los namespaces)
  • mesh-health-check - Realiza una evaluación integral de salud de la malla de servicios Istio, incluyendo el estado del plano de control y del plano de datos

    • namespace (string) - Namespace opcional para enfocar la verificación de salud (por defecto: todos los namespaces)
  • mesh-topology - Muestra la topología de la malla, incluyendo los componentes del plano de control y la conectividad del clúster

  • traffic-topology - Analiza la topología de tráfico de la malla de servicios, mostrando dependencias de servicios, flujo de tráfico y patrones de comunicación

    • namespaces (string) (obligatorio) - Lista separada por comas de namespaces a incluir en el gráfico, o 'all' para incluir todos los namespaces accesibles de la malla
  • service-troubleshoot - Investiga errores de servicios utilizando logs, trazas y configuración de Istio para identificar causas raíz

    • namespace (string) (obligatorio) - Namespace donde está desplegado el servicio
    • service (string) (obligatorio) - Nombre del servicio a solucionar problemas
    • workload (string) - Workload o nombre de pod opcional para obtener logs (si se omite, usa el nombre del servicio)
  • trace-analysis - Investiga trazas distribuidas de un servicio para identificar cuellos de botella de latencia, fuentes de error y spans lentos

    • namespace (string) (obligatorio) - Namespace donde está desplegado el servicio
    • service (string) (obligatorio) - Nombre del servicio para investigar sus trazas
  • istio-config-review - Revisa y valida la configuración de Istio en un namespace, verificando malas configuraciones y violaciones de mejores prácticas

    • namespace (string) (obligatorio) - Namespace para revisar la configuración de Istio
kubevirt
  • vm-troubleshoot - Genera una guía de solución de problemas paso a paso para diagnosticar problemas de VirtualMachine de KubeVirt

    • namespace (string) (obligatorio) - El namespace de la VirtualMachine a solucionar problemas
    • name (string) (obligatorio) - El nombre de la VirtualMachine a solucionar problemas
  • windows-golden-image - Guía la creación de una imagen golden de Windows mediante la pipeline de Tekton windows-efi-installer de KubeVirt

    • winImageDownloadURL (string) (obligatorio) - URL de descarga del ISO de Microsoft Windows (debe ser https://)
    • namespace (string) - Namespace de destino para el PipelineRun
    • windowsVersion (string) - Versión de Windows: 10, 11, 2k22 (por defecto) o 2k25
    • pipelineVersion (string) - Versión de la pipeline (por defecto: latest). Usa una versión específica como 0.25.0 si es necesario
  • hco-status - Genera un informe de estado para el HyperConverged Cluster Operator (HCO) que gestiona KubeVirt y componentes relacionados

tekton
  • pipeline-troubleshoot - Recopila el estado del PipelineRun, su definición de Pipeline, TaskRuns, logs de pasos fallidos o con errores, eventos de advertencia, repositorio de Pipeline-as-Code y contexto de TektonConfig para la solución de problemas de Tekton
    • namespace (string) (obligatorio) - Namespace del PipelineRun a solucionar problemas
    • name (string) (obligatorio) - Nombre del PipelineRun a solucionar problemas

Recursos

Plantillas de Recursos

Helm Chart

Un Helm Chart está disponible para simplificar el despliegue del servidor MCP de Kubernetes.

helm install kubernetes-mcp-server oci://ghcr.io/containers/charts/kubernetes-mcp-server

Para opciones de configuración, incluyendo OAuth, telemetría y límites de recursos, consulta el README del chart y values.yaml.

💬 Comunidad

Únete a la conversación y conéctate con otros usuarios y contribuyentes:

  • Slack - Haz preguntas, comparte comentarios y discute el servidor MCP de Kubernetes en el canal #kubernetes-mcp-server en el espacio de trabajo de CNCF Slack. Si aún no eres miembro, puedes solicitar una invitación.

🧑‍💻 Desarrollo

Ejecutar con mcp-inspector

Compila el proyecto y ejecuta el servidor MCP de Kubernetes con mcp-inspector para inspeccionar el servidor MCP.

# Compile the project
make build
# Run the Kubernetes MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server

mcp-name: io.github.containers/kubernetes-mcp-server