Kubernetes MCP Server

oficial

Un servidor MCP de Kubernetes para Claude, construido en Go. El servidor se integra con ArgoCD, GitLab, Claude AI y Kubernetes para permitir control avanzado y automatización de entornos Kubernetes.

Documentación

Claude Kubernetes MCP Server

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

Un servidor del Protocolo de Contexto de Modelo (MCP) para la gestión de clústeres Kubernetes con integración de ArgoCD y GitLab.

Este repositorio contiene el servidor Claude Kubernetes MCP (Protocolo de Contexto de Modelo), construido en Go. El servidor se integra con ArgoCD, GitLab, Claude AI y Kubernetes para permitir un control y automatización avanzados de entornos Kubernetes.

Consulte nuestra documentación aquí

Tabla de Contenidos


Descripción general

Este servidor está diseñado para orquestar cargas de trabajo de Kubernetes utilizando Claude AI, GitLab, ArgoCD y Vault. Expone una API REST que permite la interacción programática con estos sistemas, impulsada por un config.yaml configurado y autenticada mediante una clave API.

Requisitos previos

  • Go 1.20+
  • Docker
  • Clúster Kubernetes y ~/.kube/config válido
  • Clúster EKS con AWS_PROFILE configurado localmente
  • Credenciales de ArgoCD
  • Token de acceso personal de GitLab
  • Clave API de Claude (Anthropic)
  • Credenciales de Vault (opcional, según el uso)

Instrucciones de configuración

1. Clonar el repositorio

git clone https://github.com/blankcut/kubernetes-mcp-server.git
cd kubernetes-mcp-server

2. Exportar las variables de entorno requeridas

Exporte las credenciales para ArgoCD, GitLab y 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"

Asegúrese de que un kubeconfig esté disponible:

export KUBECONFIG=~/.kube/config

3. Configurar config.yaml

Actualice kubernetes-claude-mcp/config.yaml con las credenciales y preferencias del 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

Puede usar las plantillas Go proporcionadas o el método de interpolación de variables de entorno.

4. Agregar clave API para Postman

Asegúrese de que un config.yaml incluya un apiKey. Esto se usará para autenticar solicitudes en Postman o cualquier cliente externo.


Ejecución local

cd kubernetes-claude-mcp
go run ./cmd/server/main.go

Con registro de depuración:

LOG_LEVEL=debug go run ./cmd/server/main.go --config config.yaml

El servidor se iniciará y se vinculará al puerto configurado en config.yaml (predeterminado: 8080).


Construcción y ejecución con Docker

1. Construir la imagen

cd kubernetes-claude-mcp
docker build -t claude-mcp-server -f Dockerfile .

2. Ejecutar el contenedor (segunda opción de construcción incluida)

cd kubernetes-claude-mcp
docker-compose build
docker-compose up -d

Despliegue en producción

Se incluye un chart de Helm en el repositorio para el despliegue en Kubernetes:

1. Navegar al directorio del chart de Helm

cd kubernetes-claude-mcp/deployments/helm

2. Desplegar con Helm

Actualice values.yaml con los valores apropiados y ejecute:

helm install claude-mcp .

Para actualizar:

helm upgrade claude-mcp .

Asegúrese de que los secretos y mapas de configuración estén correctamente montados y protegidos en el clúster.


Documentación de la API

A continuación se muestran los endpoints principales expuestos por el servidor MCP. Todas las solicitudes requieren el encabezado X-API-Key:

General

  • Verificación de estado
    • GET /api/v1/health

Kubernetes

  • Listar espacios de nombres
    • GET /api/v1/namespaces
  • Listar recursos
    • GET /api/v1/resources/{kind}?namespace={ns}
  • Obtener recurso específico
    • GET /api/v1/resources/{kind}/{name}?namespace={ns}
  • Obtener eventos de un recurso
    • GET /api/v1/events?namespace={ns}&resource={kind}&name={name}

ArgoCD

  • Listar aplicaciones
    • GET /api/v1/argocd/applications

Endpoints de Claude MCP

  • Analizar recurso
    • POST /api/v1/mcp/resource
  • Solucionar problemas de recurso
    • POST /api/v1/mcp/troubleshoot
  • Análisis de commit (GitLab)
    • POST /api/v1/mcp/commit
  • Solicitud MCP genérica
    • POST /api/v1/mcp

Todos los endpoints POST aceptan una carga útil JSON que contiene campos como:

{
  "resource": "pod",
  "name": "example-pod",
  "namespace": "default",
  "query": "What’s wrong with this pod?"
}

Colección de Postman

Pronto estará disponible una colección de Postman lista para usar.

Donación

Contribuya a nuestro fondo de café para ayudarnos a seguir haciendo grandes cosas Cómprame un café

Licencia

Este proyecto está licenciado bajo la Licencia MIT.


Contribuciones

La documentación se ampliará pronto. Si desea contribuir, ¡no dude en abrir una solicitud de extracción o reportar un problema!