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
✨ 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 Model Context Protocol (MCP) para Kubernetes, 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/configou 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 entra 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 spec 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
/statspara estatísticas em tempo real. Consulte OTEL.md.
Diferente de outras implementações de servidor MCP para 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, além de 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 uma suíte de testes abrangente 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, consulte 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 o 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:
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:
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 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 o 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 MCP do Podman e o servidor Kubernetes MCP para implantá-lo no OpenShift.
Turbine o GitHub Copilot com o Kubernetes MCP Server no VS Code - Configuração em um clique!
Nesta demonstração, mostro como configurar o servidor Kubernetes MCP no VS Code apenas clicando em um link.
⚙️ 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ção | Descrição |
|---|---|
--version | Exibe informações da versão e sai. |
--config | Caminho para o arquivo de configuração TOML principal. Consulte a Referência de Configuração para todas as opções (porta, conjuntos de ferramentas, read_only, kubeconfig, …). |
--config-dir | Diretório de arquivos .toml lexicais. Pode ser usado sozinho ou com --config. Omitido significa sem drop-ins. Caminhos relativos são resolvidos em relação ao diretório de trabalho. |
Nota: As configurações de tempo de execução são TOML (ou nomes de env existentes), não flags de CLI. Consulte Alterações de Configuração para o mapeamento de flag para 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
- Recarga dinâmica de configuração via SIGHUP
- Recursos negados para restringir o acesso a tipos de recursos sensíveis
- Instruções do servidor para Pesquisa de Ferramentas MCP
- Prompts MCP personalizados
- Autenticação OAuth/OIDC para modo HTTP (Keycloak, Microsoft Entra ID)
Consulte a Referência de Configuração.
📊 Registro MCP
O servidor suporta o recurso de registro MCP, permitindo que os clientes recebam informações de depuração por meio de mensagens de log estruturadas. Erros da API do 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 Registro MCP.
🛠️ Ferramentas e Funcionalidades
O servidor Kubernetes MCP suporta habilitar ou desabilitar grupos específicos de ferramentas e funcionalidades (ferramentas, recursos, prompts e assim por diante) por meio da opção de configuração toolsets.
Isso permite controlar quais funcionalidades do Kubernetes estão disponíveis para suas ferramentas de IA.
Habilitar apenas os conjuntos de ferramentas necessários 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 do projeto indicados.
| Projeto | Conjunto(s) de ferramentas opcional(is) | Cenários de avaliação |
|---|---|---|
| Helm | helm | 3 |
| Istio | kiali | 5 |
| Kiali | kiali | 16 |
| Kubernetes | - | 32 |
| KubeVirt | kubevirt, tekton | 27 |
| NetObserv | netobserv | 4 |
| Tekton | tekton | 9 |
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):
| Toolset | Descrição | Padrão |
|---|---|---|
| config | Visualizar e gerenciar a configuração local atual do Kubernetes (kubeconfig) | ✓ |
| core | Ferramentas mais comuns para gerenciamento do Kubernetes (Pods, Recursos Genéricos, Eventos, etc.) | ✓ |
| helm | Ferramentas para gerenciar gráficos e versões do Helm | |
| kcp | Gerenciar workspaces do kcp e recursos de multi-tenancy | |
| kiali | Ferramentas mais comuns para gerenciar o Kiali, consulte a documentação do Kiali para mais detalhes. | |
| kubevirt | Ferramentas de gerenciamento de máquinas virtuais KubeVirt, consulte a documentação do KubeVirt para mais detalhes. | |
| netobserv | Ferramentas 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. | |
| observability/logs | Conjunto de ferramentas para consultar logs do Loki | |
| observability/metrics | Conjunto de ferramentas para consultar endpoints do Prometheus e do Alertmanager de maneiras eficientes. | |
| observability/otelcol | Conjunto de ferramentas para assistência na configuração do OpenTelemetry Collector, incluindo validação de esquema, documentação de componentes e gerenciamento de versões. | |
| observability/traces | Ferramentas de rastreamento distribuído para descobrir instâncias do Tempo, pesquisar e recuperar rastreamentos e explorar atributos de rastreamento. | |
| tekton | Ferramentas 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 vários 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 - Listar todos os nomes de contextos disponíveis e URLs de servidores associados do arquivo kubeconfig
-
targets_list - Listar todos os alvos disponíveis
-
configuration_view - Obter o conteúdo atual da configuração do Kubernetes como um YAML kubeconfig
minified(boolean) - Retornar 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 - Listar 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 (por exemplo, '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 for fornecido, listará eventos de todos os namespaces
-
namespaces_list - Listar todos os namespaces do Kubernetes no cluster atual
fieldSelector(string) - Seletor de campo opcional do Kubernetes para filtrar namespaces por valores de campo (por exemplo, 'metadata.name=default', 'status.phase=Active'). Campos suportados: metadata.name, status.phase. Consulte https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
-
projects_list - Listar todos os projetos do OpenShift no cluster atual
-
nodes_log - Obter 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 do Kubernetes para o kubelet
name(string) (obrigatório) - Nome do nó do qual obter os logsquery(string) (obrigatório) - A consulta 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ó (por exemplo, "/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 - Obter 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 - Listar o consumo de recursos (CPU e memória) conforme registrado pelo Kubernetes Metrics Server para os Nós do Kubernetes especificados ou todos os nós do cluster
label_selector(string) - Seletor de rótulo do Kubernetes (por exemplo, 'node-role.kubernetes.io/worker=') para filtrar nós por rótulo (Opcional, aplicável somente 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 for fornecido)
-
pods_list - Listar 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 (por exemplo, '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. Observação: 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 (por exemplo, '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 - Listar 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 (por exemplo, '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. Observação: 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 (por exemplo, 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os pods por rótulonamespace(string) (obrigatório) - Namespace do qual listar os pods
-
pods_get - Obter um Pod do Kubernetes no namespace atual ou fornecido com o nome fornecido
name(string) (obrigatório) - Nome do Podnamespace(string) - Namespace do qual obter o Pod
-
pods_delete - Excluir um Pod do Kubernetes no namespace atual ou fornecido com o nome fornecido
name(string) (obrigatório) - Nome do Pod a excluirnamespace(string) - Namespace do qual excluir o Pod
-
pods_top - Listar o consumo de recursos (CPU e memória) conforme registrado pelo Kubernetes Metrics Server para os Pods do 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 atuallabel_selector(string) - Seletor de rótulo do Kubernetes (por exemplo, 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os pods por rótulo (Opcional, aplicável somente 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 for fornecido)namespace(string) - Namespace do qual obter o consumo de recursos dos Pods (Opcional, namespace atual se não for fornecido e all_namespaces for false)
-
pods_exec - Executar um comando em um Pod do Kubernetes (acesso ao shell, executar comandos no contêiner) no namespace atual ou fornecido com o nome e comando fornecidos
command(array) (obrigatório) - Comando a executar 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á executadonamespace(string) - Namespace do Pod onde o comando será executado
-
pods_log - Obter 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 logsnamespace(string) - Namespace do qual obter os logs do Podprevious(boolean) - Retornar logs de contêineres terminados anteriormente (Opcional)tail(integer) - Número de linhas a recuperar do final dos logs (Opcional, padrão: 100)
-
pods_run - Executa um Pod Kubernetes no namespace atual ou fornecido com a imagem de contêiner fornecida e nome opcional
image(string) (obrigatório) - Imagem do contêiner para executar no Podname(string) - Nome do Pod (Opcional, nome aleatório se não fornecido)namespace(string) - Namespace para executar o Podport(number) - Porta TCP/IP para expor do contêiner do Pod (Opcional, nenhuma porta exposta se não fornecida)
-
resources_list - Lista recursos e objetos Kubernetes no cluster atual fornecendo sua apiVersion e kind e opcionalmente o namespace e seletor de rótulos (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álidos são: v1, apps/v1, networking.k8s.io/v1)fieldSelector(string) - Seletor de campo 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 Kubernetes opcional (ex.: 'app=myapp,env=prod' ou 'app in (myapp,yourapp)'), use esta opção quando quiser filtrar os recursos por rótulonamespace(string) - Namespace opcional para recuperar os recursos com 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 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álidos 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 recursonamespace(string) - Namespace opcional para recuperar o recurso com 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 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, busque-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 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álidos 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 este valor for nulo, o período de graça padrão para o tipo especificado será usadokind(string) (obrigatório) - kind do recurso (exemplos de kind válidos são: Pod, Service, Deployment, Ingress)name(string) (obrigatório) - Nome do recursonamespace(string) - Namespace opcional para excluir o recurso com 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 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álidos 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 recursonamespace(string) - Namespace opcional para obter/atualizar a escala do recurso com namespace (ignorado no caso de recursos com escopo de cluster). Se não for fornecido, obterá/atualizará a escala do recurso do namespace configuradoscale(integer) - Escala opcional para atualizar a escala do recurso. Se não for fornecida, retornará a escala atual do recurso e não a atualizará
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 para 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 para instalar o chart Helm (Opcional, namespace atual se não fornecido)values(object) - Valores para passar ao 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 para 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 para desinstalarnamespace(string) - Namespace para 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 para 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 isso para diagnosticar problemas de roteamento, latência ou encontrar dependências upstream/downstream.
graphType(string) - Granularidade do gráfico. 'app' agrega por nome de aplicativo, 'versionedApp' separa por versões, 'workload' mapeia pods/deployments específicos. Padrão: versionedApp.meshCluster(string) - Nome opcional do cluster de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa seu cluster padrão.namespaces(string) (obrigatório) - Lista separada por vírgulas de namespaces para mapear
-
kiali_get_mesh_status - Recupera os detalhes de saúde, topologia e ambiente de alto nível da malha de serviços Istio. Retorna o status do plano de controle multi-cluster (istiod), saúde do namespace do plano de dados (incluindo status da malha ambiente), saúde da stack de observabilidade (Prometheus, Grafana...) e conectividade dos componentes. Use esta ferramenta como primeiro passo para diagnosticar problemas em toda a malha, verificar versões do Istio/Kiali ou verificar a saúde geral antes de investigar workloads específicos.
-
kiali_manage_istio_config_read - Lê configuração 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 instalado. '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 Gateway API. Use 'inference.networking.k8s.io' para recursos 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 de malha Istio de kiali_list_mesh_clusters (ex.: west). Quando omitido, o Kiali usa seu cluster padrão.namespace(string) - Namespace que contém o objeto Istio. Para 'list', se não 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 inteiramente, 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) - 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 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 (onde o Kiali está implantado). Chame esta ferramenta antes de usar meshCluster em outras ferramentas 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 por padrão.namespaces(string) - Lista de namespaces separados por vírgula para consultar (ex.: 'bookinfo' ou 'bookinfo,default'). Se não for fornecido, consultará 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 consultar. Use 'app' para aplicações Kiali (agrupadas pelo label 'app' do Kubernetes). Use 'argoapp' para CRDs de Aplicação 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 para 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 true, 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) - Quão longe no passado pesquisar. 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 por padrão.namespace(string) (obrigatório) - Namespace Kubernetes do serviço.serviceName(string) (obrigatório) - Nome do serviço para pesquisar traces (obrigatório). Retorna múltiplos 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 após list_traces para aprofundar em um trace específico.
traceId(string) (obrigatório) - ID do trace a buscar e resumir. Se fornecido, namespace/service_name são ignorados.
-
kiali_get_pod_performance - Retorna um resumo de 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 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 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 buscará 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 a 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 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 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 terminados.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 do final dos logs (Opcional, padrão 50). Não pode exceder 200 linhas.workload(string) - Opcional. Sobrescrita do nome do workload (usado quando a busca por 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 fornecido.
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 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írgula 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) - Passo 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_console_screenshot - Captura uma captura de tela do console gráfico (VNC) de uma VirtualMachine no KubeVirt como uma imagem PNG. Use para ver o que está atualmente exibido na tela da VM (por exemplo, firmware, um bootloader ou um prompt de login). Somente leitura: nunca envia entrada para o guest.
name(string) (obrigatório) - O nome da máquina virtual.namespace(string) (obrigatório) - O namespace da máquina virtual.
-
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 contêiner. 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). O padrão é false.instancetype(string) - Nome opcional do tipo de instância para a VM (ex.: 'u1.small', 'u1.medium', 'u1.large')name(string) (obrigatório) - O nome da máquina virtualnamespace(string) (obrigatório) - O namespace da máquina virtualnetworks(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). O padrão é 'u1' (propósito geral) se não especificado.preference(string) - Nome opcional da preferência para a VMsize(string) - Dica opcional de tamanho de carga de trabalho para a VM (ex.: 'small', 'medium', 'large', 'xlarge'). Usado para selecionar automaticamente um tipo de instância apropriado 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'). O padrão é 30Gi. Ignorado ao usar discos de contêiner.workload(string) - A carga de trabalho da VM. Aceita nomes de sistemas operacionais (ex.: 'fedora' (padrão), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap') ou URLs completas de imagens de disco de contêiner
-
vm_guest_info - Obtém 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 virtualnamespace(string) (obrigatório) - O namespace da máquina virtual
-
vm_lifecycle - Gerencia o ciclo de vida da VirtualMachine KubeVirt: iniciar, parar, reiniciar, pausar ou retomar uma VM
action(string) (obrigatório) - A ação de ciclo de vida a executar: 'start' (altera runStrategy para Always), 'stop' (altera runStrategy para Halted), 'restart' (para e depois inicia a VM), 'pause' (suspende o VMI em execução no local) ou 'unpause' (retoma um VMI pausado)name(string) (obrigatório) - O nome da máquina virtualnamespace(string) (obrigatório) - O namespace da máquina virtual
-
vm_create_from_template - Cria uma VirtualMachine a partir de um VirtualMachineTemplate (virt-template) no KubeVirt. Processa o template no lado do servidor para substituir parâmetros (valores obrigatórios, padrões e valores gerados automaticamente, como senhas) e, em seguida, cria a VirtualMachine resultante no mesmo namespace. O uso de template entre namespaces não é suportado.
namespace(string) (obrigatório) - O namespace do VirtualMachineTemplate e da VirtualMachine resultante (devem ser os mesmos)parameters(object) - Valores de parâmetros para substituir no template. As chaves são nomes de parâmetros (ex.: VM_NAME), os valores são strings. Parâmetros obrigatórios devem ser fornecidos; parâmetros opcionais usam seus padrões se omitidos; parâmetros com generate/from serão gerados automaticamente se não fornecidos.template_name(string) (obrigatório) - O nome do VirtualMachineTemplate para criar a VM
-
vm_troubleshoot - Diagnostica problemas de VirtualMachine KubeVirt com detecção automatizada de causa raiz. Coleta status da VM, status do VMI, volumes, estado de 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 descobertas CRITICAL/WARNING e etapas de remediação acionáveis, seguida por dados de diagnóstico brutos. Use esta ferramenta PRIMEIRO sempre que um usuário perguntar por que uma VM não está iniciando, está 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 Suggested Fixes do relatório com vm_lifecycle (restart) ou resources_create_or_update.
name(string) (obrigatório) - O nome da VirtualMachine para solucionar problemasnamespace(string) (obrigatório) - O namespace da VirtualMachine para solucionar problemas
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. O padrão é agora.filters(string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica a URL).
Sintaxe:
- key=value — correspondência exata; key=a,b — OU múltiplos valores para a mesma chave
- key~pattern — regex / correspondência de contém; key!~pattern — NÃO regex
- key!=value — diferente de; 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 ferramentas de listagem do Kubernetes (namespaces, pods, deployments, etc.) para descobrir valores de filtro.
Campos comuns do Kubernetes (prefixos Src/Dst espelham um ao outro):
- 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. O padrão é 100.namespace(string) - Restringe resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo de 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 em segundos de época Unix. Substitui timeRange quando definido.timeRange(integer) - Janela de retrospectiva em segundos quando startTime é omitido. O padrão é 300.
-
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 baixáveis 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. O padrão é agora.filters(string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica a URL).
Sintaxe:
- key=value — correspondência exata; key=a,b — OU múltiplos valores para a mesma chave
- key~pattern — regex / correspondência de contém; key!~pattern — NÃO regex
- key!=value — diferente de; 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 ferramentas de listagem do Kubernetes (namespaces, pods, deployments, etc.) para descobrir valores de filtro.
Campos comuns do Kubernetes (prefixos Src/Dst espelham um ao outro):
- 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
format(string) - Formato de exportação. Apenas csv é suportado.limit(integer) - Número máximo de registros de fluxo a retornar. O padrão é 100.namespace(string) - Restringe resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo de 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 em segundos de época Unix. Substitui timeRange quando definido.timeRange(integer) - Janela de retrospectiva em segundos quando startTime é omitido. O padrão é 300.
-
netobserv_get_flow_metrics - Retorna métricas de fluxo NetObserv agregadas como dados de topologia ou séries temporais. Use para throughput, análises de TLS/DNS/drops e análise de tráfego de namespace ou workload; veja 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):
- Escopos de topologia — agregam endpoints para visualizações de grafo/topologia:
- app — workloads de aplicação (pods/services), excluindo tráfego de infraestrutura
- namespace — namespace do Kubernetes (padrão)
- owner — controlador proprietário (Deployment, StatefulSet, …)
- resource — pod, service ou node (granularidade mais fina de workload)
- host — nome do node
- zone — zona de disponibilidade
- cluster — nome do cluster (multi-cluster)
- network — nome de rede definida pelo usuário / secundária
- Campos de registro de fluxo — agrupa por um único atributo de fluxo (nome de campo PascalCase). Use para gráficos de detalhamento (TLS, DNS, drops, protocolo). Os nomes de campos correspondem a filtros / logs de fluxo.
TLS (requer rastreamento de TLS no FlowCollector):
- TLSVersion, TLSCipherSuite, TLSGroup, TLSTypes
DNS:
- DnsName, DnsFlagsResponseCode, DnsErrno
Quedas de pacotes:
- PktDropLatestState, PktDropLatestDropCause
Rede / K8s (análise 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 tipo e função:
- 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
- Quedas: 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, com fallback para Loki), prom ou loki.endTime(integer) - Fim do intervalo de tempo em segundos de época Unix. O padrão é agora.filters(string) - Expressão de filtro NetObserv passada ao plugin do console (texto simples; o cliente codifica a 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 de; 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 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
Quedas 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.: dividir resultados de namespace por cluster ou zona). Ignorado ou menos útil quando aggregateBy já é um campo de fluxo bruto (ex.: TLSVersion); use filtros nesse caso.
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. O padrão é 100.namespace(string) - Restringe resultados a fluxos onde o namespace de origem ou destino corresponde (tenant Loki com escopo de dev).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) - Passo de resolução da consulta (ex.: 30s, 1m).timeRange(integer) - Janela de retrospectiva em segundos quando startTime é omitido. O padrão é 300.type(string) - Tipo de métrica a agregar.
observability/logs
-
loki_list_instances - Lista as instâncias LokiStack disponíveis no cluster Kubernetes. Chame isto primeiro ao usar stacks gerenciados pelo Loki Operator para poder passar lokiNamespace e lokiName para outras ferramentas Loki.
-
loki_label_names - Lista os nomes de rótulos Loki disponíveis para um intervalo de tempo. Use isto antes de escrever consultas LogQL.
end(string) - Tempo final como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).lokiName(string) - Nome do LokiStack. Use loki_list_instances para descobrir valores válidos.lokiNamespace(string) - Namespace Kubernetes do LokiStack. Use loki_list_instances para descobrir valores válidos.start(string) - Tempo inicial como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).tenant(string) - ID do tenant Loki (X-Scope-OrgID). Para modos de gateway LokiStack (ex.: openshift-network) isto seleciona o caminho/api/logs/v1/<tenant>; usenetworkpara openshift-network.
-
loki_label_values - Lista valores possíveis para uma chave de rótulo Loki. Use isto para construir correspondências de rótulo precisas em LogQL.
end(string) - Tempo final como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).label(string) (obrigatório) - Chave de rótulo a inspecionar (por exemplo, namespace, pod, container).lokiName(string) - Nome do LokiStack. Use loki_list_instances para descobrir valores válidos.lokiNamespace(string) - Namespace Kubernetes do LokiStack. Use loki_list_instances para descobrir valores válidos.start(string) - Tempo inicial como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).tenant(string) - ID do tenant Loki (X-Scope-OrgID). Para modos de gateway LokiStack (ex.: openshift-network) isto seleciona o caminho/api/logs/v1/<tenant>; usenetworkpara openshift-network.
-
loki_query_range - Executa uma consulta de intervalo LogQL Loki e retorna streams e linhas de log correspondentes.
Use correspondências de rótulo precisas e uma janela de tempo curta primeiro.
direction(string) - Direção da busca: backward (padrão) ou forward.duration(string) - Duração de retrospectiva a partir de agora quando start/end são omitidos (por exemplo, 5m, 1h). O padrão é 15m.end(string) - Tempo final como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).limit(integer) - Número máximo de linhas de log a retornar. O padrão é 100, máximo 1000.lokiName(string) - Nome do LokiStack. Use loki_list_instances para descobrir valores válidos.lokiNamespace(string) - Namespace Kubernetes do LokiStack. Use loki_list_instances para descobrir valores válidos.query(string) (obrigatório) - String de consulta LogQL.start(string) - Tempo inicial como RFC3339, timestamp Unix, NOW ou expressão relativa a NOW (opcional).tenant(string) - ID do tenant Loki (X-Scope-OrgID). Para modos de gateway LokiStack (ex.: openshift-network) isto seleciona o caminho/api/logs/v1/<tenant>; usenetworkpara openshift-network.
observability/metrics
- list_metrics - PRIMEIRO PASSO OBRIGATÓRIO: Lista todos os nomes de métricas disponíveis no Prometheus.
VOCÊ DEVE CHAMAR ESTA FERRAMENTA ANTES DE QUALQUER OUTRA FERRAMENTA DE CONSULTA
Esta ferramenta DEVE ser chamada primeiro para TODA pergunta de observabilidade para:
- Descobrir quais métricas realmente existem neste ambiente
- Encontrar o nome EXATO da métrica a usar nas consultas
- Evitar consultar métricas inexistentes
- O parâmetro 'name_regex' deve ser sempre fornecido, e ser uma melhor suposição de como a métrica seria nomeada.
- Não use um regex genérico como .* ou .+ no parâmetro 'name_regex'. Use específicos como kube., node., etc.
ORIENTAÇÃO DE PADRÃO REGEX:
- Métricas Prometheus são tipicamente prefixadas (ex.: 'prometheus_tsdb_head_series', 'kube_pod_status_phase')
- Para corresponder métricas CONTENDO uma substring, use curingas: '.tsdb.' corresponde a 'prometheus_tsdb_head_series'
- Sem curingas, o padrão corresponde EXATAMENTE: 'tsdb' só corresponde a uma métrica literalmente nomeada 'tsdb' (que raramente existe)
- Padrões comuns: 'kube_pod.' (pods), '.memory.' (relacionado a memória), 'node_.' (métricas de nó)
- Se você obtiver resultados vazios, tente adicionar '.*' antes/depois do seu termo de busca
NUNCA pule este passo. NUNCA adivinhe nomes de métricas. Nomes de métricas variam entre ambientes.
Após chamar esta ferramenta:
- Pesquise na lista retornada por métricas relevantes
- Use o nome EXATO da métrica encontrado nas consultas subsequentes
- Se nenhuma métrica relevante existir, informe o usuário
-
name_regex(string) (obrigatório) - Padrão regex para filtrar nomes de métricas. IMPORTANTE: Nomes de métricas são tipicamente prefixados (ex.: 'prometheus_tsdb_head_series'). Use curingas para corresponder substrings: '.tsdb.' corresponde a qualquer métrica contendo 'tsdb', enquanto 'tsdb' só corresponde à string exata 'tsdb'. Exemplos: 'http_.' (começa com http_), '.memory.' (contém memory), 'node_.' (começa com node_). Este parâmetro é obrigatório. Não passe regex genérico como '.*' ou '.+'. -
execute_instant_query - Executa uma consulta instantânea PromQL para obter valores atuais/em um ponto no tempo.
PRÉ-REQUISITO: Você DEVE chamar list_metrics primeiro para verificar se a métrica existe
QUANDO USAR:
- Perguntas de estado atual: "Qual é a taxa de erro atual?"
- Instantâneos em um ponto no tempo: "Quantos pods estão em execução?"
- Valores mais recentes: "Quais pods estão no estado Pending?"
O parâmetro 'query' DEVE usar nomes de métricas retornados por list_metrics.
-
query(string) (obrigatório) - String de consulta PromQL usando nomes de métricas verificados via list_metrics -
time(string) - Tempo de avaliação como RFC3339 ou timestamp Unix. Omita ou use 'NOW' para o tempo atual. -
execute_range_query - Executa uma consulta de intervalo PromQL para obter dados de série temporal ao longo de um período.
PRÉ-REQUISITO: Você DEVE chamar list_metrics primeiro para verificar se a métrica existe
QUANDO USAR:
- Tendências ao longo do tempo: "Qual foi o uso de CPU na última hora?"
- Cálculos de taxa: "Quantas requisições por segundo?"
- Análise histórica: "Houve reinicializações nos últimos 5 minutos?"
PARÂMETROS DE TEMPO:
-
'duration': Retrospectiva a partir de agora (ex.: "5m", "1h", "24h")
-
'step': Resolução dos pontos de dados (ex.: "1m" para duração de 1 hora, "5m" para duração de 24 horas) O parâmetro 'query' DEVE usar nomes de métricas retornados por list_metrics.
duration(string) - Duração para olhar para trás a partir de agora (ex.: '1h', '30m', '1d', '2w') (opcional)end(string) - Tempo final como RFC3339 ou timestamp Unix (opcional). UseNOWpara o tempo atual.query(string) (obrigatório) - String de consulta PromQL usando nomes de métricas verificados via list_metricsstart(string) - Tempo inicial como RFC3339 ou timestamp Unix (opcional)step(string) (obrigatório) - Largura do passo de resolução da consulta (ex.: '15s', '1m', '1h'). Escolha com base no intervalo de tempo: intervalos mais curtos usam passos menores.
-
show_timeseries - Exibe os resultados como um gráfico de séries temporais interativo.
Esta ferramenta funciona como execute_range_query, mas renderiza os resultados como um gráfico visual nos clientes de interface. Use-a quando o usuário quiser ver um gráfico ou visualização de dados de séries temporais e usar recursos visuais para fornecer a resposta. Use show_timeseries como a última chamada de ferramenta depois que todas as outras chamadas de ferramentas Prometheus forem finalizadas.
PARÂMETROS DE TEMPO:
- 'duration': Olhar para trás a partir de agora (ex.: "5m", "1h", "24h")
- 'step': Resolução dos pontos de dados (ex.: "1m" para duração de 1 hora, "5m" para duração de 24 horas)
- 'title': Um título descritivo do gráfico (ex.: "Taxa de Erros da API na Última Hora")
- 'description': Uma explicação do significado ou contexto do gráfico (ex.: "Mostra a taxa de erros HTTP 5xx por segundo, dividida por pod")
O parâmetro 'query' DEVE ser uma consulta de intervalo e deve usar nomes de métricas retornados por list_metrics.
-
description(string) - Explicação do significado ou contexto do gráfico (ex.: 'Mostra a taxa de erros HTTP 5xx por segundo, dividida por pod'). Exibida abaixo do título quando fornecida. -
duration(string) - Duração para olhar para trás a partir de agora (ex.: '1h', '30m', '1d', '2w') (opcional) -
end(string) - Tempo final como RFC3339 ou timestamp Unix (opcional). UseNOWpara o tempo atual. -
query(string) (obrigatório) - String de consulta PromQL usando nomes de métricas verificados via list_metrics -
start(string) - Tempo inicial como RFC3339 ou timestamp Unix (opcional) -
step(string) (obrigatório) - Largura do passo de resolução da consulta (ex.: '15s', '1m', '1h'). Escolha com base no intervalo de tempo: intervalos mais curtos usam passos menores. -
title(string) - Título legível do gráfico descrevendo o que a consulta mostra (ex.: 'Taxa de Erros da API na Última Hora'). Exibido acima do gráfico quando fornecido. -
get_label_names - Obtém todos os nomes de rótulos (dimensões) disponíveis para filtrar uma métrica.
QUANDO USAR (após chamar list_metrics):
- Para descobrir como filtrar métricas (por namespace, pod, serviço, etc.)
- Antes de construir correspondências de rótulos em consultas PromQL
O parâmetro 'metric' deve usar um nome de métrica da saída de list_metrics.
-
end(string) - Tempo final para descoberta de rótulos como RFC3339 ou timestamp Unix (opcional, padrão é agora) -
metric(string) - Nome da métrica (de list_metrics) para obter nomes de rótulos. Deixe vazio para todas as métricas. -
start(string) - Tempo inicial para descoberta de rótulos como RFC3339 ou timestamp Unix (opcional, padrão é 1 hora atrás) -
get_label_values - Obtém todos os valores únicos para um rótulo específico.
QUANDO USAR (após chamar list_metrics e get_label_names):
- Para encontrar valores exatos de rótulos para filtragem (nomes de namespaces, nomes de pods, etc.)
- Para ver quais valores existem antes de construir consultas
O parâmetro 'metric' deve usar um nome de métrica da saída de list_metrics.
-
end(string) - Tempo final para descoberta de valores de rótulos como RFC3339 ou timestamp Unix (opcional, padrão é agora) -
label(string) (obrigatório) - Nome do rótulo (de get_label_names) para obter valores -
metric(string) - Nome da métrica (de list_metrics) para escopar os valores de rótulos. Deixe vazio para todas as métricas. -
start(string) - Tempo inicial para descoberta de valores de rótulos como RFC3339 ou timestamp Unix (opcional, padrão é 1 hora atrás) -
get_series - Obtém séries temporais que correspondem aos seletores e visualiza a cardinalidade.
QUANDO USAR (opcional, após chamar list_metrics):
- Para verificar se os filtros de rótulos correspondem às séries esperadas antes de consultar
- Para verificar a cardinalidade e evitar consultas lentas
ORIENTAÇÃO SOBRE CARDINALIDADE:
- <100 séries: Seguro
- 100-1000: Geralmente ok
-
1000: Adicione mais filtros de rótulos
O seletor deve usar nomes de métricas da saída de list_metrics.
-
end(string) - Tempo final para descoberta de séries como RFC3339 ou timestamp Unix (opcional, padrão é agora) -
matches(string) (obrigatório) - Seletor de séries PromQL usando nomes de métricas de list_metrics -
start(string) - Tempo inicial para descoberta de séries como RFC3339 ou timestamp Unix (opcional, padrão é 1 hora atrás) -
get_alerts - Obtém alertas do Alertmanager.
QUANDO USAR:
- COMECE AQUI ao investigar problemas: se o usuário perguntar sobre coisas quebrando, erros, falhas, indisponibilidades, serviços fora do ar ou qualquer coisa dando errado no cluster
- Quando o usuário mencionar um nome de alerta específico - use esta ferramenta para obter os rótulos completos do alerta (namespace, pod, serviço, etc.) que são essenciais para investigação adicional com outras ferramentas
- Para ver alertas atualmente disparando no cluster
- Para verificar quais alertas estão ativos, silenciados ou inibidos
- Para entender o que está acontecendo antes de mergulhar em métricas ou logs
DICA DE INVESTIGAÇÃO: Os rótulos de alertas frequentemente contêm os identificadores exatos (nomes de pods, namespaces, nomes de jobs) necessários para consultas direcionadas com ferramentas Prometheus.
FILTRAGEM:
- Use 'active' para filtrar apenas alertas ativos (não resolvidos)
- Use 'silenced' para filtrar alertas silenciados
- Use 'inhibited' para filtrar alertas inibidos
- Use 'filter' para aplicar correspondências de rótulos (ex.: "alertname=HighCPU")
- Use 'receiver' para filtrar alertas por nome do receptor
Todos os parâmetros de filtro são opcionais. Sem filtros, todos os alertas são retornados.
-
active(boolean) - Filtrar apenas alertas ativos (true/false, opcional) -
filter(string) - Correspondências de rótulos para filtrar alertas (ex.: 'alertname=HighCPU', opcional) -
inhibited(boolean) - Filtrar apenas alertas inibidos (true/false, opcional) -
receiver(string) - Nome do receptor para filtrar alertas (opcional) -
silenced(boolean) - Filtrar apenas alertas silenciados (true/false, opcional) -
unprocessed(boolean) - Filtrar apenas alertas não processados (true/false, opcional) -
get_silences - Obtém silêncios do Alertmanager.
QUANDO USAR:
- Para ver quais alertas estão atualmente silenciados
- Para verificar silêncios ativos, pendentes ou expirados
- Para investigar por que certos alertas não estão disparando notificações
FILTRAGEM:
- Use 'filter' para aplicar correspondências de rótulos para encontrar silêncios específicos
Silêncios são usados para silenciar temporariamente alertas com base em correspondências de rótulos. Esta ferramenta ajuda você a entender o que está atualmente silenciado no seu ambiente.
filter(string) - Correspondências de rótulos para filtrar silêncios (ex.: 'alertname=HighCPU', opcional)
observability/otelcol
-
otelcol_list_components - Lista os componentes disponíveis do OpenTelemetry Collector (receptores, processadores, exportadores, extensões, conectores) para uma determinada versão.
version(string) - Versão do Collector (ex.: 'v0.100.0'). Padrão é a versão mais recente disponível.
-
otelcol_get_component_schema - Obtém o esquema JSON para as opções de configuração de um componente do OpenTelemetry Collector.
component_name(string) (obrigatório) - Nome do componente de otelcol_list_components (ex.: 'otlp', 'batch', 'debug')component_type(string) (obrigatório) - Tipo do componente: receiver, processor, exporter, extension, connectorversion(string) - Versão do Collector (ex.: 'v0.100.0'). Padrão é a versão mais recente disponível.
-
otelcol_validate_config - Valida uma configuração de componente do OpenTelemetry Collector contra seu esquema JSON.
component_name(string) (obrigatório) - Nome do componente de otelcol_list_components (ex.: 'otlp', 'batch', 'debug')component_type(string) (obrigatório) - Tipo do componente: receiver, processor, exporter, extension, connectorconfig(string) (obrigatório) - Configuração para validar como string YAML ou JSONformat(string) - Formato da configuração: 'yaml' (padrão) ou 'json'version(string) - Versão do Collector (ex.: 'v0.100.0'). Padrão é a versão mais recente disponível.
-
otelcol_get_versions - Lista as versões disponíveis do OpenTelemetry Collector e identifica a mais recente.
observability/traces
-
tempo_list_instances - Lista todas as instâncias Tempo disponíveis no cluster Kubernetes. Chame esta ferramenta primeiro para descobrir as instâncias Tempo disponíveis antes de usar outras ferramentas Tempo, pois os valores de namespace, nome e tenant retornados são parâmetros obrigatórios para todas as outras ferramentas Tempo. Sempre imprima a saída desta ferramenta em uma tabela.
-
tempo_get_trace_by_id - Recupera um único trace distribuído pelo seu ID de trace do Tempo. Retorna o trace completo com todos os seus spans, incluindo nomes de serviços, nomes de operações, durações e atributos. Use esta ferramenta quando você já tiver um ID de trace específico, ex.: de resultados de busca ou logs.
end(string) - Fim opcional do intervalo de tempo no formato RFC 3339, ex.: "2025-01-02T00:00:00Z". Reduz o intervalo de tempo para melhorar o desempenho da consulta.start(string) - Início opcional do intervalo de tempo no formato RFC 3339, ex.: "2025-01-01T00:00:00Z". Reduz o intervalo de tempo para melhorar o desempenho da consulta.tempoName(string) (obrigatório) - O nome da instância Tempo para consultar. Use tempo_list_instances para descobrir os nomes de instâncias disponíveis.tempoNamespace(string) (obrigatório) - O namespace Kubernetes onde a instância Tempo está implantada. Use tempo_list_instances para descobrir os namespaces disponíveis.tenant(string) - O tenant para consultar. Este parâmetro é obrigatório para instâncias multi-tenant. Use tempo_list_instances para descobrir os tenants disponíveis para cada instância.traceid(string) (obrigatório) - O ID do trace para recuperar, ex.: "26dad4a0e2b0dd9a440dd5ff203a24a4".
-
tempo_search_traces - Busca traces distribuídos no Tempo usando TraceQL. Use esta ferramenta para encontrar traces que correspondam a critérios específicos, como nome do serviço, código de status HTTP, duração ou outros atributos de span ou recurso.
IMPORTANTE — solicitações de traces "lentos" ou "longos": NÃO adivinhe um limite de duração. Primeiro chame esta ferramenta SEM um filtro de duração para estabelecer uma linha de base de latência, depois use essa linha de base para definir um limite razoável. Ambas as etapas são obrigatórias — NÃO pule a segunda busca com o filtro de duração. Pule este processo de duas etapas apenas quando o usuário fornecer uma duração explícita (ex.: "encontre traces mais lentos que 2s").
end(string) - Fim do intervalo de tempo no formato RFC 3339, ex.: "2025-01-01T00:00:00Z". Use "NOW" para o tempo atual. Tanto o início quanto o fim devem ser fornecidos para buscar todo o intervalo de tempo; se omitidos, apenas uma pequena janela de dados recentes é buscada.limit(integer) - Número máximo de traces para retornar. Padrão é o limite do lado do servidor se não especificado.query(string) (obrigatório) - Uma expressão de consulta TraceQL. Formato: query: "{ <filters joined by &&> }" Filtros:- nome do serviço: resource.service.name="" (string, use aspas)
- código de status HTTP: span.http.response.status_code=
(número, sem aspas) - duração: duration><value like 100ms, 2s, 5m> (sem aspas)
- status de erro: status=error (palavra-chave, SEM aspas — NÃO escreva status="error")
IMPORTANTE: valores de status (error, ok, unset) são palavras-chave, NÃO strings. Escreva status=error, NUNCA status="error".
Operadores: =, !=, >, <, >=, <=
Atributos comuns:
- resource.service.name (nome do serviço)
- resource.k8s.namespace.name (namespace Kubernetes)
- resource.k8s.deployment.name (deployment Kubernetes)
- resource.k8s.statefulset.name (statefulset Kubernetes)
- resource.k8s.daemonset.name (daemonset Kubernetes)
- resource.k8s.replicaset.name (replicaset Kubernetes)
- resource.k8s.pod.name (pod Kubernetes)
- resource.k8s.container.name (container Kubernetes)
- resource.k8s.job.name (job Kubernetes)
- resource.k8s.cronjob.name (cronjob Kubernetes)
- resource.k8s.node.name (nó Kubernetes)
- resource.k8s.cluster.name (cluster Kubernetes)
- span.http.response.status_code (código de resposta HTTP)
- span.http.request.method (método HTTP como GET, POST)
- span.url.full (URL da requisição)
- name (nome do span / nome da operação, ex.: "GET /api/users")
- duration (duração do trace, ex.: 100ms, 2s)
- status (status do trace: ok, error, unset)
Nota: instrumentação mais antiga pode usar nomes de atributos HTTP legados (ex.: span.http.status_code em vez de span.http.response.status_code).
Se uma consulta não retornar resultados, tente tempo_search_tags para verificar quais atributos existem.
IMPORTANTE:
- Sempre envolva filtros em chaves { }.
- NÃO use sintaxe SQL, PromQL ou Lucene.
- NÃO omita o prefixo "resource." ou "span." dos nomes de atributos.
- Quando o usuário se referir a um tipo de recurso Kubernetes (deployment, pod, namespace, etc.), use o atributo resource.k8s.* correspondente, NÃO resource.service.name.
Exemplos:
- { resource.service.name="frontend" }
- { resource.k8s.deployment.name="checkout" && span.http.response.status_code>=500 }
- { status=error && duration>2s }
Se não tiver certeza de quais atributos usar nos filtros, use tempo_search_tags para descobrir os atributos disponíveis antes de montar uma consulta.
-
spss (integer) - Número máximo de spans correspondentes a retornar por trace.
-
start (string) - Início do intervalo de tempo no formato RFC 3339, ex.: "2025-01-01T00:00:00Z".
Use "NOW" para o horário atual.
Tanto início quanto fim devem ser fornecidos para pesquisar todo o intervalo de tempo; se omitidos, apenas uma pequena janela de dados recentes é pesquisada.
-
tempoName (string) (obrigatório) - O nome da instância do Tempo a ser consultada. Use tempo_list_instances para descobrir os nomes de instâncias disponíveis.
-
tempoNamespace (string) (obrigatório) - O namespace Kubernetes onde a instância do Tempo está implantada. Use tempo_list_instances para descobrir os namespaces disponíveis.
-
tenant (string) - O tenant a ser consultado. Este parâmetro é obrigatório para instâncias multi-tenant. Use tempo_list_instances para descobrir os tenants disponíveis para cada instância.
-
tempo_search_tags - Lista os nomes de tags disponíveis (chaves de atributos) no Tempo, agrupados por escopo.
Use esta ferramenta para descobrir quais atributos estão disponíveis para construir consultas TraceQL com tempo_search_traces.
Por exemplo, esta ferramenta pode revelar nomes de tags como "service.name" (no escopo "resource") ou "http.response.status_code" (no escopo "span").
Para usá-los em consultas TraceQL, prefixe-os com seu escopo, ex.: "resource.service.name" ou "span.http.response.status_code".
end (string) - Fim opcional do intervalo de tempo (no formato RFC 3339, ex.: "2025-01-01T00:00:00Z") para filtrar quais traces são considerados ao listar tags.
limit (integer) - Número máximo de nomes de tags a retornar por escopo.
maxStaleValues (integer) - Número máximo de blocos consecutivos sem novos nomes de tags antes que a pesquisa pare antecipadamente. Valores maiores são mais completos, porém mais lentos.
query (string) - Consulta TraceQL opcional para filtrar quais traces são considerados ao listar tags,
ex.: '{ resource.service.name="payment-service" }' para mostrar apenas tags presentes em traces do serviço 'payment-service'.
scope (string) - Filtra tags para um escopo específico. Um de:
"resource" (atributos de nível de serviço como service.name),
"span" (atributos de span individuais como http.response.status_code),
"intrinsic" (campos integrados como duration, status, name).
Se omitido, tags de todos os escopos são retornadas.
start (string) - Início opcional do intervalo de tempo (no formato RFC 3339, ex.: "2025-01-01T00:00:00Z") para filtrar quais traces são considerados ao listar tags.
tempoName (string) (obrigatório) - O nome da instância do Tempo a ser consultada. Use tempo_list_instances para descobrir os nomes de instâncias disponíveis.
tempoNamespace (string) (obrigatório) - O namespace Kubernetes onde a instância do Tempo está implantada. Use tempo_list_instances para descobrir os namespaces disponíveis.
tenant (string) - O tenant a ser consultado. Este parâmetro é obrigatório para instâncias multi-tenant. Use tempo_list_instances para descobrir os tenants disponíveis para cada instância.
-
tempo_search_tag_values - Lista os valores conhecidos para uma tag específica (chave de atributo) no Tempo.
Use esta ferramenta para descobrir quais valores existem para uma determinada tag, ex.: para encontrar todos os nomes de serviços (valores de "resource.service.name") ou todos os métodos HTTP (valores de "span.http.request.method").
Isso é útil para construir consultas TraceQL precisas com tempo_search_traces.
end (string) - Fim opcional do intervalo de tempo (no formato RFC 3339, ex.: "2025-01-01T00:00:00Z") para filtrar quais traces são considerados ao listar valores.
limit (integer) - Número máximo de valores de tags a retornar.
maxStaleValues (integer) - Número máximo de blocos consecutivos sem novos valores antes que a pesquisa pare antecipadamente. Valores maiores são mais completos, porém mais lentos.
query (string) - Consulta TraceQL opcional para filtrar quais traces são considerados ao listar valores,
ex.: '{ resource.service.name="payment-service" }' para mostrar apenas valores de tags do serviço 'payment-service'.
start (string) - Início opcional do intervalo de tempo (no formato RFC 3339, ex.: "2025-01-01T00:00:00Z") para filtrar quais traces são considerados ao listar valores.
tag (string) (obrigatório) - O nome totalmente qualificado da tag para obter valores, incluindo o prefixo de escopo, ex.: "resource.service.name" ou "span.http.response.status_code".
Use tempo_search_tags para descobrir os nomes de tags disponíveis.
tempoName (string) (obrigatório) - O nome da instância do Tempo a ser consultada. Use tempo_list_instances para descobrir os nomes de instâncias disponíveis.
tempoNamespace (string) (obrigatório) - O namespace Kubernetes onde a instância do Tempo está implantada. Use tempo_list_instances para descobrir os namespaces disponíveis.
tenant (string) - O tenant a ser consultado. Este parâmetro é obrigatório para instâncias multi-tenant. Use tempo_list_instances para descobrir os tenants disponíveis para cada instância.
tekton
-
tekton_pipeline_start - Inicia um Pipeline Tekton criando um PipelineRun que o referencia
name (string) (obrigatório) - Nome do Pipeline a iniciar
namespace (string) - Namespace do Pipeline
params (object) - Valores de parâmetros a passar para o Pipeline. As chaves são nomes de parâmetros; os 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 - Gerencia 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 - Obtém logs de todos os TaskRuns pertencentes a um PipelineRun Tekton. Use 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 do passo a incluir nos TaskRuns correspondentes
tail (integer) - Número de linhas a recuperar do final de cada log de container (padrão: 100)
task (string) - Nome da tarefa do pipeline para filtrar (rótulo tekton.dev/pipelineTask)
-
tekton_task_start - Inicia uma Task Tekton criando um TaskRun que a referencia
name (string) (obrigatório) - Nome da Task a iniciar
namespace (string) - Namespace da Task
params (object) - Valores de parâmetros a passar para a Task. As chaves são nomes de parâmetros; os 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 - Reinicia 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 - Obtém 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 do passo a incluir. Se omitido, logs de todos os passos 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 - Realiza 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 - Lista aplicações nos namespaces da malha
namespace (string) - Namespace opcional para filtrar aplicações (padrão: todos os namespaces)
-
list-istio-config - Lista 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 - Lista todos os namespaces com seu status de injeção de sidecar e rótulos Istio
-
mesh-list-services - Lista serviços nos namespaces da malha
namespace (string) - Namespace opcional para filtrar serviços (padrão: todos os namespaces)
-
mesh-list-workloads - Lista workloads nos namespaces da malha
namespace (string) - Namespace opcional para filtrar workloads (padrão: todos os namespaces)
-
mesh-health-check - Realiza uma avaliação abrangente da saúde do service mesh Istio, incluindo o status do plano de controle e do plano de dados
namespace (string) - Namespace opcional para focar a verificação de saúde (padrão: todos os namespaces)
-
mesh-topology - Mostra a topologia do mesh, incluindo componentes do plano de controle e conectividade do cluster
-
traffic-topology - Analisa a topologia de tráfego do service mesh, mostrando dependências de serviços, fluxo de tráfego e padrões de comunicação
namespaces (string) (obrigatório) - Lista de namespaces separados por vírgula para incluir no gráfico, ou 'all' para incluir todos os namespaces acessíveis do mesh
-
service-troubleshoot - Investiga erros de serviço usando logs, traces e configuração do Istio para identificar causas raiz
namespace (string) (obrigatório) - Namespace onde o serviço está implantado
service (string) (obrigatório) - Nome do serviço para solucionar problemas
workload (string) - Workload ou nome do pod opcional para buscar logs (se omitido, usa o nome do serviço)
-
trace-analysis - Investiga 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 - Revisa e valida a configuração do 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 do Istio
kubevirt
-
vm-troubleshoot - Gera um guia de solução de problemas passo a passo para diagnosticar problemas de VirtualMachine KubeVirt
namespace (string) (obrigatório) - O namespace da VirtualMachine para solucionar problemas
name (string) (obrigatório) - O nome da VirtualMachine para solucionar problemas
-
windows-golden-image - Orienta a criação de uma imagem dourada do Windows por meio do 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
-
hco-status - Gera um relatório de status para o HyperConverged Cluster Operator (HCO) que gerencia o KubeVirt e componentes relacionados
tekton
- pipeline-troubleshoot - Coleta o 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 do Tekton
namespace (string) (obrigatório) - Namespace do PipelineRun para solucionar problemas
name (string) (obrigatório) - Nome do PipelineRun para solucionar problemas
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
Participe da 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