SD

sivasaikrishnasuryadevara/docker-mcp-guardian

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

109 stars 109 forks 品質 85 トレンド 35MIT

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 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

GitHub で README 全文を見る

インストール

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" } } } }