
sivasaikrishnasuryadevara/docker-mcp-guardian
Developer tools이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
읽기 전용 기본값, 재시작 거부 목록, 비밀 검열 기능이 있는 Docker용 보안 강화 MCP 서버
개요
FastMCP로 파이썬으로 작성된 보안 강화된 모델 컨텍스트 프로토콜(MCP) 서버로, 로컬 LLM 에이전트(클로드 데스크톱, 클로드 코드)를 엄격한 제로 트러스트 경계로 도커 데몬에 연결합니다. - 돌연변이 도구(safe_restart_container)는 GUARDIAN_ALLOW_WRITE=true가 명시적으로 설정되지 않은 한 도커 소켓에 닿기 전에 호출을 거부합니다. - 컨테이너 ID를 도커의 내부 정식 이름으로 해석하여 정규식 부정자를 평가하여 16진 ID를 통한 회피를 방지합니다. - inspect_container 모든 환경 변수 값을 제거하고 변수 키만 반환하여 LLM 프롬프트 누수를 방지합니다. - 엄격한 로그 분리를 통해 비구조화된 stdout 쓰기가 0회로 보장되어 MCP 클라이언트에서 JSON-RPC 스트림 손상을 방지합니다. - 모든 Docker API 호출은 기본 5개로 GUARDIAN_DOCKER_TIMEOUT제한되어 있어, 쐐기형이나 누락된 데몬은 세션을 중단하는 대신 구조화된 daemon_unavailable 오류를 반환합니다. - Python 3.10+ - Docker 엔진 / Docker 데스크톱 - mcp>=1.0.
개요(AI 번역)
FastMCP로 파이썬으로 작성된 보안 강화된 모델 컨텍스트 프로토콜(MCP) 서버로, 로컬 LLM 에이전트(클로드 데스크톱, 클로드 코드)를 엄격한 제로 트러스트 경계로 도커 데몬에 연결합니다.
핵심 역량 및 안전장치
- 기본적으로 읽기 전용: 뮤테이션 도구(
safe_restart_container)는GUARDIAN_ALLOW_WRITE=true가 명시적으로 설정되지 않은 한 도커 소켓에 닿기 전에 호출을 거부합니다. - **정규 ID 해석(Canonical ID Resolution): 컨테이너 ID를 도커 내부 정규 이름으로 해석하여 정규 표현식 부정자 평가 전에 해결하여 16진 ID를 통한 회피를 방지합니다.
- 자격 증명 및 비밀 편집:
inspect_container는 모든 환경 변수 값을 제거하고 변수 키만 반환하여 LLM 프롬프트 유출을 방지합니다. - 고립된 Stdio JSON-RPC: 엄격한 로그 분리는 비구조화된 stdout 쓰기가 0을 보장하여 MCP 클라이언트에서 JSON-RPC 스트림 손상을 방지합니다.
- 제한된 데몬 타임아웃: 모든 Docker API 호출은
GUARDIAN_DOCKER_TIMEOUT(기본 5초)로 제한되어 있어, 쐐기나 누락된 데몬은 세션을 중단하는 대신 구조화된daemon_unavailable오류를 반환합니다.
퀵스타트
전제 조건
- 파이썬 3.10+
- Docker 엔진 / Docker 데스크톱
- '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"
}
}
}
}