Kubernetes
Conecte-se ao cluster Kubernetes e gerencie pods, deployments, serviços.
Documentação
Servidor MCP Kubernetes
Servidor MCP que pode conectar a um cluster Kubernetes e gerenciá-lo. Suporta carregamento de kubeconfig de múltiplas fontes em ordem de prioridade.
https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed
Instalação e Uso
Pré-requisitos
Antes de usar este servidor MCP com qualquer ferramenta, certifique-se de ter:
- kubectl instalado e no seu PATH
- Um arquivo kubeconfig válido com contextos configurados
- Acesso a um cluster Kubernetes configurado para kubectl (ex.: minikube, Rancher Desktop, GKE, etc.)
- Helm v3 instalado e no seu PATH (sem Tiller). Opcional se você não planeja usar Helm.
Você pode verificar sua conexão executando kubectl get pods em um terminal para garantir que possa conectar ao seu cluster sem problemas de credenciais.
Por padrão, o servidor carrega o kubeconfig de ~/.kube/config. Para opções adicionais de autenticação (variáveis de ambiente, caminhos customizados, etc.), consulte ADVANCED_README.md.
Claude Code
Adicione o servidor MCP ao Claude Code usando o comando integrado:
claude mcp add kubernetes -- npx mcp-server-kubernetes
Isso configurará automaticamente o servidor nas configurações do MCP do seu Claude Code.
Codex
Adicione o servidor MCP ao Codex CLI usando o comando integrado:
codex mcp add kubernetes -- npx mcp-server-kubernetes
Isso registra o servidor globalmente em ~/.codex/config.toml e disponibiliza suas ferramentas em todas as sessões do Codex.
Claude Desktop
Adicione a seguinte configuração ao arquivo de configuração do Claude Desktop:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
Claude Desktop Connector via mcpb
O Servidor MCP Kubernetes também está disponível como uma extensão mcpb (anteriormente dxt). No Claude Desktop, vá para Configurações (Cmd+, no Mac) -> Extensões -> Procurar Extensões e role para encontrar mcp-server-kubernetes no modal. Instale-o e ele instalará e utilizará o kubectl via linha de comando e seu kubeconfig.
Para instalar manualmente, você também pode obter o .mcpb indo até o mais recente Release e baixando-o.
VS Code
Para integração com VS Code, você pode usar o servidor MCP com extensões que suportam o Model Context Protocol:
- Instale uma extensão MCP compatível (como Claude Dev ou clientes MCP similares)
- Configure a extensão para usar este servidor:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"description": "Kubernetes cluster management and operations"
}
}
}
Cursor
O Cursor suporta servidores MCP através de sua integração de IA. Adicione o servidor à sua configuração de MCP do Cursor:
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
O servidor se conectará automaticamente ao seu contexto kubectl atual. Você pode verificar a conexão pedindo ao assistente de IA para listar seus pods ou criar um deployment de teste.
Uso com mcp-chat
mcp-chat é um cliente de chat em CLI para servidores MCP. Você pode usá-lo para interagir com o servidor Kubernetes.
npx mcp-chat --server "npx mcp-server-kubernetes"
Alternativamente, passe a ele seu arquivo de configuração do Claude Desktop existente acima (Linux deve passar o caminho correto para config):
Mac:
npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"
Windows:
npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"
Recursos
- Conectar a um cluster Kubernetes
- API kubectl unificada para gerenciamento de recursos
- Obter ou listar recursos com
kubectl_get - Descrever recursos com
kubectl_describe - Listar recursos com
kubectl_get - Criar recursos com
kubectl_create - Aplicar manifestos YAML com
kubectl_apply - Excluir recursos com
kubectl_delete - Obter logs com
kubectl_logs - Gerenciar contextos kubectl com
kubectl_context - Explicar recursos Kubernetes com
explain_resource - Listar recursos de API com
list_api_resources - Escalar recursos com
kubectl_scale - Atualizar campo(s) de um recurso com
kubectl_patch - Gerenciar rollouts de deployment com
kubectl_rollout - Executar qualquer comando kubectl com
kubectl_generic - Verificar conexão com
ping
- Obter ou listar recursos com
- Operações avançadas
- Escalar deployments com
kubectl_scale(substitui o legadoscale_deployment) - Port forward para pods e serviços com
port_forward - Executar operações Helm
- Instalar, atualizar e desinstalar charts
- Suporte para valores customizados, repositórios e versões
- Instalação baseada em template (
helm_template_apply) para contornar problemas de autenticação - Desinstalação baseada em template (
helm_template_uninstall) para contornar problemas de autenticação
- Operações de limpeza de pods
- Limpar pods problemáticos (
cleanup_pods) nos estados: Evicted, ContainerStatusUnknown, Completed, Error, ImagePullBackOff, CrashLoopBackOff
- Limpar pods problemáticos (
- Operações de gerenciamento de nós
- Cordon, drain e uncordon de nós (
node_management) para operações de manutenção e escalonamento
- Cordon, drain e uncordon de nós (
- Escalar deployments com
- Prompt de Solução de Problemas (
k8s-diagnose)- Guia através de um fluxo sistemático de solução de problemas Kubernetes para pods com base em uma palavra-chave e namespace opcional.
- Modo não destrutivo para acesso somente leitura e criação/atualização de clusters
- Mascaramento de segredos para segurança (mascara dados sensíveis em comandos
kubectl get secrets, não afeta logs) - Observabilidade OpenTelemetry (opt-in)
- Rastreamento distribuído para todas as chamadas de ferramentas
- Exportação para Jaeger, Tempo, Grafana ou qualquer backend OTLP
- Estratégias de amostragem configuráveis
- Atributos de span ricos (nome da ferramenta, duração, contexto K8s, erros)
- Consulte docs/OBSERVABILITY.md para detalhes
Observabilidade
O servidor MCP Kubernetes inclui integração OpenTelemetry opcional para observabilidade abrangente. Este recurso está desabilitado por padrão e pode ser habilitado via variáveis de ambiente ou configuração Helm.
Início Rápido
Habilite a observabilidade com variáveis de ambiente:
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
npx mcp-server-kubernetes
O Que é Rastreado
- Todas as chamadas de ferramentas: kubectl_get, kubectl_apply, kubectl_logs, etc.
- Duração da execução: Quanto tempo cada operação leva
- Status de sucesso/falha: Rastreamento automático de erros
- Contexto Kubernetes: Namespace, contexto, tipo de recurso
- Metadados ricos: Host, processo e atributos customizados
Backends Suportados
Funciona com qualquer backend compatível com OTLP:
- Jaeger (open source)
- Grafana Tempo (open source)
- Grafana Cloud (comercial)
- Datadog, New Relic, Honeycomb, Lightstep, AWS X-Ray
Configuração
Consulte docs/OBSERVABILITY.md para documentação abrangente, incluindo:
- Opções de configuração
- Exemplos de implantação (Kubernetes, Helm, Claude Code)
- Estratégias de amostragem
- Melhores práticas de produção
- Guia de solução de problemas
Exemplo com Jaeger
# Start Jaeger
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latest
# Enable telemetry
export ENABLE_TELEMETRY=true
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_TRACES_SAMPLER=always_on
# Run server
npx mcp-server-kubernetes
# View traces: http://localhost:16686
Prompts
O servidor MCP Kubernetes inclui prompts especializados para auxiliar em operações comuns de diagnóstico.
Prompt /k8s-diagnose
Este prompt fornece um fluxo sistemático de solução de problemas para pods Kubernetes. Ele aceita um keyword para identificar pods relevantes e um namespace opcional para restringir a busca.
A saída do prompt guiará você por um fluxo autônomo de solução de problemas, fornecendo instruções para identificar problemas, coletar evidências e sugerir etapas de correção.
Desenvolvimento Local
Certifique-se de que você tenha bun instalado. Clone o repositório e instale as dependências:
git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
Fluxo de Desenvolvimento
- Inicie o servidor em modo de desenvolvimento (observa mudanças de arquivos):
bun run dev
- Execute testes unitários:
bun run test
- Construa o projeto:
bun run build
- Teste local com Inspector
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
- Teste local com Claude Desktop
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}
- Teste local com mcp-chat
bun run chat
Contribuindo
Consulte o arquivo CONTRIBUTING.md para detalhes.
Avançado
Modo Não Destrutivo
Você pode executar o servidor em um modo não destrutivo que desabilita todas as operações destrutivas (excluir pods, excluir deployments, excluir namespaces, etc.):
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true npx mcp-server-kubernetes
Para configuração do Claude Desktop com modo não destrutivo:
{
"mcpServers": {
"kubernetes-readonly": {
"command": "npx",
"args": ["mcp-server-kubernetes"],
"env": {
"ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS": "true"
}
}
}
}
Comandos Disponíveis no Modo Não Destrutivo
Todas as operações somente leitura e de criação/atualização de recursos permanecem disponíveis:
- Informação de Recursos:
kubectl_get,kubectl_describe,kubectl_logs,explain_resource,list_api_resources - Criação/Modificação de Recursos:
kubectl_apply,kubectl_create,kubectl_scale,kubectl_patch,kubectl_rollout - Operações Helm:
install_helm_chart,upgrade_helm_chart,helm_template_apply,helm_template_uninstall - Conectividade:
port_forward,stop_port_forward - Gerenciamento de Contexto:
kubectl_context
Comandos Desabilitados no Modo Não Destrutivo
As seguintes operações destrutivas estão desabilitadas:
kubectl_delete: Excluir quaisquer recursos Kubernetesuninstall_helm_chart: Desinstalar charts Helmcleanup: Limpeza de recursos gerenciadoscleanup_pods: Limpar pods problemáticosnode_management: Operações de gerenciamento de nós (podem drenar nós)kubectl_generic: Acesso geral a comandos kubectl (pode incluir operações destrutivas)
Para recursos avançados adicionais, consulte o ADVANCED_README.md e também a pasta docs para informações específicas sobre helm_install, helm_template_apply, gerenciamento de nós e limpeza de pods.
Arquitetura
Consulte este link DeepWiki para uma visão geral de arquitetura mais aprofundada criada por Devin.
Esta seção descreve a arquitetura de alto nível do servidor MCP Kubernetes.
Fluxo de Solicitação
O diagrama de sequência abaixo ilustra como as solicitações fluem pelo sistema:
sequenceDiagram
participant Client
participant Transport as Transport Layer
participant Server as MCP Server
participant Filter as Tool Filter
participant Handler as Request Handler
participant K8sManager as KubernetesManager
participant K8s as Kubernetes API
Note over Transport: StdioTransport or<br>SSE Transport
Client->>Transport: Send Request
Transport->>Server: Forward Request
alt Tools Request
Server->>Filter: Filter available tools
Note over Filter: Remove destructive tools<br>if in non-destructive mode
Filter->>Handler: Route to tools handler
alt kubectl operations
Handler->>K8sManager: Execute kubectl operation
K8sManager->>K8s: Make API call
else Helm operations
Handler->>K8sManager: Execute Helm operation
K8sManager->>K8s: Make API call
else Port Forward operations
Handler->>K8sManager: Set up port forwarding
K8sManager->>K8s: Make API call
end
K8s-->>K8sManager: Return result
K8sManager-->>Handler: Process response
Handler-->>Server: Return tool result
else Resource Request
Server->>Handler: Route to resource handler
Handler->>K8sManager: Get resource data
K8sManager->>K8s: Query API
K8s-->>K8sManager: Return data
K8sManager-->>Handler: Format response
Handler-->>Server: Return resource data
end
Server-->>Transport: Send Response
Transport-->>Client: Return Final Response
Consulte este link DeepWiki para uma visão geral de arquitetura mais aprofundada criada por Devin.
Publicando nova versão
Vá para a página de releases, clique em "Draft New Release", clique em "Choose a tag" e crie uma nova tag digitando um novo número de versão usando o formato semver "v{major}.{minor}.{patch}". Em seguida, escreva um título de release "Release v{major}.{minor}.{patch}" e a descrição/changelog se necessário e clique em "Publish Release".
Isso criará uma nova tag que acionará um novo build de release via workflow cd.yml. Após o sucesso, a nova versão será publicada no npm. Observe que não há necessidade de atualizar o package.json manualmente, pois o workflow atualizará automaticamente o número da versão no arquivo package.json e fará um commit para a main.
Não planejado
Adicionar clusters ao kubectx.
Histórico de Estrelas
🖊️ Citar
Se você achar este repositório útil, por favor cite:
@software{Patel_MCP_Server_Kubernetes_2024,
author = {Patel, Paras and Sonwalkar, Suyog},
month = jul,
title = {{MCP Server Kubernetes}},
url = {https://github.com/Flux159/mcp-server-kubernetes},
version = {2.5.0},
year = {2024}
}