Kubernetes MCP Server

Um servidor MCP versátil para Kubernetes e OpenShift, distribuído como binário nativo, pacote npm/Python ou imagem Docker.

Documentação

Kubernetes MCP Server

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

✨ Recursos | 🚀 Primeiros Passos | 🎥 Demonstrações | ⚙️ Configuração | 🛠️ Ferramentas | 💬 Comunidade | 🧑‍💻 Desenvolvimento

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

✨ Recursos

Uma implementação poderosa e flexível de servidor Kubernetes Model Context Protocol (MCP) com suporte para Kubernetes e OpenShift.

  • ✅ Configuração:
    • Detecta automaticamente alterações na configuração do Kubernetes e atualiza o servidor MCP.
    • Visualiza e gerencia a configuração atual do Kubernetes .kube/config ou a configuração dentro do cluster.
  • ✅ Recursos Genéricos do Kubernetes: Realiza operações em qualquer recurso do Kubernetes ou OpenShift.
    • Qualquer operação CRUD (Criar ou Atualizar, Obter, Listar, Excluir).
  • ✅ Pods: Realiza operações específicas de Pods.
    • Lista pods em todos os namespaces ou em um namespace específico.
    • Obtém um pod pelo nome no namespace especificado.
    • Exclui um pod pelo nome no namespace especificado.
    • Mostra logs de um pod pelo nome no namespace especificado.
    • Top obtém métricas de uso de recursos para todos os pods ou um pod específico no namespace especificado.
    • Exec em um pod e executa um comando.
    • Executa uma imagem de contêiner em um pod e opcionalmente a expõe.
  • ✅ Namespaces: Lista namespaces do Kubernetes.
  • ✅ Eventos: Visualiza eventos do Kubernetes em todos os namespaces ou em um namespace específico.
  • ✅ Projetos: Lista projetos do OpenShift.
  • ☸️ Helm:
    • Instala um chart Helm no namespace atual ou fornecido.
    • Lista releases Helm em todos os namespaces ou em um namespace específico.
    • Desinstala um release Helm no namespace atual ou fornecido.
  • 🔧 Tekton: Operações específicas do Tekton que complementam o gerenciamento genérico de recursos do Kubernetes.
    • Pipeline: Inicia um Pipeline Tekton criando um PipelineRun.
    • PipelineRun: Reinicia, cancela, soluciona problemas e recupera logs do PipelineRun.
    • Task: Inicia uma Task Tekton criando um TaskRun.
    • TaskRun: Reinicia um TaskRun com a mesma especificação e recupera logs do TaskRun por meio da resolução de pods.
  • 🔭 Observabilidade: Rastreamento distribuído e métricas opcionais do OpenTelemetry com taxas de amostragem personalizadas. Inclui endpoint /stats para estatísticas em tempo real. Consulte OTEL.md.

Ao contrário de outras implementações de servidor MCP do Kubernetes, este NÃO É apenas um wrapper em torno das ferramentas de linha de comando kubectl ou helm. É uma implementação nativa baseada em Go que interage diretamente com o servidor de API do Kubernetes.

NÃO HÁ NECESSIDADE de dependências externas ou ferramentas instaladas no sistema. Se você estiver usando os binários nativos, não precisa ter Node ou Python instalados no seu sistema.

  • ✅ Leve: O servidor é distribuído como um único binário nativo para Linux, macOS e Windows.
  • ✅ Alto Desempenho / Baixa Latência: Interage diretamente com o servidor de API do Kubernetes sem a sobrecarga de chamar e aguardar comandos externos.
  • ✅ Multi-Cluster: Pode interagir com vários clusters Kubernetes simultaneamente (conforme definido nos seus arquivos kubeconfig).
  • ✅ Multiplataforma: Disponível como binário nativo para Linux, macOS e Windows, bem como pacote npm, pacote Python e imagem de contêiner/Docker.
  • ✅ Configurável: Suporta argumentos de linha de comando, arquivos de configuração TOML e variáveis de ambiente.
  • ✅ Bem testado: O servidor possui um extenso conjunto de testes para garantir sua confiabilidade e correção em diferentes ambientes Kubernetes.
  • 📚 Documentação: Documentação abrangente do usuário incluindo guias de configuração, referência de configuração e observabilidade.

🚀 Primeiros Passos

Requisitos

  • Acesso a um cluster Kubernetes.
Claude Code

Siga o guia dedicado de primeiros passos do Claude Code na nossa documentação do usuário.

Para uma configuração segura de produção com ServiceAccount dedicado e acesso somente leitura, revise também o guia de configuração do Kubernetes.

Claude Desktop

Usando npx

Se você tiver o npm instalado, esta é a maneira mais rápida de começar com kubernetes-mcp-server no Claude Desktop.

Abra seu claude_desktop_config.json e adicione o servidor mcp à lista de mcpServers:

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

VS Code / VS Code Insiders

Instale a extensão do servidor Kubernetes MCP no VS Code Insiders pressionando o seguinte link:

Install in VS Code Install in VS Code Insiders

Alternativamente, você pode instalar a extensão manualmente executando o seguinte 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

Instale a extensão do servidor Kubernetes MCP no Cursor pressionando o seguinte link:

Install MCP Server

Alternativamente, você pode instalar a extensão manualmente editando o arquivo mcp.json:

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

Goose CLI

Goose CLI é a maneira mais fácil (e mais barata) de começar com agentes de inteligência artificial (IA).

Usando npm

Se você tiver o npm instalado, esta é a maneira mais rápida de começar com kubernetes-mcp-server.

Abra seu config.yaml do goose e adicione o servidor mcp à lista de mcpServers:

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

🎥 Demonstrações

Diagnosticando e corrigindo automaticamente um Deployment OpenShift

Demonstração mostrando como o servidor Kubernetes MCP é aproveitado pelo Claude Desktop para diagnosticar e corrigir automaticamente um deployment no OpenShift sem qualquer assistência do usuário.

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

Vibe Coding de um jogo simples e implantação no OpenShift

Nesta demonstração, apresento o processo de Vibe Coding de um jogo simples usando VS Code e como aproveitar o servidor Podman MCP e o servidor Kubernetes MCP para implantá-lo no OpenShift.

Vibe Coding: Build & Deploy a Game on Kubernetes

Turbine o GitHub Copilot com o Kubernetes MCP Server no VS Code - Configuração em Um Clique!

Nesta demonstração, mostrarei como configurar o servidor Kubernetes MCP no VS Code apenas clicando em um link.

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

⚙️ Configuração

O servidor Kubernetes MCP pode ser configurado usando argumentos de linha de comando (CLI).

Você pode executar o executável CLI usando npx, uvx ou baixando o binário da versão mais recente.

# 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

Opções de Configuração

OpçãoDescrição
--portInicia o servidor MCP no modo HTTP Streamable (caminho /mcp) e no modo Server-Sent Event (SSE) (caminho /sse) e escuta na porta especificada.
--log-levelDefine o nível de registro (valores de 0-9). Semelhante aos níveis de registro do kubectl.
--config(Opcional) Caminho para o arquivo de configuração TOML principal. Consulte a Referência de Configuração para detalhes.
--config-dir(Opcional) Caminho para o diretório de configuração drop-in. Os arquivos são carregados em ordem lexical (alfabética). O padrão é conf.d relativo ao arquivo de configuração principal se --config for especificado. Consulte a Referência de Configuração para detalhes.
--kubeconfigCaminho para o arquivo de configuração do Kubernetes. Se não for fornecido, tentará resolver a configuração (dentro do cluster, localização padrão, etc.).
--list-outputFormato de saída para operações de listagem de recursos (um de: yaml, table) (padrão "table")
--read-onlySe definido, o servidor MCP executará em modo somente leitura, o que significa que não permitirá nenhuma operação de escrita (criar, atualizar, excluir) no cluster Kubernetes. Isso é útil para depuração ou inspeção do cluster sem fazer alterações.
--disable-destructiveSe definido, o servidor MCP desabilitará todas as operações destrutivas (excluir, atualizar, etc.) no cluster Kubernetes. Isso é útil para depuração ou inspeção do cluster sem fazer alterações acidentalmente. Esta opção não tem efeito quando --read-only é usado.
--statelessSe definido, o servidor MCP executará em modo sem estado, desabilitando notificações de alteração de ferramentas e prompts. Isso é útil para implantações em contêineres, balanceamento de carga e ambientes serverless onde manter o estado do cliente não é desejado.
--toolsetsLista separada por vírgulas de conjuntos de ferramentas a serem habilitados. Consulte a seção 🛠️ Ferramentas e Funcionalidades para mais informações.
--disable-multi-clusterSe definido, o servidor MCP desabilitará o suporte multi-cluster e usará apenas o contexto atual do arquivo kubeconfig. Isso é útil se você quiser restringir o servidor MCP a um único cluster.
--cluster-providerEstratégia de provedor de cluster a ser usada (um de: kubeconfig, in-cluster, kcp, disabled). Se não for definido, o servidor detectará automaticamente com base no ambiente.

Nota: A maioria das opções de CLI possui campos de configuração TOML equivalentes. A flag --disable-multi-cluster é equivalente a definir cluster_provider_strategy = "disabled" no TOML. Consulte a Referência de Configuração para todas as opções TOML.

Arquivos de Configuração TOML

Para configurações complexas ou persistentes, use arquivos de configuração TOML em vez de argumentos de CLI:

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

Exemplo de configuração:

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 documentação abrangente de configuração TOML, incluindo:

  • Todas as opções de configuração e seus padrões
  • Arquivos de configuração drop-in para configurações modulares
  • Recarregamento dinâmico de configuração via SIGHUP
  • Recursos negados para restringir o acesso a tipos de recursos sensíveis
  • Instruções do servidor para MCP Tool Search
  • Prompts MCP personalizados
  • Autenticação OAuth/OIDC para modo HTTP (Keycloak, Microsoft Entra ID)

Consulte a Referência de Configuração.

📊 Logging MCP

O servidor suporta o recurso de logging MCP, permitindo que clientes recebam informações de depuração por meio de mensagens de log estruturadas. Erros da API Kubernetes são automaticamente categorizados e registrados para os clientes com níveis de severidade apropriados. Dados sensíveis (tokens, chaves, senhas, credenciais de nuvem) são automaticamente mascarados antes de serem enviados aos clientes.

Consulte o Guia de Logging MCP.

🛠️ Ferramentas e Funcionalidades

O servidor Kubernetes MCP suporta habilitar ou desabilitar grupos específicos de ferramentas e funcionalidades (ferramentas, recursos, prompts, etc.) por meio do sinalizador de linha de comando --toolsets ou da opção de configuração toolsets. Isso permite que você controle quais funcionalidades do Kubernetes estão disponíveis para suas ferramentas de IA. Habilitar apenas os conjuntos de ferramentas que você precisa pode ajudar a reduzir o tamanho do contexto e melhorar a precisão da seleção de ferramentas do LLM.

Projetos Validados do Ecossistema Kubernetes

Os seguintes projetos do ecossistema CNCF e Kubernetes são cobertos por cenários de avaliação automatizados em evals/tasks. A maioria dos cenários funciona apenas com o conjunto de ferramentas core. Os conjuntos de ferramentas dedicados abaixo são opcionais e necessários apenas para os cenários específicos de projeto indicados.

ProjetoConjunto(s) de ferramentas opcional(is)Cenários de avaliação
Helmhelm3
Istiokiali5
Kialikiali16
Kubernetes-32
KubeVirtkubevirt, tekton19
NetObservnetobserv4
Tektontekton9

Conjuntos de Ferramentas Disponíveis

Os seguintes conjuntos de ferramentas estão disponíveis (conjuntos de ferramentas marcados com ✓ na coluna Padrão são habilitados por padrão):

Conjunto de ferramentasDescriçãoPadrão
configVisualizar e gerenciar a configuração local atual do Kubernetes (kubeconfig)
coreFerramentas mais comuns para gerenciamento do Kubernetes (Pods, Recursos Genéricos, Eventos, etc.)
helmFerramentas para gerenciar charts e releases do Helm
kcpGerenciar workspaces kcp e recursos de multi-tenancy
kialiFerramentas mais comuns para gerenciar o Kiali, consulte a documentação do Kiali para mais detalhes.
kubevirtFerramentas de gerenciamento de máquinas virtuais KubeVirt, consulte a documentação do KubeVirt para mais detalhes.
netobservFerramentas de observabilidade de rede apoiadas pela API do plugin do console NetObserv (fluxos, métricas, exportação). Consulte a documentação do NetObserv para mais detalhes.
tektonFerramentas de gerenciamento de pipelines Tekton para Pipelines, PipelineRuns, Tasks, TaskRuns e solução de problemas.

Ferramentas

Caso o suporte a múltiplos clusters esteja habilitado (padrão) e você tenha acesso a múltiplos clusters, todas as ferramentas aplicáveis incluirão um argumento adicional context para especificar o contexto do Kubernetes (cluster) a ser usado para essa operação.

config
  • configuration_contexts_list - Lista todos os nomes de contextos disponíveis e URLs de servidores associados do arquivo kubeconfig

  • targets_list - Lista todos os alvos disponíveis

  • configuration_view - Obtém o conteúdo atual da configuração do Kubernetes como um YAML kubeconfig

    • minified (boolean) - Retorna uma versão minificada da configuração. Se definido como true, mantém apenas o contexto atual e as partes relevantes da configuração para esse contexto. Se definido como false, todos os contextos, clusters, auth-infos e usuários são retornados na configuração. (Opcional, padrão true)
core
  • events_list - Lista eventos do Kubernetes (avisos, erros, mudanças de estado) para depuração e solução de problemas no cluster atual de todos os namespaces

    • fieldSelector (string) - Seletor de campo opcional do Kubernetes para filtrar eventos por valores de campo (ex.: 'type=Warning', 'involvedObject.name=my-pod'). Campos suportados: involvedObject.kind, involvedObject.name, involvedObject.namespace, involvedObject.uid, involvedObject.apiVersion, involvedObject.resourceVersion, involvedObject.fieldPath, reason, reportingComponent, source, type. Consulte https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • namespace (string) - Namespace opcional para recuperar os eventos. Se não fornecido, listará eventos de todos os namespaces
  • namespaces_list - Lista todos os namespaces do Kubernetes no cluster atual

  • projects_list - Lista todos os projetos OpenShift no cluster atual

  • nodes_log - Obtém logs de um nó do Kubernetes (kubelet, kube-proxy ou outros logs do sistema). Isso acessa os logs do nó por meio do proxy da API Kubernetes para o kubelet

    • name (string) (obrigatório) - Nome do nó do qual obter os logs
    • query (string) (obrigatório) - query especifica serviços ou arquivos dos quais retornar logs (obrigatório). Exemplo: "kubelet" para buscar logs do kubelet, "/" para buscar um arquivo de log específico do nó (ex.: "/var/log/kubelet.log" ou "/var/log/kube-proxy.log")
    • tailLines (integer) - Número de linhas a recuperar do final dos logs (Opcional, 0 significa todos os logs)
  • nodes_stats_summary - Obtém estatísticas detalhadas de uso de recursos de um nó do Kubernetes por meio da API Summary do kubelet. Fornece métricas abrangentes incluindo uso de CPU, memória, sistema de arquivos e rede nos níveis de nó, pod e contêiner. Em sistemas com cgroup v2 e kernel 4.20+, também inclui métricas PSI (Pressure Stall Information) que mostram pressão de recursos para CPU, memória e I/O. Consulte https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/ para detalhes sobre métricas PSI

    • name (string) (obrigatório) - Nome do nó do qual obter as estatísticas
  • nodes_top - Lista o consumo de recursos (CPU e memória) conforme registrado pelo Kubernetes Metrics Server para os Nós Kubernetes especificados ou todos os nós no cluster

    • label_selector (string) - Seletor de rótulo do Kubernetes (ex.: 'node-role.kubernetes.io/worker=') para filtrar nós por rótulo (Opcional, aplicável apenas quando o nome não é fornecido)
    • name (string) - Nome do Nó do qual obter o consumo de recursos (Opcional, todos os Nós se não fornecido)
  • pods_list - Lista todos os pods do Kubernetes no cluster atual de todos os namespaces

    • fieldSelector (string) - Seletor de campo opcional do Kubernetes para filtrar pods por valores de campo (ex.: 'status.phase=Running', 'spec.nodeName=node1'). Campos suportados: 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 é um estado de contêiner, não uma fase de pod, portanto não pode ser filtrado diretamente. Consulte https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • labelSelector (string) - Seletor de rótulo opcional do Kubernetes (ex.: 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os pods por rótulo
  • pods_list_in_namespace - Lista todos os pods do Kubernetes no namespace especificado no cluster atual

    • fieldSelector (string) - Seletor de campo opcional do Kubernetes para filtrar pods por valores de campo (ex.: 'status.phase=Running', 'spec.nodeName=node1'). Campos suportados: 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 é um estado de contêiner, não uma fase de pod, portanto não pode ser filtrado diretamente. Consulte https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • labelSelector (string) - Seletor de rótulo opcional do Kubernetes (ex.: 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os pods por rótulo
    • namespace (string) (obrigatório) - Namespace do qual listar os pods
  • pods_get - Obtém um Pod do Kubernetes no namespace atual ou fornecido com o nome fornecido

    • name (string) (obrigatório) - Nome do Pod
    • namespace (string) - Namespace do qual obter o Pod
  • pods_delete - Exclui um Pod do Kubernetes no namespace atual ou fornecido com o nome fornecido

    • name (string) (obrigatório) - Nome do Pod a excluir
    • namespace (string) - Namespace do qual excluir o Pod
  • pods_top - Lista o consumo de recursos (CPU e memória) conforme registrado pelo Kubernetes Metrics Server para os Pods Kubernetes especificados em todos os namespaces, no namespace fornecido ou no namespace atual

    • all_namespaces (boolean) - Se true, lista o consumo de recursos para todos os Pods em todos os namespaces. Se false, lista o consumo de recursos para Pods no namespace fornecido ou no namespace atual
    • label_selector (string) - Seletor de rótulo do Kubernetes (ex.: 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os pods por rótulo (Opcional, aplicável apenas quando o nome não é fornecido)
    • name (string) - Nome do Pod do qual obter o consumo de recursos (Opcional, todos os Pods no namespace se não fornecido)
    • namespace (string) - Namespace do qual obter o consumo de recursos dos Pods (Opcional, namespace atual se não fornecido e all_namespaces for false)
  • pods_exec - Executa um comando em um Pod do Kubernetes (acesso ao shell, executa comandos no contêiner) no namespace atual ou fornecido, com o nome e comando fornecidos

    • command (array) (obrigatório) - Comando a ser executado no contêiner do Pod. O primeiro item é o comando a ser executado e o restante são os argumentos desse comando. Exemplo: ["ls", "-l", "/tmp"]
    • container (string) - Nome do contêiner do Pod onde o comando será executado (Opcional)
    • name (string) (obrigatório) - Nome do Pod onde o comando será executado
    • namespace (string) - Namespace do Pod onde o comando será executado
  • pods_log - Obtém os logs de um Pod do Kubernetes no namespace atual ou fornecido, com o nome fornecido

    • container (string) - Nome do contêiner do Pod do qual obter os logs (Opcional)
    • name (string) (obrigatório) - Nome do Pod do qual obter os logs
    • namespace (string) - Namespace do qual obter os logs do Pod
    • previous (boolean) - Retorna logs de contêineres encerrados anteriormente (Opcional)
    • tail (integer) - Número de linhas a recuperar do final dos logs (Opcional, padrão: 100)
  • pods_run - Executa um Pod do Kubernetes no namespace atual ou fornecido, com a imagem de contêiner fornecida e nome opcional

    • image (string) (obrigatório) - Imagem do contêiner a ser executada no Pod
    • name (string) - Nome do Pod (Opcional, nome aleatório se não fornecido)
    • namespace (string) - Namespace no qual executar o Pod
    • port (number) - Porta TCP/IP a ser exposta do contêiner do Pod (Opcional, nenhuma porta exposta se não fornecida)
  • resources_list - Lista recursos e objetos do Kubernetes no cluster atual fornecendo sua apiVersion e kind e, opcionalmente, o namespace e o seletor de rótulos (label selector) (apiVersion e kind comuns incluem: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obrigatório) - apiVersion dos recursos (exemplos de apiVersion válidas são: v1, apps/v1, networking.k8s.io/v1)
    • fieldSelector (string) - Seletor de campos Kubernetes opcional para filtrar recursos por valores de campo (ex.: 'status.phase=Running', 'metadata.name=myresource'). Os campos suportados variam por 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. Consulte https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
    • kind (string) (obrigatório) - kind dos recursos (exemplos de kind válidos são: Pod, Service, Deployment, Ingress)
    • labelSelector (string) - Seletor de rótulos (label selector) Kubernetes opcional (ex.: 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os recursos por rótulo
    • namespace (string) - Namespace opcional do qual recuperar os recursos com escopo de namespace (ignorado no caso de recursos com escopo de cluster). Se não for fornecido, listará recursos de todos os namespaces
  • resources_get - Obtém um recurso do Kubernetes no cluster atual fornecendo sua apiVersion, kind, opcionalmente o namespace, e seu nome (apiVersion e kind comuns incluem: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obrigatório) - apiVersion do recurso (exemplos de apiVersion válidas são: v1, apps/v1, networking.k8s.io/v1)
    • kind (string) (obrigatório) - kind do recurso (exemplos de kind válidos são: Pod, Service, Deployment, Ingress)
    • name (string) (obrigatório) - Nome do recurso
    • namespace (string) - Namespace opcional do qual recuperar o recurso com escopo de namespace (ignorado no caso de recursos com escopo de cluster). Se não for fornecido, obterá o recurso do namespace configurado
  • resources_create_or_update - Cria ou atualiza um recurso do Kubernetes via Server-Side Apply. O manifesto é o estado desejado completo: qualquer campo que esta ferramenta definiu anteriormente e que o novo manifesto omite é removido. Para editar um recurso existente, obtenha-o com resources_get, modifique-o e reaplique o recurso completo. (apiVersion e kind comuns incluem: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • resource (string) (obrigatório) - Representação YAML ou JSON completa do recurso Kubernetes (estado desejado completo, não um patch parcial). Inclua apiVersion, kind, metadata e a spec completa.
  • resources_delete - Exclui um recurso do Kubernetes no cluster atual fornecendo sua apiVersion, kind, opcionalmente o namespace, e seu nome (apiVersion e kind comuns incluem: v1 Pod, v1 Service, v1 Node, apps/v1 Deployment, networking.k8s.io/v1 Ingress, route.openshift.io/v1 Route)

    • apiVersion (string) (obrigatório) - apiVersion do recurso (exemplos de apiVersion válidas são: v1, apps/v1, networking.k8s.io/v1)
    • gracePeriodSeconds (integer) - Duração opcional em segundos antes que o objeto seja excluído. O valor deve ser um inteiro não negativo. O valor zero indica exclusão imediata. Se esse valor for nulo, o período de graça padrão para o tipo especificado será usado
    • kind (string) (obrigatório) - kind do recurso (exemplos de kind válidos são: Pod, Service, Deployment, Ingress)
    • name (string) (obrigatório) - Nome do recurso
    • namespace (string) - Namespace opcional do qual excluir o recurso com escopo de namespace (ignorado no caso de recursos com escopo de cluster). Se não for fornecido, excluirá o recurso do namespace configurado
  • resources_scale - Obtém ou atualiza a escala de um recurso do Kubernetes no cluster atual fornecendo sua apiVersion, kind, nome e, opcionalmente, o namespace. Se a escala for definida na chamada da ferramenta, a escala será atualizada para esse valor. Sempre retorna a escala atual do recurso

    • apiVersion (string) (obrigatório) - apiVersion do recurso (exemplos de apiVersion válidas são apps/v1)
    • kind (string) (obrigatório) - kind do recurso (exemplos de kind válidos são: StatefulSet, Deployment)
    • name (string) (obrigatório) - Nome do recurso
    • namespace (string) - Namespace opcional do qual obter/atualizar a escala do recurso com escopo de namespace (ignorado no caso de recursos com escopo de cluster). Se não for fornecido, obterá/atualizará a escala do recurso do namespace configurado
    • scale (integer) - Escala opcional para a qual atualizar a escala do recurso. Se não for fornecida, retornará a escala atual do recurso, sem atualizá-la
helm
  • helm_install - Instala (implanta) um chart Helm para criar um release no namespace atual ou fornecido

    • chart (string) (obrigatório) - Referência do chart a instalar (por exemplo: stable/grafana, oci://ghcr.io/nginxinc/charts/nginx-ingress)
    • name (string) - Nome do release Helm (Opcional, nome aleatório se não fornecido)
    • namespace (string) - Namespace no qual instalar o chart Helm (Opcional, namespace atual se não fornecido)
    • values (object) - Valores a passar para o chart Helm (Opcional)
  • helm_list - Lista todos os releases Helm no namespace atual ou fornecido (ou em todos os namespaces, se especificado)

    • all_namespaces (boolean) - Se verdadeiro, lista todos os releases Helm em todos os namespaces, ignorando o argumento de namespace (Opcional)
    • namespace (string) - Namespace do qual listar releases Helm (Opcional, todos os namespaces se não fornecido)
  • helm_uninstall - Desinstala um release Helm no namespace atual ou fornecido

    • name (string) (obrigatório) - Nome do release Helm a desinstalar
    • namespace (string) - Namespace do qual desinstalar o release Helm (Opcional, namespace atual se não fornecido)
kcp
  • kcp_workspaces_list - Lista todos os workspaces kcp disponíveis no cluster atual

  • kcp_workspace_describe - Obtém informações detalhadas sobre um workspace kcp específico

    • workspace (string) (obrigatório) - Nome ou caminho do workspace a descrever
kiali
  • kiali_get_mesh_traffic_graph - Retorna a topologia de tráfego serviço a serviço, dependências e métricas de rede (throughput, tempo de resposta, mTLS) para os namespaces especificados. Use esta ferramenta para diagnosticar problemas de roteamento, latência ou encontrar dependências upstream/downstream.

    • graphType (string) - Granularidade do gráfico. 'app' agrega por nome do aplicativo, 'versionedApp' separa por versões, 'workload' mapeia pods/deployments específicos. Padrão: versionedApp.
    • meshCluster (string) - Nome opcional do cluster do mesh Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa seu cluster de origem por padrão.
    • namespaces (string) (obrigatório) - Lista separada por vírgulas de namespaces a mapear
  • kiali_get_mesh_status - Recupera os detalhes de saúde, topologia e ambiente de alto nível do service mesh Istio. Retorna o status do plano de controle multi-cluster (istiod), a saúde dos namespaces do plano de dados (incluindo o status do ambient mesh), a saúde da stack de observabilidade (Prometheus, Grafana...) e a conectividade dos componentes. Use esta ferramenta como primeiro passo para diagnosticar problemas em todo o mesh, verificar versões do Istio/Kiali ou verificar a saúde geral antes de detalhar workloads específicos.

  • kiali_manage_istio_config_read - Lê a configuração do Istio, Gateway API e Inference API. 'list' agrupa por namespace→'group/version/kind'→{valid:[...],invalid:[...]}, onde os arrays valid/invalid contêm nomes de recursos; omita group/kind para recuperar TODOS os tipos de configuração em uma única chamada. Suporta Istio (networking.istio.io, security.istio.io), Gateway API (gateway.networking.k8s.io) e Inference API (inference.networking.k8s.io) quando instalados. 'get' retorna o YAML completo. Para gravações, use manage_istio_config.

    • action (string) (obrigatório) - Ação a executar (somente leitura)
    • group (string) - Grupo de API do objeto Istio. Obrigatório SOMENTE para a ação 'get'. Para 'list', OMITA group e kind para recuperar TODOS os tipos de configuração em uma única chamada. Use 'gateway.networking.k8s.io' para recursos da Gateway API. Use 'inference.networking.k8s.io' para recursos da Inference API.
    • kind (string) - Kind do objeto Istio. Obrigatório SOMENTE para a ação 'get'. Para 'list', OMITA para retornar todos os kinds de uma vez — NÃO chame separadamente para cada kind.
    • meshCluster (string) - Nome opcional do cluster do mesh Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa seu cluster de origem por padrão.
    • namespace (string) - Namespace que contém o objeto Istio. Para 'list', se não for fornecido, retorna objetos em todos os namespaces. Para 'get', obrigatório.
    • object (string) - Nome do objeto Istio. Obrigatório para a ação 'get'.
    • serviceName (string) - Filtra configurações Istio (VirtualServices, DestinationRules e seus Gateways referenciados) que afetam um serviço específico. Aplicável somente para a ação 'list'
    • version (string) - Versão da API. Use 'v1' para todos os tipos de recurso. Obrigatório para a ação 'get'.
  • kiali_manage_istio_config - Cria, aplica patch ou exclui configurações de Istio, Gateway API e Inference API. Suporta recursos Istio (networking.istio.io, security.istio.io), recursos Gateway API (gateway.networking.k8s.io) e recursos Inference API (inference.networking.k8s.io) quando instalados no cluster. Para listar e obter (somente leitura), use manage_istio_config_read.

    • action (string) (obrigatório) - Ação a ser executada (write)
    • data (string) - Dados JSON ou YAML para o recurso. Obrigatório para ações de create e patch. Para create, você pode fornecer conteúdo parcial (ex.: apenas spec) e ele será mesclado em um template válido com padrões. Arrays (como servers, http, etc.) são SUBSTITUÍDOS por completo, então inclua TODOS os elementos desejados.
    • group (string) (obrigatório) - Grupo de API do objeto Istio. Use 'gateway.networking.k8s.io' para recursos Gateway API. Use 'inference.networking.k8s.io' para recursos Inference API.
    • kind (string) (obrigatório) - Tipo (Kind) do objeto Istio (ex.: 'VirtualService', 'DestinationRule').
    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • namespace (string) (obrigatório) - Namespace que contém o objeto Istio.
    • object (string) (obrigatório) - Nome do objeto Istio.
    • version (string) (obrigatório) - Versão da API. Use 'v1' para todos os tipos de recurso.
  • kiali_list_mesh_clusters - Retorna a lista de clusters de malha Istio que o Kiali pode acessar. Cada entrada inclui seu nome e se é o cluster local (home cluster, onde o Kiali está implantado). Chame esta ferramenta antes de usar meshCluster em outras ferramentas do Kiali quando o cluster de destino for desconhecido.

  • kiali_get_resource_details - Busca uma lista de recursos OU recupera dados detalhados de um recurso específico. Se 'resourceName' for omitido, retorna uma lista. Se 'resourceName' for fornecido, retorna detalhes desse recurso específico.

    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • namespaces (string) - Lista de namespaces separados por vírgula para consulta (ex.: 'bookinfo' ou 'bookinfo,default'). Se não for fornecida, a consulta será feita em todos os namespaces acessíveis.
    • resourceName (string) - Opcional. O nome específico do recurso. Se deixado vazio, a ferramenta retorna uma lista de todos os recursos do tipo especificado. Se fornecido, a ferramenta retorna detalhes aprofundados desse recurso específico.
    • resourceType (string) (obrigatório) - O tipo de recurso a ser consultado. Use 'app' para aplicações Kiali (agrupadas pelo label 'app' do Kubernetes). Use 'argoapp' para CRDs de Application do ArgoCD (requer ArgoCD instalado e a conta de serviço do Kiali deve ter permissões de leitura em applications.argoproj.io).
  • kiali_list_traces - Lista traces distribuídos de um serviço em um namespace. Retorna um resumo (namespace, service, total_found, avg_duration_ms) e uma lista de traces com id, duration_ms, spans_count, root_op, slowest_service, has_errors. Use get_trace_details com um ID de trace para obter a hierarquia completa.

    • errorOnly (boolean) - Se verdadeiro, considera apenas traces que contêm erros. Padrão: false.
    • limit (integer) - Número máximo de traces a retornar. Padrão: 10.
    • lookbackSeconds (integer) - Período de busca retrocedendo no tempo. Padrão: 600 (10m).
    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • namespace (string) (obrigatório) - Namespace Kubernetes do serviço.
    • serviceName (string) (obrigatório) - Nome do serviço para buscar traces (obrigatório). Retorna vários traces até o limite.
  • kiali_get_trace_details - Busca um único trace distribuído pelo trace_id e retorna sua hierarquia de chamadas (árvore de serviços com duração, status e chamadas aninhadas). Use esta ferramenta após list_traces para detalhar um trace específico.

    • traceId (string) (obrigatório) - ID do trace a ser buscado e resumido. Se fornecido, namespace/service_name são ignorados.
  • kiali_get_pod_performance - Retorna um resumo em texto legível com o uso atual de CPU/memória do Pod (do Prometheus) comparado aos requests/limits do Kubernetes (da spec do Pod). Útil para responder perguntas como 'Este workload está usando memória demais?'

    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • namespace (string) (obrigatório) - Namespace Kubernetes do Pod.
    • podName (string) - Nome do Pod Kubernetes. Se workloadName for fornecido, a ferramenta tentará resolver um Pod a partir desse workload primeiro.
    • queryTime (string) - Timestamp final opcional (RFC3339) para a consulta. Padrão: agora.
    • timeRange (string) - Janela de tempo usada para calcular a taxa de CPU (duração Prometheus como '5m', '10m', '1h', '1d'). Padrão: '10m'.
    • workloadName (string) - Nome do workload Kubernetes (ex.: Deployment/StatefulSet/etc). A ferramenta localizará o workload e escolherá um de seus Pods. Se não for encontrado, tratará esse valor como um podName.
  • kiali_get_logs - Obtém os logs de um Pod Kubernetes (ou nome de workload que será resolvido para um pod) em um namespace. A saída é texto simples, correspondendo ao pods_log do kubernetes-mcp-server. O campo line_count informa o número total de linhas de log retornadas. Analise TODAS elas, mas resuma os resultados, a menos que o usuário peça explicitamente a saída bruta. Não omita nenhuma linha de erro ou aviso.

    • container (string) - Opcional. Nome do container do Pod para obter os logs.
    • format (string) - Formatação da saída para chat. 'codeblock' envolve os logs em cercas ~~~ (recomendado). 'plain' retorna texto bruto como o pods_log do kubernetes-mcp-server.
    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • name (string) (obrigatório) - Nome do Pod para obter os logs. Se não existir, será tratado como nome de workload e um pod em execução será selecionado.
    • namespace (string) (obrigatório) - Namespace para obter os logs do Pod
    • previous (boolean) - Opcional. Retorna logs de containers anteriores encerrados
    • severity (string) - Filtro de severidade opcional aplicado no lado do cliente. Aceita 'ERROR', 'WARN' ou combinações como 'ERROR,WARN'.
    • tail (integer) - Número de linhas a recuperar a partir do final dos logs (opcional, padrão: 50). Não pode exceder 200 linhas.
    • workload (string) - Opcional. Substituição do nome do workload (usada quando a busca pelo nome falha).
  • kiali_get_metrics - Retorna um resumo JSON compacto das métricas Istio (quantis de latência, tendências de tráfego, throughput, tamanhos de payload) para o recurso informado.

    • byLabels (string) - Lista de labels separados por vírgula para agrupar métricas (ex.: 'source_workload,destination_service'). Opcional
    • direction (string) - Direção do tráfego. Opcional, padrão: 'outbound'
    • meshCluster (string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa o cluster local (home cluster) por padrão.
    • namespace (string) (obrigatório) - Namespace para obter métricas
    • quantiles (string) - Lista de quantis separados por vírgula para métricas de histograma (ex.: '0.5,0.95,0.99'). Opcional
    • rateInterval (string) - Intervalo de taxa para métricas (ex.: '1m', '5m'). Opcional, padrão: '10m'
    • reporter (string) - Reporter(s) de métricas. Lista separada por vírgulas de: 'source', 'destination', 'waypoint' ou o valor especial 'both' (sem filtro de reporter). Opcional, padrão: 'source'. Exemplo: 'source,waypoint'
    • requestProtocol (string) - Filtrar por protocolo de requisição (ex.: 'http', 'grpc', 'tcp'). Opcional
    • resourceName (string) (obrigatório) - Nome do recurso para obter métricas
    • resourceType (string) (obrigatório) - Tipo de recurso para obter métricas
    • step (string) - Intervalo entre pontos de dados em segundos (ex.: '15'). Opcional, padrão: 15 segundos
kubevirt
  • vm_clone - Clona uma VirtualMachine no KubeVirt criando um recurso VirtualMachineClone. Isso cria uma cópia da VM de origem com um novo nome usando a API de Clone do KubeVirt

    • name (string) (obrigatório) - O nome da máquina virtual de origem a ser clonada
    • namespace (string) (obrigatório) - O namespace da máquina virtual de origem
    • targetName (string) (obrigatório) - O nome da nova máquina virtual clonada
  • vm_create - Cria uma VirtualMachine no KubeVirt com a configuração especificada, resolvendo automaticamente tipos de instância, preferências e imagens de disco de container. A VM será criada no estado Halted por padrão; use o parâmetro autostart para iniciá-la imediatamente.

    • autostart (boolean) - Flag opcional para iniciar a VM automaticamente após a criação (define runStrategy como Always em vez de Halted). Padrão: false.
    • instancetype (string) - Nome opcional do tipo de instância da VM (ex.: 'u1.small', 'u1.medium', 'u1.large')
    • name (string) (obrigatório) - O nome da máquina virtual
    • namespace (string) (obrigatório) - O namespace da máquina virtual
    • networks (array) - Interfaces de rede secundárias opcionais para anexar à VM. Cada item especifica uma Multus NetworkAttachmentDefinition para anexar. Aceita strings simples (nomes de NetworkAttachmentDefinition) ou objetos com propriedades 'name' (nome da interface na VM) e 'networkName' (nome da NetworkAttachmentDefinition). Cada rede cria uma interface bridge na VM.
    • performance (string) - Dica opcional de família de desempenho para o tipo de instância da VM (ex.: 'u1' para propósito geral, 'o1' para sobrecomprometido, 'c1' para otimizado para computação, 'm1' para otimizado para memória). Padrão: 'u1' (propósito geral) se não especificado.
    • preference (string) - Nome opcional da preferência da VM
    • size (string) - Dica opcional de tamanho de workload para a VM (ex.: 'small', 'medium', 'large', 'xlarge'). Usada para selecionar automaticamente um tipo de instância adequado se não for especificado explicitamente.
    • storage (string) - Tamanho opcional de armazenamento para o disco raiz da VM ao usar DataSources (ex.: '30Gi', '50Gi', '100Gi'). Padrão: 30Gi. Ignorado ao usar discos de container.
    • workload (string) - O workload da VM. Aceita nomes de SO (ex.: 'fedora' (padrão), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap') ou URLs completas de imagens de disco de container
  • vm_guest_info - Obter informações do sistema operacional convidado do agente convidado QEMU de uma VirtualMachine. Requer que o agente convidado esteja instalado e em execução dentro da VM. Fornece informações detalhadas sobre o SO, sistemas de arquivos, interfaces de rede e usuários conectados.

    • info_type (string) - Tipo de informação a recuperar: 'all' (padrão - todas as informações disponíveis), 'os' (detalhes do sistema operacional), 'filesystem' (informações de disco e sistema de arquivos), 'users' (usuários conectados), 'network' (interfaces de rede e IPs)
    • name (string) (obrigatório) - O nome da máquina virtual
    • namespace (string) (obrigatório) - O namespace da máquina virtual
  • vm_lifecycle - Gerenciar o ciclo de vida da VirtualMachine KubeVirt: iniciar, parar ou reiniciar uma VM

    • action (string) (obrigatório) - A ação do ciclo de vida a executar: 'start' (altera runStrategy para Always), 'stop' (altera runStrategy para Halted) ou 'restart' (para e depois inicia a VM)
    • name (string) (obrigatório) - O nome da máquina virtual
    • namespace (string) (obrigatório) - O namespace da máquina virtual
  • vm_troubleshoot - Diagnosticar problemas da VirtualMachine KubeVirt com detecção automatizada de causa raiz. Coleta o status da VM, status do VMI, volumes, estado do DataVolume/PVC, configuração cloud-init, estado do pod, logs e eventos, e então executa verificações heurísticas para identificar problemas específicos e sugerir correções. Retorna uma seção 'Detected Issues' com achados CRITICAL/WARNING e etapas de remediação acionáveis, seguida de dados de diagnóstico brutos. Use esta ferramenta PRIMEIRO sempre que um usuário perguntar por que uma VM não está iniciando, presa em Provisioning, em crashloop, falhando ao migrar ou exibindo comportamento inesperado. Detecta automaticamente: StorageClasses ausentes, especificações de PVC inválidas, comandos cloud-init perigosos (shutdown/halt), bloqueadores de migração por nodeSelector, migrações com falha e crashloops de pods. Se o usuário pedir para corrigir ou remediar o problema, use as Correções Sugeridas do relatório com vm_lifecycle (restart) ou resources_create_or_update.

    • name (string) (obrigatório) - O nome da VirtualMachine a ser diagnosticada
    • namespace (string) (obrigatório) - O namespace da VirtualMachine a ser diagnosticada
netobserv
  • netobserv_list_flows - Lista registros de fluxo de rede NetObserv do Loki. Use ao investigar tráfego entre workloads, IPs, portas ou protocolos em um namespace ou janela de tempo.
    • endTime (integer) - Fim do intervalo de tempo em segundos de época Unix. Padrão: agora.
    • filters (string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica em URL).

Sintaxe:

  • key=value — correspondência exata; key=a,b — OU múltiplos valores para a mesma chave
  • key~pattern — regex / correspondência por conteúdo; key!~pattern — NÃO regex
  • key!=value — diferente; key>number — numérico maior ou igual (ex.: Bytes>1000)
  • E dentro de um grupo: & (ex.: SrcK8S_Namespace=default&Proto=6)
  • OU entre grupos: | (ex.: SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefira o parâmetro dedicado "namespace" para escopo de namespace quando possível. Use as ferramentas de listagem do Kubernetes (namespaces, pods, deployments, etc.) para descobrir valores de filtro.

Campos comuns do Kubernetes (os prefixos Src/Dst se espelham):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (ex.: 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

Rede e fluxo:

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

Perdas de pacotes (frequentemente com recordType flowLog e packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Exemplos:

  • 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 fluxo a retornar. Padrão: 100.
    • namespace (string) - Restringir resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo de desenvolvimento).
    • packetLoss (string) - Filtro de perda de pacotes.
    • recordType (string) - Filtro de tipo de registro de fluxo.
    • startTime (integer) - Início do intervalo de tempo em segundos de época Unix. Substitui timeRange quando definido.
    • timeRange (integer) - Janela de retrospectiva em segundos quando startTime é omitido. Padrão: 300.
  • netobserv_get_flow_metrics - Retorna métricas de fluxo NetObserv agregadas como dados de topologia ou séries temporais. Use para análise de throughput, detalhamentos de TLS/DNS/descarte e análise de tráfego por namespace ou workload; consulte aggregateBy e groups para opções de agrupamento.

    • aggregateBy (string) (obrigatório) - Dimensão primária para netobserv_get_flow_metrics (plugin do console /api/flow/metrics).

Duas formas (use a grafia exata):

  1. Escopos de topologia — agregam endpoints para visualizações de grafo/topologia:
  • app — workloads de aplicação (pods/serviços), excluindo tráfego de infraestrutura
  • namespace — namespace do Kubernetes (padrão)
  • owner — proprietário do controlador (Deployment, StatefulSet, …)
  • resource — pod, serviço ou nó (granularidade mais fina de workload)
  • host — nome do nó
  • zone — zona de disponibilidade
  • cluster — nome do cluster (multi-cluster)
  • network — nome de rede definida pelo usuário / secundária
  1. Campos de registro de fluxo — agrupe por um único atributo de fluxo (nome de campo PascalCase). Use para gráficos de detalhamento (TLS, DNS, descartes, protocolo). Os nomes de campos correspondem a filtros / logs de fluxo.

TLS (requer rastreamento TLS no FlowCollector):

  • TLSVersion, TLSCipherSuite, TLSGroup, TLSTypes

DNS:

  • DnsName, DnsFlagsResponseCode, DnsErrno

Descartes de pacotes:

  • PktDropLatestState, PktDropLatestDropCause

Rede / K8s (detalhamento unilateral; combine com 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

Combine aggregateBy com type e function:

  • Throughput: type=Bytes ou Packets, function=rate
  • Contagem de fluxos: type=Flows, function=count ou rate
  • Volume de DNS: type=DnsFlows, function=count
  • Latência de DNS: type=DnsLatencyMs, function=avg, p90 ou max
  • RTT: type=TimeFlowRttNs, function=avg, min ou p90
  • Descartes: type=PktDropPackets ou PktDropBytes, function=rate

Exemplos:

  • 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 (prefere Prometheus, fallback para Loki), prom ou loki.
    • endTime (integer) - Fim do intervalo de tempo em segundos de época Unix. Padrão: agora.
    • filters (string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica em URL).

Sintaxe:

  • key=value — correspondência exata; key=a,b — OU múltiplos valores para a mesma chave
  • key~pattern — regex / correspondência por conteúdo; key!~pattern — NÃO regex
  • key!=value — diferente; key>number — numérico maior ou igual (ex.: Bytes>1000)
  • E dentro de um grupo: & (ex.: SrcK8S_Namespace=default&Proto=6)
  • OU entre grupos: | (ex.: SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefira o parâmetro dedicado "namespace" para escopo de namespace quando possível. Use as ferramentas de listagem do Kubernetes (namespaces, pods, deployments, etc.) para descobrir valores de filtro.

Campos comuns do Kubernetes (os prefixos Src/Dst se espelham):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (ex.: 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

Rede e fluxo:

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

Perdas de pacotes (frequentemente com recordType flowLog e packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Exemplos:

  • SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
  • Proto=6&DstPort=443
  • SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
    • function (string) - Função de agregação.
    • groups (string) - Escopos pai opcionais separados por vírgula quando aggregateBy é um escopo de topologia. Adiciona dimensões extras de rótulo (ex.: detalhar resultados de namespace por cluster ou zona). Ignorado ou menos útil quando aggregateBy já é um campo de fluxo bruto (ex.: TLSVersion); use filtros em vez disso.

Escopos únicos:

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

Escopos combinados (use +, sem espaços):

  • 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

Exemplos:

  • aggregateBy=namespace, groups=clusters

  • aggregateBy=resource, groups=namespaces

  • aggregateBy=owner, groups=zones,hosts

    • limit (integer) - Número máximo de registros de fluxo a retornar. Padrão: 100.
    • namespace (string) - Restringir resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo de desenvolvimento).
    • packetLoss (string) - Filtro de perda de pacotes.
    • rateInterval (string) - Intervalo de taxa do Prometheus (ex.: 1m, 5m).
    • recordType (string) - Filtro de tipo de registro de fluxo.
    • startTime (integer) - Início do intervalo de tempo em segundos de época Unix. Substitui timeRange quando definido.
    • step (string) - Etapa de resolução da consulta (ex.: 30s, 1m).
    • timeRange (integer) - Janela de retrospectiva em segundos quando startTime é omitido. Padrão: 300.
    • type (string) - Tipo de métrica a agregar.
  • netobserv_export_flows - Exporta registros de fluxo NetObserv como CSV com os mesmos filtros de list_flows. Use quando o usuário precisar de dados de fluxo para download para auditorias ou análise offline.

    • columns (string) - Nomes de colunas opcionais separados por vírgula para incluir (ex.: SrcK8S_Namespace,DstK8S_Namespace,Bytes). Omita para exportar todas as colunas presentes no resultado.
    • endTime (integer) - Fim do intervalo de tempo em segundos de época Unix. Padrão: agora.
    • filters (string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica em URL).

Sintaxe:

  • key=value — correspondência exata; key=a,b — OU múltiplos valores para a mesma chave
  • key~pattern — regex / correspondência por conteúdo; key!~pattern — NÃO regex
  • key!=value — diferente; key>number — numérico maior ou igual (ex.: Bytes>1000)
  • E dentro de um grupo: & (ex.: SrcK8S_Namespace=default&Proto=6)
  • OU entre grupos: | (ex.: SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)

Prefira o parâmetro dedicado "namespace" para escopo de namespace quando possível. Use as ferramentas de listagem do Kubernetes (namespaces, pods, deployments, etc.) para descobrir valores de filtro. Campos comuns do Kubernetes (prefixos Src/Dst espelham-se mutuamente):

  • SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
  • SrcK8S_Type, DstK8S_Type (ex.: 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

Rede e fluxo:

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

Descarte de pacotes (frequentemente com recordType flowLog e packetLoss dropped/hasDrops):

  • PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause

DNS:

  • DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode

Exemplos:

  • SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
  • Proto=6&DstPort=443
  • SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
    • format (string) - Formato de exportação. Apenas csv é suportado.
    • limit (integer) - Número máximo de registros de fluxo a retornar. Padrão 100.
    • namespace (string) - Restringir resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo dev).
    • packetLoss (string) - Filtro de perda de pacotes.
    • recordType (string) - Filtro de tipo de registro de fluxo.
    • startTime (integer) - Início do intervalo de tempo como segundos de época Unix. Substitui timeRange quando definido.
    • timeRange (integer) - Janela de retrospectiva em segundos quando startTime é omitido. Padrão 300.
tekton
  • tekton_pipeline_start - Iniciar um Pipeline Tekton criando um PipelineRun que o referencie

    • name (string) (obrigatório) - Nome do Pipeline a iniciar
    • namespace (string) - Namespace do Pipeline
    • params (object) - Valores de parâmetro a passar para o Pipeline. Chaves são nomes de parâmetros; valores podem ser uma string, um array de strings ou um objeto (mapa de string para string) dependendo do tipo de parâmetro definido na especificação do Pipeline
  • tekton_pipelinerun_lifecycle - Gerenciar o ciclo de vida de um PipelineRun Tekton reiniciando-o com a mesma especificação ou cancelando-o definindo spec.status como Cancelled.

    • action (string) (obrigatório) - Ação de ciclo de vida a executar: 'restart' cria um novo PipelineRun com a mesma especificação; 'cancel' define spec.status como Cancelled.
    • name (string) (obrigatório) - Nome do PipelineRun a gerenciar
    • namespace (string) - Namespace do PipelineRun
  • tekton_pipelinerun_logs - Obter logs de todos os TaskRuns pertencentes a um PipelineRun Tekton. Use isto para inspecionar a saída de execução do PipelineRun sem localizar pods manualmente.

    • name (string) (obrigatório) - Nome do PipelineRun do qual obter logs
    • namespace (string) - Namespace do PipelineRun
    • step (string) - Nome da etapa a incluir dentro dos TaskRuns correspondentes
    • tail (integer) - Número de linhas a recuperar do final de cada log de contêiner (padrão: 100)
    • task (string) - Nome da tarefa do Pipeline para filtrar (rótulo tekton.dev/pipelineTask)
  • tekton_task_start - Iniciar uma Task Tekton criando um TaskRun que a referencie

    • name (string) (obrigatório) - Nome da Task a iniciar
    • namespace (string) - Namespace da Task
    • params (object) - Valores de parâmetro a passar para a Task. Chaves são nomes de parâmetros; valores podem ser uma string, um array de strings ou um objeto (mapa de string para string) dependendo do tipo de parâmetro definido na especificação da Task
  • tekton_taskrun_restart - Reiniciar um TaskRun Tekton criando um novo TaskRun com a mesma especificação

    • name (string) (obrigatório) - Nome do TaskRun a reiniciar
    • namespace (string) - Namespace do TaskRun
  • tekton_taskrun_logs - Obter os logs de um TaskRun Tekton resolvendo seu pod subjacente

    • name (string) (obrigatório) - Nome do TaskRun do qual obter logs
    • namespace (string) - Namespace do TaskRun
    • step (string) - Nome da etapa a incluir. Se omitido, logs de todas as etapas e sidecars são retornados
    • tail (integer) - Número de linhas a recuperar do final dos logs (Opcional, padrão: 100)

Prompts

core
  • cluster-health-check - Realizar avaliação abrangente de saúde do cluster Kubernetes/OpenShift
    • namespace (string) - Namespace opcional para limitar o escopo da verificação de saúde (padrão: todos os namespaces)
    • check_events (string) - Incluir eventos recentes de aviso/erro (true/false, padrão: true)
kiali
  • mesh-list-applications - Listar aplicações nos namespaces da malha

    • namespace (string) - Namespace opcional para filtrar aplicações (padrão: todos os namespaces)
  • list-istio-config - Listar recursos de configuração Istio nos namespaces da malha

    • namespace (string) - Namespace opcional para filtrar configuração Istio (padrão: todos os namespaces)
  • mesh-list-namespaces - Listar todos os namespaces com seu status de injeção de sidecar e rótulos Istio

  • mesh-list-services - Listar serviços nos namespaces da malha

    • namespace (string) - Namespace opcional para filtrar serviços (padrão: todos os namespaces)
  • mesh-list-workloads - Listar workloads nos namespaces da malha

    • namespace (string) - Namespace opcional para filtrar workloads (padrão: todos os namespaces)
  • mesh-health-check - Realizar uma avaliação abrangente de saúde da malha de serviços Istio incluindo status do plano de controle e plano de dados

    • namespace (string) - Namespace opcional para focar a verificação de saúde (padrão: todos os namespaces)
  • mesh-topology - Mostrar a topologia da malha incluindo componentes do plano de controle e conectividade do cluster

  • traffic-topology - Analisar a topologia de tráfego da malha de serviços mostrando dependências de serviços, fluxo de tráfego e padrões de comunicação

    • namespaces (string) (obrigatório) - Lista separada por vírgulas de namespaces a incluir no gráfico, ou 'all' para incluir todos os namespaces acessíveis da malha
  • service-troubleshoot - Investigar erros de serviço usando logs, traces e configuração Istio para identificar causas raiz

    • namespace (string) (obrigatório) - Namespace onde o serviço está implantado
    • service (string) (obrigatório) - Nome do serviço a solucionar
    • workload (string) - Workload ou nome de pod opcional para obter logs (se omitido, usa o nome do serviço)
  • trace-analysis - Investigar traces distribuídos para um serviço para identificar gargalos de latência, fontes de erro e spans lentos

    • namespace (string) (obrigatório) - Namespace onde o serviço está implantado
    • service (string) (obrigatório) - Nome do serviço para investigar traces
  • istio-config-review - Revisar e validar a configuração Istio em um namespace, verificando configurações incorretas e violações de melhores práticas

    • namespace (string) (obrigatório) - Namespace para revisar a configuração Istio
kubevirt
  • vm-troubleshoot - Gerar um guia de solução de problemas passo a passo para diagnosticar problemas de VirtualMachine KubeVirt

    • namespace (string) (obrigatório) - O namespace da VirtualMachine a solucionar
    • name (string) (obrigatório) - O nome da VirtualMachine a solucionar
  • windows-golden-image - Orienta a criação de uma imagem dourada do Windows via pipeline Tekton windows-efi-installer do KubeVirt

    • winImageDownloadURL (string) (obrigatório) - URL de download do ISO do Microsoft Windows (deve ser https://)
    • namespace (string) - Namespace de destino para o PipelineRun
    • windowsVersion (string) - Versão do Windows: 10, 11, 2k22 (padrão) ou 2k25
    • pipelineVersion (string) - Versão do pipeline (padrão: latest). Use uma versão específica como 0.25.0 se necessário
tekton
  • pipeline-troubleshoot - Coletar status do PipelineRun, sua definição de Pipeline, TaskRuns, logs de etapas com falha ou erro, eventos de aviso, Repositório Pipeline-as-Code e contexto TektonConfig para solução de problemas Tekton
    • namespace (string) (obrigatório) - Namespace do PipelineRun a solucionar
    • name (string) (obrigatório) - Nome do PipelineRun a solucionar

Recursos

Modelos de Recursos

Helm Chart

Um Helm Chart está disponível para simplificar a implantação do servidor Kubernetes MCP.

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

Para opções de configuração incluindo OAuth, telemetria e limites de recursos, consulte o README do chart e values.yaml.

💬 Comunidade

Junte-se à conversa e conecte-se com outros usuários e contribuidores:

  • Slack - Faça perguntas, compartilhe feedback e discuta o servidor Kubernetes MCP no canal #kubernetes-mcp-server no workspace Slack da CNCF. Se você ainda não é membro, pode solicitar um convite.

🧑‍💻 Desenvolvimento

Executando com mcp-inspector

Compile o projeto e execute o servidor Kubernetes MCP com mcp-inspector para inspecionar o 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