Kubernetes MCP Server

oficial

Um 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

CI Release Docker Pulls Docker Image Size Go Report Card License GitHub release

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.

Veja Nossa Documentação Aqui

Índice


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/config vá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!