Docker MCP Guardian
MCP-сервер к Docker: агент смотрит контейнеры и логи, перезапуск закрыт флагом и списком запретов, значения переменных скрыты.
- 108 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Доступ к системному сокету Docker равен правам администратора хоста, поэтому по умолчанию используется rootless-демон.
- При `GUARDIAN_ALLOW_WRITE=true` агент перезапускает контейнеры, не попавшие в список запретов.
- Логи контейнеров попадают в контекст модели вместе с возможными секретами.
Установка
- Работает в
Ручная установка
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-сервер Docker: поиск образов, теги, репозитории и Docker Hardened Images в Docker Hub
Docker MCP от QuantGeekDev
docker-mcp
Docker MCP: агент создает контейнеры, разворачивает стеки Docker Compose из YAML, читает логи и список контейнеров. Запуск через uvx для Claude Desktop
CLI-плагин docker mcp и шлюз: MCP-серверы из каталога Docker в изолированных контейнерах через одну точку подключения
Docker MCP
Docker MCP server
MCP-сервер для управления Docker на естественном языке: контейнеры, образы, сети и тома, в том числе на удаленном хосте по SSH
Podman MCP Server — контейнеры Podman и Docker
Podman MCP Server
MCP-сервер для контейнеров Podman и Docker: список, запуск, остановка и логи контейнеров, сборка и загрузка образов
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| Docker MCP Guardian (эта карточка) | нет | не нужна | 108 | |
| Docker MCP | нет | не нужна | 756 | общий набор операций над Docker; Guardian оставляет чтение и один ограниченный перезапуск |
| Docker MCP от QuantGeekDev | нет | не нужна | 504 | управление контейнерами и образами; здесь запись выключена по умолчанию, а значения переменных скрыты |
Коротко о README
Весь вывод журнала идет в stderr, чтобы не портить поток JSON-RPC. Архитектура защиты описана в `docs/SECURITY_ARCHITECTURE.md`, в репозитории есть тесты и сборка образа в GHCR.