Kubernetes MCP Server

официальный

Сервер MCP для Kubernetes на Claude, написанный на Go. Сервер интегрируется с ArgoCD, GitLab, Claude AI и Kubernetes, обеспечивая расширенное управление и автоматизацию сред Kubernetes.

Документация

Claude Kubernetes MCP Server

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

Сервер Model Context Protocol (MCP) для управления кластерами Kubernetes с интеграцией ArgoCD и GitLab.

Этот репозиторий содержит сервер Claude Kubernetes MCP (Model Context Protocol), написанный на Go. Сервер интегрируется с ArgoCD, GitLab, Claude AI и Kubernetes для обеспечения расширенного контроля и автоматизации сред Kubernetes.

См. нашу документацию здесь

Содержание


Обзор

Этот сервер предназначен для оркестрации рабочих нагрузок Kubernetes с использованием Claude AI, GitLab, ArgoCD и Vault. Он предоставляет REST API, позволяющий программно взаимодействовать с этими системами, управляемый настроенным config.yaml и аутентифицируемый с помощью API-ключа.

Предварительные требования

  • Go 1.20+
  • Docker
  • Кластер Kubernetes и действительный ~/.kube/config
  • Кластер EKS с локально установленным AWS_PROFILE
  • Учетные данные ArgoCD
  • Персональный токен доступа GitLab
  • Ключ API Claude (Anthropic)
  • Учетные данные Vault (опционально, в зависимости от использования)

Инструкции по настройке

1. Клонирование репозитория

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

2. Экспорт необходимых переменных окружения

Экспортируйте учетные данные для ArgoCD, GitLab и 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"

Убедитесь, что kubeconfig доступен:

export KUBECONFIG=~/.kube/config

3. Настройка config.yaml

Обновите kubernetes-claude-mcp/config.yaml, указав учетные данные и настройки сервера:

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

Вы можете использовать предоставленные шаблоны Go или метод интерполяции переменных окружения.

4. Добавление API-ключа для Postman

Убедитесь, что config.yaml включает apiKey. Он будет использоваться для аутентификации запросов в Postman или любом внешнем клиенте.


Локальный запуск

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

С ведением отладочного журнала:

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

Сервер запустится и будет привязан к порту, указанному в config.yaml (по умолчанию: 8080).


Сборка и запуск с помощью Docker

1. Сборка образа

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

2. Запуск контейнера (включен второй вариант сборки)

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

Развертывание в production

В репозиторий включен Helm-чарт для развертывания в Kubernetes:

1. Переход в каталог Helm-чарта

cd kubernetes-claude-mcp/deployments/helm

2. Развертывание с помощью Helm

Обновите values.yaml соответствующими значениями и выполните:

helm install claude-mcp .

Для обновления:

helm upgrade claude-mcp .

Убедитесь, что секреты и карты конфигурации правильно смонтированы и защищены в кластере.


Документация по API

Ниже приведены основные конечные точки, предоставляемые сервером MCP. Все запросы требуют заголовок X-API-Key:

Общие

  • Проверка работоспособности
    • GET /api/v1/health

Kubernetes

  • Список пространств имен
    • GET /api/v1/namespaces
  • Список ресурсов
    • GET /api/v1/resources/{kind}?namespace={ns}
  • Получение конкретного ресурса
    • GET /api/v1/resources/{kind}/{name}?namespace={ns}
  • Получение событий для ресурса
    • GET /api/v1/events?namespace={ns}&resource={kind}&name={name}

ArgoCD

  • Список приложений
    • GET /api/v1/argocd/applications

Конечные точки Claude MCP

  • Анализ ресурса
    • POST /api/v1/mcp/resource
  • Устранение неполадок ресурса
    • POST /api/v1/mcp/troubleshoot
  • Анализ коммита (GitLab)
    • POST /api/v1/mcp/commit
  • Общий запрос MCP
    • POST /api/v1/mcp

Все конечные точки POST принимают JSON-нагрузку, содержащую такие поля, как:

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

Коллекция Postman

Готовая к использованию коллекция Postman скоро будет доступна.

Пожертвование

Пожалуйста, внесите вклад в наш кофейный фонд, чтобы помочь нам продолжать делать великие дела Buy Me Coffee

Лицензия

Этот проект лицензирован в соответствии с MIT License.


Участие в разработке

Документация скоро будет расширена. Если вы хотите внести свой вклад, не стесняйтесь открывать pull request или создавать issue!