/ Каталог / Песочница / Kubernetes MCP Server
● Сообщество containers 🔑 Нужен свой ключ

Kubernetes MCP Server

автор containers · containers/kubernetes-mcp-server

kubectl, но управляемый Claude — использует твой kubeconfig + RBAC, поддерживает любой кластер (vanilla k8s, OpenShift, EKS, GKE, AKS, k3s).

kubernetes-mcp-server (организация containers) — это единый Go-бинарник, который обращается к любому Kubernetes API server через твой существующий kubeconfig. Предоставляет стандартные глаголы (list/get/apply/delete/log/exec) в виде MCP-инструментов, уважая RBAC, — принцип минимальных привилегий продолжает работать. Также поддерживает расширения OpenShift.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

kubernetes-mcp-containers.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kubernetes-mcp-containers": {
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ],
      "env": {
        "KUBECONFIG": "${HOME}/.kube/config"
      }
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "kubernetes-mcp-containers",
      "command": "npx",
      "args": [
        "-y",
        "kubernetes-mcp-server@latest"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "kubernetes-mcp-containers": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "kubernetes-mcp-server@latest"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add kubernetes-mcp-containers -- npx -y kubernetes-mcp-server@latest

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: Kubernetes MCP Server

Триаж production-инцидента в Kubernetes

👤 SRE / platform-инженеры ⏱ ~10 min intermediate

Когда использовать: Приложение ведёт себя неправильно в production и нужно смотреть поды, события, логи без переключения вкладок.

Предварительные требования
  • kubeconfig с доступом к кластеру — Стандартный aws eks update-kubeconfig или аналог
Поток
  1. Найти нездоровые поды
    k8s: в контексте prod-us-east, namespace checkout, перечисли поды не в состоянии Running. Включи reason + restart count.✓ Скопировано
    → Поды показаны с состоянием, reason, перезапусками
  2. Получить события
    Получи события в этом namespace за последние 30 минут, отсортированные по времени.✓ Скопировано
    → Список событий; OOMKilled или ImagePullBackOff видны при наличии
  3. Получить логи
    Для пода с самым последним перезапуском прочитай логи предыдущего контейнера (последние 200 строк).✓ Скопировано
    → Стектрейс / причина видны
  4. Диагностировать
    Синтезируй: какова вероятная первопричина и что нужно сделать? Будь конкретен.✓ Скопировано
    → Конкретный следующий шаг (например, увеличь лимит памяти + выкати)

Итог: Триаж менее чем за 5 минут с указанием имён подов и строк логов.

Подводные камни
  • Логи отсутствующего предыдущего контейнера недоступны — Если под перезапускался только один раз, смотри логи текущего контейнера и предыдущего только при сбое
  • Неверный контекст — Всегда указывай контекст в каждом вызове; не полагайся на дрейф current-context
Сочетать с: sentry · github

Написать Deployment с использованием контекста кластера

👤 Разработчики приложений, пишущие манифесты ⏱ ~20 min intermediate

Когда использовать: Нужен новый Deployment, соответствующий конвенциям кластера.

Поток
  1. Изучить существующие
    k8s: получи образец существующего Deployment в namespace apps. Хочу сопоставить его labels, security context, resources.✓ Скопировано
    → Возвращается репрезентативный YAML Deployment
  2. Написать новый
    Теперь напиши новый Deployment для image-resizer:1.2.0, 2 реплики, порт 8080, в соответствии с конвенциями.✓ Скопировано
    → YAML, соблюдающий конвенции кластера
  3. Dry-run apply
    Примени с --dry-run=server. Сообщи о любых ошибках валидации.✓ Скопировано
    → Server-side валидация проходит; нет дрейфа ApplyConfiguration

Итог: Манифест с первой попытки соответствует идиомам кластера.

Подводные камни
  • Забыл PSA-лейблы — Сначала прочитай pod-security лейблы namespace
Сочетать с: filesystem · github

Аудит Helm-релизов по всем namespace

👤 Platform-команда ⏱ ~25 min intermediate

Когда использовать: Квартально: найти устаревшие версии chart по всему флоту.

Поток
  1. Перечислить все релизы
    k8s/Helm: перечисли каждый релиз в каждом namespace. Включи chart + version + appVersion.✓ Скопировано
    → Полная таблица релизов
  2. Выделить устаревшие
    Для каждого сравни с последней версией chart (можешь поискать). Отметь релизы, отстающие более чем на 2 минорных версии.✓ Скопировано
    → Помеченный набор с текущей и последней версиями

Итог: Бэклог обновлений с порядком приоритетов.

Подводные камни
  • Остатки Helm 2 — Фильтруй по v3 релизам; MCP работает только с Helm 3

Комбинации

Сочетайте с другими MCP — эффект x10

kubernetes-mcp-containers + sentry

Коррелировать ошибки с перезапусками подов

Sentry: всплеск ошибок в 14:00. k8s: были ли перезапуски подов в namespace checkout в то время?✓ Скопировано
kubernetes-mcp-containers + github

Открыть PR с исправлением манифеста

k8s: определи неверный лимит памяти. GitHub: открой PR с его увеличением в helm/values.yaml.✓ Скопировано
kubernetes-mcp-containers + mcp-grafana

Сопоставить состояние k8s с данными Prometheus

k8s: под перезапускается. Grafana: получи историю использования памяти этого пода.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
list_resources context?, namespace?, kind: str, label_selector? Исследование 1 API-вызов
get_resource context?, namespace?, kind, name Изучить конкретный объект 1 вызов
apply_yaml context?, yaml: str, dry_run?: bool Создать или обновить 1 вызов
delete_resource context?, namespace?, kind, name Удалить 1 вызов
get_logs context?, namespace, pod, container?, previous?, tail? Изучить runtime 1 вызов
exec context?, namespace, pod, container?, command: str[] Диагностика внутри контейнера 1 вызов
list_events context?, namespace, since? Искать OOMKilled/ImagePullBackOff 1 вызов
list_helm_releases context?, namespace? Аудит Helm 1 вызов

Стоимость и лимиты

Во что обходится

Квота API
Ограничено QPS kube-apiserver (по умолчанию ~50)
Токенов на вызов
200–8000 (логи/yaml могут быть большими)
Деньги
Бесплатный OSS; счёт кластера применяется
Совет
Активно используй --tail в логах; никогда не запрашивай get pods -o yaml -A на огромных кластерах

Безопасность

Права, секреты, радиус поражения

Минимальные скоупы: права пользователя kubeconfig — RBAC применяется на стороне сервера
Хранение учётных данных: Файл kubeconfig; ротация через облачного провайдера
Исходящий трафик: Только ваш kube API endpoint
Никогда не давайте: cluster-admin для kubeconfig, используемого с LLM

Устранение неполадок

Частые ошибки и исправления

Unauthorized / 403

RBAC запрещает глагол; проверяй через kubectl auth can-i для пользователя

Проверить: kubectl auth can-i get pods -n checkout
Connection refused

VPN не поднят или контекст указывает на неверный endpoint; проверяй через kubectl cluster-info

Apply отклонён: ошибка валидации

Сначала запускай с dry_run=server; выясняй точную ошибку

Логи слишком большие

Используй параметр tail; по умолчанию — весь лог

Альтернативы

Kubernetes MCP Server в сравнении

АльтернативаКогда использоватьКомпромисс
kubectl-mcp (другие форки)Предпочитаешь другой бинарникМенее активно поддерживается
Lens / k9sНужен интерактивный UI, а не LLMНет автоматизационного слоя
Argo CD MCPПолностью GitOpsКосвенный; деплой через Git, не через прямой API

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills