Kubernetes MCP Server
oficialUm servidor MCP Kubernetes para Claude, construído em Go. O servidor integra-se com ArgoCD, GitLab, Claude AI e Kubernetes para permitir controle e automação avançados de ambientes Kubernetes.
Documentação
Claude Kubernetes MCP Server
Um servidor Model Context Protocol (MCP) para gerenciamento de clusters Kubernetes com integração ArgoCD e GitLab.
Este repositório contém o servidor Claude Kubernetes MCP (Model Context Protocol), desenvolvido em Go. O servidor integra-se com ArgoCD, GitLab, Claude AI e Kubernetes para permitir controle avançado e automação de ambientes Kubernetes.
Índice
- Visão Geral
- Pré-requisitos
- Instruções de Configuração
- Configuração
- Executando Localmente
- Compilando e Executando com Docker
- Implantação em Produção
- Documentação da API
- Coleção do Postman
- Licença
Visão Geral
Este servidor foi projetado para orquestrar cargas de trabalho Kubernetes usando Claude AI, GitLab, ArgoCD e Vault. Ele expõe uma API REST que permite interação programática com esses sistemas, orientada por um config.yaml configurado e autenticada usando uma chave de API.
Pré-requisitos
- Go 1.20+
- Docker
- Cluster Kubernetes e
~/.kube/configválido - Cluster EKS com AWS_PROFILE definido localmente
- Credenciais do ArgoCD
- Token de acesso pessoal do GitLab
- Chave de API do Claude (Anthropic)
- Credenciais do Vault (opcional, dependendo do uso)
Instruções de Configuração
1. Clonar o Repositório
git clone https://github.com/blankcut/kubernetes-mcp-server.git
cd kubernetes-mcp-server
2. Exportar Variáveis de Ambiente Necessárias
Exporte as credenciais para ArgoCD, GitLab e Claude:
export ARGOCD_USERNAME="argocd-username"
export ARGOCD_PASSWORD="argocd-password"
export GITLAB_TOKEN="gitlab-token"
export CLAUDE_API_KEY="claude-api-key"
export VAULT_TOKEN="optional-if-using-vault"
Certifique-se de que um kubeconfig esteja disponível:
export KUBECONFIG=~/.kube/config
3. Configurar config.yaml
Atualize kubernetes-claude-mcp/config.yaml com credenciais e preferências do servidor:
server:
address: ":8080"
readTimeout: 30
writeTimeout: 60
auth:
apiKey: ""${API_KEY}""
kubernetes:
kubeconfig: ""
inCluster: false
defaultContext: ""
defaultNamespace: "default"
argocd:
url: "http://example.argocd.com"
authToken: ""
username: "${ARGOCD_USERNAME}"
password: "${ARGOCD_PASSWORD}"
insecure: true
gitlab:
url: "https://gitlab.com"
authToken: "${AUTH_TOKEN}"
apiVersion: "v4"
projectPath: ""${PROJECT_PATH}""
claude:
apiKey: "${API_KEY}"
baseURL: "https://api.anthropic.com"
modelID: "claude-sonnet-4.5-20250514"
maxTokens: 8192
temperature: 0.3
Você pode usar os templates Go fornecidos ou o método de interpolação de variáveis de ambiente.
4. Adicionar Chave de API para o Postman
Certifique-se de que um config.yaml inclua um apiKey. Isso será usado para autenticar solicitações no Postman ou em qualquer cliente externo.
Executando Localmente
cd kubernetes-claude-mcp
go run ./cmd/server/main.go
Com Log de Depuração:
LOG_LEVEL=debug go run ./cmd/server/main.go --config config.yaml
O servidor iniciará e se vinculará à porta configurada em config.yaml (padrão: 8080).
Compilando e Executando com Docker
1. Compilar a Imagem
cd kubernetes-claude-mcp
docker build -t claude-mcp-server -f Dockerfile .
2. Executar o Contêiner (segunda opção de compilação incluída)
cd kubernetes-claude-mcp
docker-compose build
docker-compose up -d
Implantação em Produção
Um chart Helm está incluído no repositório para implantação no Kubernetes:
1. Navegar até o Diretório do Chart Helm
cd kubernetes-claude-mcp/deployments/helm
2. Implantar com Helm
Atualize values.yaml com os valores apropriados e execute:
helm install claude-mcp .
Para atualizar:
helm upgrade claude-mcp .
Certifique-se de que os secrets e config maps estejam devidamente montados e protegidos no cluster.
Documentação da API
Abaixo estão os principais endpoints expostos pelo servidor MCP. Todas as solicitações exigem o cabeçalho X-API-Key:
Geral
- Verificação de Saúde
GET /api/v1/health
Kubernetes
- Listar Namespaces
GET /api/v1/namespaces
- Listar Recursos
GET /api/v1/resources/{kind}?namespace={ns}
- Obter Recurso Específico
GET /api/v1/resources/{kind}/{name}?namespace={ns}
- Obter Eventos de um Recurso
GET /api/v1/events?namespace={ns}&resource={kind}&name={name}
ArgoCD
- Listar Aplicações
GET /api/v1/argocd/applications
Endpoints Claude MCP
- Analisar Recurso
POST /api/v1/mcp/resource
- Solucionar Problemas de Recurso
POST /api/v1/mcp/troubleshoot
- Análise de Commit (GitLab)
POST /api/v1/mcp/commit
- Solicitação MCP Genérica
POST /api/v1/mcp
Todos os endpoints POST aceitam um payload JSON contendo campos como:
{
"resource": "pod",
"name": "example-pod",
"namespace": "default",
"query": "What’s wrong with this pod?"
}
Coleção do Postman
Uma coleção do Postman pronta para uso estará disponível em breve.
Doação
Por favor, contribua para o nosso fundo de café para nos ajudar a continuar fazendo grandes coisas Buy Me Coffee
Licença
Este projeto está licenciado sob a Licença MIT.
Contribuindo
A documentação será expandida em breve. Se você quiser contribuir, sinta-se à vontade para abrir um pull request ou registrar uma issue!