
sivasaikrishnasuryadevara/docker-mcp-guardian
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Защищенный безопасностью 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 unlessGUARDIAN_ALLOW_WRITE=trueis 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_containerstrips 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 structureddaemon_unavailableerror 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
Установка
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"
}
}
}
}