
sivasaikrishnasuryadevara/docker-mcp-guardian
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
Docker用のセキュリティ強化されたMCPサーバーで、読み取り専用デフォルト、再起動拒否リスト、秘密の編集機能を備えています
概要
FastMCPでPythonで書かれたセキュリティ強化されたModel Context Protocol(MCP)サーバーで、ローカルのLLMエージェント(Claude Desktop、Claude Code)を厳格なゼロトラスト境界のもとDockerデーモンに接続します。 - ミューテーションツール(safe_restart_container)は、GUARDIAN_ALLOW_WRITE=trueが明示的に設定されていない限り、Dockerソケットに触れる前に呼び出しを拒否します。- 正則表現否認リストを評価する前に、コンテナIDをDockerの内部標準名に解決し、16進IDによる回避を防ぎます。- inspect_container環境変数の値をすべて削除し、変数キーのみを返すためLLMプロンプトの漏れを防ぎます。- 厳格なログ分離により、非構造化のstdout書き込みがゼロとなり、MCPクライアントでのJSON-RPCストリーム破損を防ぎます。- すべてのDocker API呼び出しはGUARDIAN_DOCKER_TIMEOUT(デフォルト5)で制限されており、ウェッジまたは欠損したデーモンはセッションをハングする代わりに構造化daemon_unavailableエラーを返します。 - Python 3.10+ - Docker Engine / Docker Desktop - mcp>=1.0。
概要(AI 翻訳)
FastMCPでPythonで書かれたセキュリティ強化されたModel Context Protocol(MCP)サーバーで、ローカルのLLMエージェント(Claude Desktop、Claude Code)を厳格なゼロトラスト境界のもとDockerデーモンに接続します。
コア能力と安全対策
- デフォルトで読み取り専用: ミューテーションツール(
safe_restart_container)は、明示的にGUARDIAN_ALLOW_WRITE=trueが設定されていない限り、Dockerソケットに触れる前に呼び出しを拒否します。 - 標準ID解決: 正則表現否認リストを評価する前に、コンテナIDをDockerの内部標準名に解決し、十六進進IDによる回避を防ぎます。
- Credential & Secret Redaction:
inspect_containerは環境変数の値をすべて削除し、LLMプロンプトの漏洩を防ぐために変数キーのみを返します。 - 隔離されたStdio JSON-RPC: 厳格なログ分離により、非構造化のstdout書き込みがゼロとなり、MCPクライアントでのJSON-RPCストリーム破損を防ぎます。
- 制限されたデーモンタイムアウト: すべてのDocker API呼び出しは
GUARDIAN_DOCKER_TIMEOUT(デフォルト5秒)で制限されているため、ウェッジまたは欠損デーモンはセッションをハングする代わりに構造化されたdaemon_unavailableエラーを返します。
クイックスタート
前提条件
- Python 3.10+
- Docker Engine / Docker Desktop
- 'mcp>=1.0。
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
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"
}
}
}
}