Главная / Статьи / Безопасные по умолчанию MCP-серверы для Kubernetes, Kafka и облачных операций

Безопасные по умолчанию MCP-серверы для Kubernetes, Kafka и облачных операций

Восемь MCP-серверов дают агентам работать с Kubernetes, Kafka, ClickHouse и Azure через режим только для чтения по умолчанию, списки разрешений, флаги удаления, журналы аудита и аннотации.

847 слов

Пустить ИИ-агента в продакшен-инфраструктуру — простой способ двигаться быстро. И столь же простой способ потерять базу данных из-за чуть расплывчатого промпта. Model Context Protocol (MCP) позволяет без труда выдать агенту инструменты вроде «показать поды», «перезапустить деплоймент» и «выполнить этот запрос». Но в инфраструктуре тот же механизм так же легко отдаёт delete_topic, DROP TABLE или delete_resource_group. Обычный совет — просто не включать опасные инструменты, но тогда сервер становится бесполезным ровно в тот момент, когда эти операции нужны.

Один из ответов — семейство из восьми MCP-серверов, построенных на одном принципе. Каждый безопасен по умолчанию, а его возможности вы расширяете осознанно. Ниже — как устроен этот подход и что покрывает набор.

Движок политик

Все восемь серверов используют общий движок политик, который держится на четырёх идеях.

Многоуровневые режимы доступа. Сервер стартует в режиме только для чтения. Чтобы перейти к чтению и записи, а затем к режиму администратора, нужно сознательно поменять переменную окружения. Ключевая деталь в том, что инструменты выше текущего режима вообще не регистрируются. В режиме только для чтения агент не видит инструмент удаления, от вызова которого он вежливо отказывается. Этого инструмента просто нет в его списке, а то, чего нет, нельзя использовать во вред.

Списки разрешений и защищённые ресурсы. Сервер можно ограничить конкретными пространствами имён, топиками, базами данных, проектами или подписками. Некоторые ресурсы можно пометить как защищённые, например пространство имён kube-system, внутренний топик Kafka или master realm в Keycloak. Защищённые ресурсы остаются доступными для чтения, но изменить их нельзя никогда, даже в режиме администратора.

Разрушительные действия за вторым переключателем. Удаления и другие необратимые операции требуют режима администратора и отдельного явного согласия, например KAFKA_ALLOW_DELETE=true. Свежая установка ничего не может уничтожить даже на самом высоком уровне, пока вы дважды не подтвердите намерение.

Видимый журнал аудита. Каждое действие пишет в stderr структурированную JSON-строку со скрытыми секретами, так что потом легко увидеть, что сделал агент.

В итоге у вас регулятор, а не выключатель. Доверие передаётся шагами, которыми управляете вы, вместо выбора между бесполезным сервером и пугающим.

Модель безопасности, понятная машине

До версии 0.1.1 модель безопасности жила только в README. Люди могли её прочитать, а приложение, в котором работает агент (Claude Desktop, Cursor, Copilot), — нет.

В MCP для этого уже есть механизм: аннотации инструментов. Инструмент может сообщать структурированные подсказки, а именно readOnlyHint, destructiveHint, idempotentHint и openWorldHint, по которым хост решает, что одобрять автоматически, а где остановиться и спросить.

Теперь эти подсказки выставлены у каждого инструмента во всех восьми серверах и выводятся автоматически из уровня доступа инструмента. Инструмент чтения объявляет себя только читающим и неразрушительным. Инструмент удаления объявляет себя разрушительным. Так хост может оценить радиус поражения инструмента до запуска по структурированным метаданным, а не разбирать описание на английском в надежде на лучшее. Тест проверяет, что каждая подсказка соответствует инструменту, который она описывает. Это разница между «поверьте, это безопасно» и утверждением, которое может проверить машина.

Восемь серверов

Каждый сервер распространяется под лицензией MIT, написан на TypeScript и ставится одной командой npx.

  • mcp-kubernetes охватывает поды, логи, деплойменты, масштабирование и перезапуски, apply и exec.
  • mcp-kafka работает с топиками, группами потребителей и отставанием, а также с операциями создания, изменения и сброса.
  • mcp-clickhouse открывает схемы и запросы и классифицирует SQL как чтение, запись или разрушительную операцию, чтобы пропускать каждое выражение через проверку.
  • mcp-debezium управляет коннекторами захвата изменений данных, включая статус, конфигурацию и жизненный цикл.
  • mcp-oci находит ресурсы Oracle Cloud и генерирует Terraform.
  • mcp-azure работает с Azure Resource Manager: инвентаризация, теги, состояние питания ВМ и жизненный цикл.
  • mcp-azure-devops даёт доступ к доскам, репозиториям, пайплайнам и проектам.
  • mcp-keycloak охватывает realms, пользователей, клиентов, роли и группы.

Как попробовать

Чтобы добавить сервер в Claude Code, хватит одной строки, и стартует он в режиме только для чтения:

claude mcp add kubernetes -e K8S_MODE=read-only -- npx -y @dockndevai/mcp-kubernetes

В каждом репозитории описана настройка для Claude, Cursor, Codex, VS Code и Windsurf. Исходный код лежит на GitHub, пакеты опубликованы в npm.

Открытый вопрос

Одно проектное решение вызывает споры: требовать и режим администратора, и отдельный флаг согласия для каждой операции, прежде чем выполнится разрушительное действие. Слишком ли это строго для реальной работы или это как раз правильное поведение по умолчанию, когда инфраструктуру передают агенту? Команды приходят к разному: от вечного режима только для чтения до постепенного доверия, которое растёт вместе с уверенностью. Какая бы позиция вам ни подошла, основная идея остаётся в силе: делайте самое безопасное поведение поведением по умолчанию и требуйте ясных, осознанных шагов, чтобы его ослабить.