Docker MCP Guardian

MCP-сервер к Docker: агент смотрит контейнеры и логи, перезапуск закрыт флагом и списком запретов, значения переменных скрыты.

  • 108 ★ репозитория
  • Последний коммит
  • MIT
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Доступ к системному сокету Docker равен правам администратора хоста, поэтому по умолчанию используется rootless-демон.
  • При `GUARDIAN_ALLOW_WRITE=true` агент перезапускает контейнеры, не попавшие в список запретов.
  • Логи контейнеров попадают в контекст модели вместе с возможными секретами.
Все причины и проверки

sivasaikrishnasuryadevara/docker-mcp-guardian

Установка

Ручная установка

git clone https://github.com/SivaSaiKrishnaSuryadevara/docker-mcp-guardian.git

Первая команда из README. Далее виртуальное окружение, `pip install -r requirements.txt` и `claude mcp add docker-guardian -- "$PWD/.venv/bin/python" "$PWD/server.py"`.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Доступ к системному сокету Docker равен правам администратора хоста, поэтому по умолчанию используется rootless-демон.
  • При `GUARDIAN_ALLOW_WRITE=true` агент перезапускает контейнеры, не попавшие в список запретов.
  • Логи контейнеров попадают в контекст модели вместе с возможными секретами.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Docker MCP Guardian — сервер на Python и FastMCP, который соединяет Claude Desktop, Claude Code и другие MCP-клиенты с демоном Docker. Инструменты: `list_containers`, `inspect_container`, `get_container_logs` и `safe_restart_container`. Логи сканируются регулярным выражением на ошибки и исключения (`GUARDIAN_ANOMALY_REGEX`). Защита включена по умолчанию: перезапуск не работает, пока не задан `GUARDIAN_ALLOW_WRITE=true`; имена проверяются по списку запретов `GUARDIAN_RESTART_DENY_REGEX` (по умолчанию `prod`, `db`, `kube`, `vault`) после приведения ID к каноническому имени; `inspect_container` возвращает имена переменных окружения без значений.

Для кого. Разработчикам и администраторам, которые хотят дать агенту диагностику локальных контейнеров без права что-то сломать.

Подходит, если

  • Контейнер падает, и агент читает хвост логов и выделяет ошибки.
  • Нужно показать модели конфигурацию контейнера, скрыв значения переменных окружения.
  • Перезапуск разрешен только контейнерам с именами по шаблону `dev-.*`.
  • Docker работает в rootless-режиме, а клиент стартует без `XDG_RUNTIME_DIR`.

Не подходит, если

  • Агенту нужны создание и удаление контейнеров, образов и сетей: таких инструментов нет.
  • Нужен полный доступ к Docker API, а сервер намеренно его сужает.
  • Контейнеры работают на удаленном кластере Kubernetes.

Пример запроса к агенту

Покажи контейнеры, найди тот, что перезапускается, прочитай последние 200 строк его логов и выдели ошибки.

MCP

Транспорт
stdio
Авторизация
не нужна

Переменные окружения

GUARDIAN_ALLOW_WRITE
Включает перезапуск контейнеров, по умолчанию `false`
DOCKER_HOST
Адрес демона Docker, если нужен нестандартный

Ограничения

Нужны Python 3.10 или новее, Docker Engine или Docker Desktop и `mcp>=1.0.0,<2`. Установка идет клонированием репозитория и созданием виртуального окружения, готового пакета в README нет. Сокет выбирается по порядку: `DOCKER_HOST`, затем rootless-сокет, а системный `/var/run/docker.sock` только при `GUARDIAN_ALLOW_ROOTFUL=true`; прежние версии подключались к нему молча. Вызов Docker ограничен `GUARDIAN_DOCKER_TIMEOUT` (5 секунд по умолчанию), скан логов — `GUARDIAN_REGEX_TIMEOUT` (1 секунда).

Как отключить. Удалите сервер из конфигурации клиента командой `claude mcp remove docker-guardian` или правкой `mcpServers`. Виртуальное окружение и клонированный каталог удалите отдельно.

Частые вопросы

Как разрешить перезапуск?

Задайте `GUARDIAN_ALLOW_WRITE=true` в окружении сервера. Контейнеры из `GUARDIAN_RESTART_DENY_REGEX` по-прежнему перезапускать нельзя.

Как ограничить перезапуск списком разрешенных?

Задайте `GUARDIAN_RESTART_ALLOW_REGEX`: тогда перезапускаются только совпавшие контейнеры, а запрет по-прежнему главнее.

Что с rootless Docker?

Сервер сам ищет сокет в `$XDG_RUNTIME_DIR/docker.sock` и `/run/user/<uid>/docker.sock`. Если клиент не передает окружение, укажите `DOCKER_HOST` с полным путем.

Увидит ли модель пароли из окружения контейнера?

Нет, `inspect_container` возвращает только имена переменных. Секреты в самих логах контейнера фильтр не убирает.

Какие инструменты есть у сервера?

Четыре: `list_containers`, `inspect_container`, `get_container_logs` и `safe_restart_container`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP-сервер мониторинга maintenant: агент читает логи контейнеров, историю проверок и алерты, но не трогает контейнеры

MCP-серверРасширенный доступ548Звезды репозитория
Официальный

Официальный MCP-сервер Docker: поиск образов, теги, репозитории и Docker Hardened Images в Docker Hub

MCP-серверРасширенный доступ171Звезды репозитория

Docker MCP: агент создает контейнеры, разворачивает стеки Docker Compose из YAML, читает логи и список контейнеров. Запуск через uvx для Claude Desktop

MCP-серверШирокий доступ504Звезды репозитория
Официальный

CLI-плагин docker mcp и шлюз: MCP-серверы из каталога Docker в изолированных контейнерах через одну точку подключения

MCP-серверШирокий доступ1,6 тыс.Звезды репозитория

Docker MCP

Docker MCP server

MCP-сервер для управления Docker на естественном языке: контейнеры, образы, сети и тома, в том числе на удаленном хосте по SSH

MCP-серверШирокий доступ756Звезды репозитория

MCP-сервер для контейнеров Podman и Docker: список, запуск, остановка и логи контейнеров, сборка и загрузка образов

MCP-серверШирокий доступ86Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
Docker MCP Guardian (эта карточка)нетне нужна108
Docker MCPнетне нужна756общий набор операций над Docker; Guardian оставляет чтение и один ограниченный перезапуск
Docker MCP от QuantGeekDevнетне нужна504управление контейнерами и образами; здесь запись выключена по умолчанию, а значения переменных скрыты

Коротко о README

Весь вывод журнала идет в stderr, чтобы не портить поток JSON-RPC. Архитектура защиты описана в `docs/SECURITY_ARCHITECTURE.md`, в репозитории есть тесты и сборка образа в GHCR.

Бейдж для README

Сообщить о проблеме