MCP Server for Kubernetes

Um servidor para gerenciar clusters Kubernetes usando o Model Context Protocol.

Documentação

Servidor MCP Kubernetes

Um servidor Model Context Protocol (MCP) para Kubernetes, com suporte a streaming HTTP em blocos, prompts avançados de solução de problemas e cobertura completa de recursos/ferramentas do Kubernetes.


Pré-requisitos

  • Node.js v18+ (para desenvolvimento/build local)
  • Docker (para conteinerização)
  • Acesso a um cluster Kubernetes (AKS, EKS, GKE ou local)
  • kubectl configurado (para testes e gerenciamento do kubeconfig)

1. Build e Execução Local

npm install
npm run build
MCP_TRANSPORT=http-chunked npm start
  • Por padrão, o servidor usa seu kubeconfig local (~/.kube/config ou C:\Users\<username>\.kube\config).
  • Para usar um kubeconfig personalizado, defina a variável de ambiente KUBECONFIG:
    export KUBECONFIG=/path/to/your/kubeconfig
    npm start
    

2. Conteinerizar o Servidor MCP

Build da imagem Docker

docker build -t yourrepo/mcp-server:latest .

Push para seu registry

docker push yourrepo/mcp-server:latest

3. Implantar no Kubernetes (AKS, EKS, GKE)

Edite o nome da imagem em k8s-mcp-server.yaml:

Substitua yourrepo/mcp-server:latest pelo nome da sua imagem.

Aplique o manifesto

kubectl apply -f k8s-mcp-server.yaml
  • Isso cria um namespace, ServiceAccount, RBAC, Deployment e Service.
  • Por padrão, o Service é ClusterIP (interno). Altere para LoadBalancer ou NodePort para acesso externo.

4. Usando o Servidor MCP

Endpoint HTTP em Blocos

  • O servidor expõe /call-tool-chunked na porta 3000.
  • Exemplo (usando curl):
    curl -X POST http://<server-ip>:3000/call-tool-chunked \
      -H "Content-Type: application/json" \
      -d '{"name": "get_pods", "args": {"namespace": "default"}}'
    
  • A resposta transmitirá progresso e resultados como linhas JSON.

Usando Prompts

  • Para usar um prompt, faça POST para /call-tool-chunked com o nome do prompt, por exemplo:
    curl -X POST http://<server-ip>:3000/call-tool-chunked \
      -H "Content-Type: application/json" \
      -d '{"name": "k8s-pod-crashloop-diagnose", "args": {"podName": "my-pod", "namespace": "default"}}'
    

5. Kubeconfig e Permissões

  • O servidor MCP usa o kubeconfig disponível no contêiner (padrão: /root/.kube/config).
  • Para implantações dentro do cluster, ele usa o ServiceAccount e o RBAC fornecidos no manifesto.
  • Para usar um kubeconfig personalizado, monte-o como um segredo e atualize o Deployment (veja as linhas comentadas no manifesto).

6. Notas de Segurança

  • Não exponha o servidor MCP à internet pública sem autenticação e TLS.
  • Use políticas de rede, firewalls ou VPNs para restringir o acesso.
  • Use RBAC com privilégios mínimos para o ServiceAccount.

7. Extensão e Personalização

  • Adicione novas ferramentas, recursos ou prompts no diretório src/.
  • Reconstrua e reimplante a imagem Docker após fazer alterações.

8. Solução de Problemas

  • Verifique os logs com kubectl logs -n mcp-server deploy/mcp-server.
  • Garanta que o ServiceAccount tenha as permissões necessárias para seu caso de uso.
  • Para testes locais, garanta que seu kubeconfig seja válido e tenha acesso ao cluster.

Licença

MIT