/ Diretório / Playground / Kubernetes MCP Server
● Comunidade containers 🔑 Requer sua chave

Kubernetes MCP Server

por containers · containers/kubernetes-mcp-server

kubectl, mas controlado pelo Claude — usa seu kubeconfig + RBAC, suporta qualquer cluster (k8s vanilla, OpenShift, EKS, GKE, AKS, k3s).

O kubernetes-mcp-server (org containers) é um binário Go único que fala com qualquer servidor de API Kubernetes usando seu kubeconfig existente. Ele expõe os verbos padrão (list/get/apply/delete/log/exec) como ferramentas MCP respeitando seu RBAC — então o princípio do menor privilégio ainda funciona. Também suporta extensões OpenShift.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

kubernetes-mcp-containers.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kubernetes-mcp-containers",
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "kubernetes-mcp-containers": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "kubernetes-mcp-server@latest"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add kubernetes-mcp-containers -- npx -y kubernetes-mcp-server@latest

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: Kubernetes MCP Server

Triagem de incidente de produção no Kubernetes

👤 SREs / engenheiros de plataforma ⏱ ~10 min intermediate

Quando usar: Um app está com mau comportamento em prod e você precisa verificar pods, eventos e logs sem Alt+Tab.

Pré-requisitos
  • kubeconfig com acesso ao cluster — Padrão aws eks update-kubeconfig ou equivalente
Fluxo
  1. Encontre pods não saudáveis
    k8s: no contexto prod-us-east, namespace checkout, liste pods que não estão no estado Running. Inclua motivo + contagem de reinicializações.✓ Copiado
    → Pods mostrados com estado, motivo e reinicializações
  2. Obtenha eventos
    Obtenha eventos nesse namespace dos últimos 30 minutos, ordenados por tempo.✓ Copiado
    → Lista de eventos; OOMKilled ou ImagePullBackOff visíveis se presentes
  3. Obtenha logs
    Para o pod com o reinício mais recente, capture os logs do container anterior (últimas 200 linhas).✓ Copiado
    → Stack trace / causa visível
  4. Diagnostique
    Sintetize: qual é a causa-raiz provável e o que devemos fazer? Seja específico.✓ Copiado
    → Próximo passo concreto (ex: aumentar limite de memória + fazer rollout)

Resultado: Triagem em menos de 5 minutos com nomes de pods + linhas de log citados.

Armadilhas
  • Logs de um container anterior ausente não estão disponíveis — Se o pod reiniciou apenas uma vez, verifique os logs do container atual e o anterior apenas se crashou
  • Contexto errado — Sempre especifique o contexto por chamada; não dependa do drift do current-context
Combine com: sentry · github

Crie um Deployment usando contexto do cluster

👤 Devs de app escrevendo manifests ⏱ ~20 min intermediate

Quando usar: Você precisa de um novo Deployment e quer que corresponda às convenções do cluster.

Fluxo
  1. Inspecione um existente
    k8s: obtenha um Deployment existente de amostra no namespace apps. Quero corresponder seus labels, security context e resources.✓ Copiado
    → Retorna um YAML representativo de Deployment
  2. Crie o novo
    Agora escreva um novo Deployment para image-resizer:1.2.0, 2 réplicas, porta 8080, seguindo as convenções.✓ Copiado
    → YAML que respeita as convenções do cluster
  3. Dry-run de apply
    Aplique com --dry-run=server. Reporte quaisquer erros de validação.✓ Copiado
    → Validação server-side bem-sucedida; sem drift de ApplyConfiguration

Resultado: Manifest corresponde aos padrões do cluster na primeira tentativa.

Armadilhas
  • Esquecer os labels PSA — Leia primeiro os labels pod-security do namespace
Combine com: filesystem · github

Audite releases Helm entre namespaces

👤 Time de plataforma ⏱ ~25 min intermediate

Quando usar: Trimestral: encontre versões de charts desatualizadas em toda a frota.

Fluxo
  1. Liste todos os releases
    k8s/Helm: liste todos os releases em cada namespace. Inclua chart + versão + appVersion.✓ Copiado
    → Tabela completa de releases
  2. Destaque os desatualizados
    Para cada um, compare com a versão mais recente do chart (você pode buscar). Sinalize releases mais de 2 versões menores atrás.✓ Copiado
    → Conjunto sinalizado com atual vs mais recente

Resultado: Backlog de upgrades com ordem de prioridade.

Armadilhas
  • Restos mistos do Helm 2 — Filtre para releases v3; o MCP só suporta Helm 3

Combinações

Combine com outros MCPs para 10× de alavancagem

kubernetes-mcp-containers + sentry

Correlacione erros com reinicializações de pods

Sentry: pico de erros às 14:00. k8s: alguma reinicialização de pod no namespace checkout nesse horário?✓ Copiado
kubernetes-mcp-containers + github

Abra PR com correção de manifest

k8s: identifique o limite de memória incorreto. GitHub: abra um PR aumentando-o em helm/values.yaml.✓ Copiado
kubernetes-mcp-containers + mcp-grafana

Faça referência cruzada do estado k8s com Prometheus

k8s: pod está reiniciando. Grafana: acesse o histórico de uso de memória desse pod.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
list_resources context?, namespace?, kind: str, label_selector? Descoberta 1 API call
get_resource context?, namespace?, kind, name Inspecionar item específico 1 call
apply_yaml context?, yaml: str, dry_run?: bool Criar ou atualizar 1 call
delete_resource context?, namespace?, kind, name Remover 1 call
get_logs context?, namespace, pod, container?, previous?, tail? Inspecionar runtime 1 call
exec context?, namespace, pod, container?, command: str[] Diagnosticar dentro do container 1 call
list_events context?, namespace, since? Procurar OOMKilled/ImagePullBackOff 1 call
list_helm_releases context?, namespace? Auditoria Helm 1 call

Custo e limites

O que custa rodar

Cota de API
Limitado pelo QPS do kube-apiserver (padrão ~50)
Tokens por chamada
200–8000 (logs/yaml podem ser grandes)
Monetário
OSS gratuito; fatura do cluster se aplica
Dica
Use --tail em logs agressivamente; nunca faça get pods -o yaml -A em clusters grandes

Segurança

Permissões, segredos, alcance

Escopos mínimos: whatever your kubeconfig user has — RBAC enforced server-side
Armazenamento de credenciais: Arquivo kubeconfig; rotacione via seu provedor cloud
Saída de dados: Apenas seu endpoint kube API
Nunca conceda: cluster-admin to a kubeconfig used with an LLM

Solução de problemas

Erros comuns e correções

Unauthorized / 403

RBAC nega o verbo; verifique kubectl auth can-i para esse usuário

Verificar: kubectl auth can-i get pods -n checkout
Connection refused

VPN desligada, ou contexto aponta para endpoint errado; verifique kubectl cluster-info

Apply rejected: validation error

Execute com dry_run=server primeiro; apresente o erro exato

Logs too large

Use o parâmetro tail; o padrão é o log inteiro

Alternativas

Kubernetes MCP Server vs. outros

AlternativaQuando usarTroca
kubectl-mcp (other forks)Você prefere um binário diferenteMenos ativamente mantido
Lens / k9sVocê quer UI interativa, não LLMSem camada de automação
Argo CD MCPVocê é GitOps-onlyIndireto; deploya via Git, não API direta

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills