SD

sivasaikrishnasuryadevara/docker-mcp-guardian

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

109 stars 109 forks Качество 85 Тренд 35MIT

Защищенный безопасностью MCP-сервер для Docker с настройками только для чтения по умолчанию, списками запрета и секретной редакцией

Обзор

Сервер Model Context Protocol (MCP) с защищённой безопасностью, написанный на Python с FastMCP, который соединяет локальные LLM-агенты (Claude Desktop, Claude Code) с демоном Docker с жёсткими ограничениями нулевого доверия. - Инструменты мутации (safe_restart_container) отклоняют вызовы до прикосновения к сокету Docker, если GUARDIAN_ALLOW_WRITE=true явно не установлено. - Разрешает идентификаторы контейнеров внутренним каноническим именем Docker перед оценкой denylists regex, предотвращая уклонение через hex ID. - inspect_container удаляет все значения переменных среды, возвращая только переменные ключи для предотвращения утечки запросов LLM. - Строгое разделение логирования гарантирует отсутствие неструктурированных записей stdout, предотвращая повреждение потоков JSON-RPC в клиентах MCP. - Каждый вызов Docker API ограничен GUARDIAN_DOCKER_TIMEOUT (по умолчанию 5s), поэтому клиновидный или отсутствующий демон возвращает структурированную ошибку daemon_unavailable вместо зависения сессии. - Python 3.10+ - Docker Engine / Docker Desktop - mcp>=1.0.

Обзор (машинный перевод)

Сервер Model Context Protocol (MCP) с защищённой безопасностью, написанный на Python с FastMCP, который соединяет локальные LLM-агенты (Claude Desktop, Claude Code) с демоном Docker с жёсткими ограничениями нулевого доверия.

Основные возможности и гарантии

  • По умолчанию только для чтения: Инструменты мутации (safe_restart_container) отклоняют вызовы до прикосновения к сокету Docker, если GUARDIAN_ALLOW_WRITE=true явно не установлен.
  • Каноническое разрешение идентификаторов: Разрешает контейнерные идентификаторы внутренним каноническим именем Docker перед оценкой денилистов регулярных выражений, предотвращая уклонение через шестнадцатеричные идентификаторы.
  • Учетные данные и секретная редакция: inspect_container удаляет все значения переменных среды, возвращая только ключи переменных, чтобы предотвратить утечку LLM-запросов.
  • Изолированный Stdio JSON-RPC: Строгое разделение логов гарантирует отсутствие неструктурированных записей stdout, предотвращая повреждение потоков JSON-RPC в MCP-клиентах.
  • Ограниченные тайм-ауты демонов: Каждый вызов Docker API ограничен GUARDIAN_DOCKER_TIMEOUT (по умолчанию 5), поэтому клиновидный или отсутствующий демон возвращает структурированную ошибку daemon_unavailable вместо того, чтобы зависать сессию.

Быстрый старт

Требования

  • Python 3.10+
  • Docker Engine / Docker Desktop
  • 'mcp>=1.0.

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

README

Показан фрагмент оригинального README. Открыть оригинал.

Docker MCP Guardian

A security-hardened Model Context Protocol (MCP) server written in Python with FastMCP that connects local LLM agents (Claude Desktop, Claude Code) to the Docker daemon with strict zero-trust boundaries.

Core Capabilities & Safeguards

  • Read-Only by Default: Mutation tools (safe_restart_container) reject calls before touching the Docker socket unless GUARDIAN_ALLOW_WRITE=true is explicitly set.
  • Canonical ID Resolution: Resolves container IDs to Docker’s internal canonical name before evaluating regex denylists, preventing evasion via hex IDs.
  • Credential & Secret Redaction: inspect_container strips all environment variable values, returning only variable keys to prevent LLM prompt leakage.
  • Isolated Stdio JSON-RPC: Strict logging separation ensures zero unstructured stdout writes, preventing JSON-RPC stream corruption in MCP clients.
  • Bounded Daemon Timeouts: Every Docker API call is capped by GUARDIAN_DOCKER_TIMEOUT (default 5s), so a wedged or missing daemon returns a structured daemon_unavailable error instead of hanging the session.

Quickstart

Prerequisites

  • Python 3.10+
  • Docker Engine / Docker Desktop
  • mcp>=1.0.0,<2 (pinned to FastMCP API)

Local Installation

git clone https://github.com/SivaSaiKrishnaSuryadevara/docker-mcp-guardian.git
cd docker-mcp-guardian
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pytest tests/ -v

Connect to Claude Code

claude mcp add docker-guardian -- "$PWD/.venv/bin/python" "$PWD/server.py"

For Claude Desktop, add the same interpreter and script paths (absolute) under mcpServers in claude_desktop_config.json.

Configuration

Variable Default Purpose
GUARDIAN_ALLOW_WRITE false Must be true for safe_restart_container to do anything
GUARDIAN_RESTART_DENY_REGEX ^(prod|db|kube|vault)-.* Containers that can never be restarted (always wins)
GUARDIAN_RESTART_ALLOW_REGEX (unset) If set, only matching containers can be restarted
GUARDIAN_ANOMALY_REGEX error/exception/fatal/… Pattern the log scanner flags
GUARDIAN_REGEX_TIMEOUT 1 Total seconds one log scan may spend matching; slower scans return regex_timeout
GUARDIAN_DOCKER_TIMEOUT 5 Seconds per Docker API call
GUARDIAN_LOG_LEVEL INFO Log level (logs go to stderr only)
DOCKER_HOST (unset) Docker endpoint to use; always wins when set
GUARDIAN_ALLOW_ROOTFUL false Allow falling back to the rootful /var/run/docker.sock

Docker endpoint resolution

Открыть полный README на GitHub

Установка

This server does not publish a one-line install command.

Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

{ "mcpServers": { "docker-guardian": { "command": "/path/to/docker-mcp-guardian/.venv/bin/python", "args": ["/path/to/docker-mcp-guardian/server.py"], "env": { "DOCKER_HOST": "unix:///run/user/1000/docker.sock" } } } }