MCP Server for Kubernetes
Um servidor para gerenciar clusters Kubernetes usando o Model Context Protocol.
GitHubExperimente este MCPPatrocinado
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)
kubectlconfigurado (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/configouC:\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 paraLoadBalancerouNodePortpara acesso externo.
4. Usando o Servidor MCP
Endpoint HTTP em Blocos
- O servidor expõe
/call-tool-chunkedna 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-chunkedcom 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