🚀 Docker Manager MCP
Docker Manager MCPは、あなたのすべてのDockerホストを一箇所から管理できるツールです。 AIアシスタントがコンテナの管理、スタックのデプロイ、サービスの監視を、ゼロ設定でインフラ全体にわたって行うことができます。
🚀 クイックスタート
📦 インストール
curl -sSL https://raw.githubusercontent.com/jmagar/docker-mcp/main/install.sh | bash
インストーラーは以下のことを自動的に行います:
- ✅ SSHキーの自動設定
- ✅ SSH設定からすべての既存のホストをインポート
- ✅ 安全な認証の設定
- ✅ ポート8000でサービスを起動
手動での設定は不要です。 SSHで接続できるホストであれば、Docker Managerで管理できます。
✨ 主な機能
- 複数のDockerホストにアプリケーションをデプロイ
- コンテナを起動/停止/再起動操作で制御
- リアルタイムのログストリーミングでサービスを監視
- Docker Composeの設定を使用してスタックを管理
- ローリングアップデートを使用してダウンタイムなしでサービスを更新
- ポートの使用状況を確認して競合を回避
- SSH設定からホストを自動検出
🛠 3つのツール
AIアシスタントに平文英語で指示を与えるだけです。 複雑なコマンドやJSONは必要ありません。Dockerインフラストラクチャに対して行いたいことを説明するだけです。
ツール1: docker_hosts
簡素化されたDockerホスト管理ツールです。
アクション: • list: すべての構成済みDockerホストをリストする
- 必須: なし
• add: 新しいDockerホストを追加する(自動的にtest_connectionとdiscoverを実行)
- 必須: host_id, ssh_host, ssh_user
- オプション: ssh_port (デフォルト: 22), ssh_key_path, description, tags, enabled (デフォルト: true)
• ports: ホストのポート使用状況をリストまたは確認する
- 必須: host_id
- オプション: port (可用性チェック用)
• import_ssh: SSH設定からホストをインポートする(各ホストに対して自動的にtest_connectionとdiscoverを実行)
- 必須: なし
- オプション: ssh_config_path, selected_hosts
• cleanup: Dockerシステムのクリーンアップ操作
- 必須: host_id, cleanup_type
- 有効なcleanup_type: "check" | "safe" | "moderate" | "aggressive"
• test_connection: ホストの接続性をテストする(discoverも実行)
- 必須: host_id
• discover: ホスト上のパスと機能を検出する
- 必須: host_id ('all'を使用すると、すべてのホストを順次検出)
- 検出内容: compose_path, appdata_path
- 単一ホスト: 高速検出 (5 - 15秒)
- すべてのホスト: 順次検出 (合計30 - 60秒)
• edit: ホスト構成を変更する
- 必須: host_id
- オプション: ssh_host, ssh_user, ssh_port, ssh_key_path, description, tags, compose_path, appdata_path, enabled
• remove: 構成からホストを削除する
- 必須: host_id
• disk_usage: 読み取り専用のDockerディスク使用状況の概要(cleanup checkのエイリアス)
- 必須: host_id
自然言語の例:
"Add a new Docker host called production-1 at 192.168.1.100 with user dockeruser"
"Add host staging at 10.0.1.50 using SSH key ~/.ssh/staging_key"
"List all my Docker hosts"
"Check what ports are being used on production-1"
"Import hosts from my SSH config"
"Clean up Docker on production-1 using safe mode"
"Test connection to staging-server"
"Discover capabilities on all hosts"
"Update the compose path for production-1 to /opt/stacks"
"Remove the old-server host from my configuration"
ツール2: docker_container
統合されたDockerコンテナ管理ツールです。
アクション: • list: ホスト上のコンテナをリストする
- 必須: host_id
- オプション: all_containers, limit, offset
• info: コンテナの情報を取得する
- 必須: host_id, container_id
• start: コンテナを起動する
- 必須: host_id, container_id
- オプション: force, timeout
• stop: コンテナを停止する
- 必須: host_id, container_id
- オプション: force, timeout
• restart: コンテナを再起動する
- 必須: host_id, container_id
- オプション: force, timeout
• remove: コンテナを削除する
- 必須: host_id, container_id
- オプション: force
• logs: コンテナのログを取得する
- 必須: host_id, container_id
- オプション: follow, lines
• pull: ホストにコンテナイメージをプルする
- 必須: host_id, image_name
自然言語の例:
"List all containers on production-1"
"Include stopped containers on staging"
"Show info for the nginx container on production-1"
"Start the wordpress container on production-1"
"Force stop the mysql database on staging with a 30 second timeout"
"Restart the web server container on production-1"
"Remove the old cache container from staging"
"Tail the last 200 lines of logs for api-server on production-1"
"Pull the latest nginx image on production-1"
ツール3: docker_compose
統合されたDocker Composeスタック管理ツールです。
アクション: • list: ホスト上のスタックをリストする
- 必須: host_id
• view: スタックのComposeファイルを表示する
- 必須: host_id, stack_name
• deploy: スタックをデプロイする
- 必須: host_id, stack_name, compose_content
- オプション: environment, pull_images, recreate
• up/down/restart/build/pull: スタックのライフサイクルを管理する
- 必須: host_id, stack_name
- オプション: options
• ps: スタックのサービスを表示する(ステータスとポート)
- 必須: host_id, stack_name
• discover: ホスト上のComposeパスを検出する
- 必須: host_id
• logs: スタックのログを取得する
- 必須: host_id, stack_name
- オプション: follow, lines, services (サブセット)
• migrate: スタックをホスト間で移行する
- 必須: host_id, target_host_id, stack_name
- オプション: remove_source, skip_stop_source, start_target, dry_run
自然言語の例:
"List all stacks on production-1"
"Deploy wordpress stack to production-1 with this compose file: <content>"
"Deploy plex to media-server with DB_PASSWORD=secret123"
"Bring up the wordpress stack on production-1"
"Take down the old-app stack on staging"
"Restart the plex stack on media-server"
"Build the development stack on staging"
"Discover compose files on production-1"
"Show logs from the wordpress stack on production-1"
"Stream live logs from plex stack on media-server"
"Show last 200 lines from api-stack logs on staging"
"Migrate wordpress from old-server to new-server"
"Do a dry run migration of plex from server1 to server2"
"Migrate database stack and remove it from the source after"
🏗 アーキテクチャ: なぜ3つの統合ツールなのか?
Docker Manager MCPは、27個の個別ツールの代わりに統合アクションパラメータパターンを使用しています。このアーキテクチャの選択には以下の利点があります。
トークン効率
- 2.6倍の効率向上: 3つのツールは約5kトークンを使用するのに対し、27個の個別ツールは約9.7kトークンを使用します。
- より良いスケーラビリティ: 既存のツールに新しいアクションを追加する方が、新しいツールを作成するよりも効率的です。
- コンテキストの節約: 各ツールは約400 - 500トークンを追加しますが、統合によりこれが乗法的に削減されます。
複雑な操作のサポート
Docker管理には高度な多段階操作が必要です:
- 移行: 停止 → 検証 → アーカイブ → 転送 → デプロイ → 検証
- クリーンアップ: 分析 → 確認 → 実行 → 検証
- デプロイ: 検証 → プル → 設定 → 起動 → ヘルスチェック
ハイブリッド接続モデル
異なる操作には異なるアプローチが必要です:
- コンテナ操作: 効率のためにDockerコンテキスト(SSHトンネル経由のAPI)を使用
- スタック操作: Composeファイル管理のために直接SSH(ファイルシステムアクセス)を使用
サービス層の利点
- 集中的な検証: すべての操作で一貫した入力検証
- エラーハンドリング: 統一されたエラー報告と回復
- リソース管理: 接続プーリング、コンテキストキャッシュ、およびクリーンアップ
- ビジネスロジック: 単純なデコレータでは処理できない複雑なオーケストレーション
技術的な詳細については、を参照してください。
💡 実世界でのユースケース
WordPressサイトのデプロイ
# compose_content for WordPress deployment
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: secret
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
これを次の指示とともに使用します:"Deploy wordpress stack to production-1 with this compose file"
複数のホストを監視
AIアシスタントに以下のように尋ねるだけです:
- "Show me all my Docker hosts"
- "List all containers on each host"
- "Show me the logs from nginx on production-1"
- "Stream live logs from all my database containers"
緊急時のコンテナ管理
問題が発生した場合は、問題を説明するだけです:
- "Force stop all containers on production-1"
- "What's using port 80 on my staging server?"
- "Restart all my web services"
- "Show me what's currently running on production-1"
新しいホストにスタックを移行
ハードウェアアップグレード、負荷分散、または高速なストレージへの移行に最適です:
-
移行をテストする(ドライラン)
"Do a dry run migration of wordpress from old-server to new-server" -
Rsync移行(汎用互換性)
- デフォルトでは常にコンテナを停止する(安全性を最優先)
- すべてのコンテナが完全に停止していることを検証する(データ破損を防止)
- コンテナ停止後にファイルシステムの同期を待つ
- すべてのボリュームとデータをアーカイブする(キャッシュ、ログ、node_modulesは除外)
- 転送前にアーカイブの整合性を検証する
- 圧縮を使用してrsyncで転送する
- ターゲットホストのパスを更新する
- ターゲットでデプロイして起動する
- すべてのデータと構成を保持する
移行は以下を賢く処理します:
- 名前付きDockerボリュームとバインドマウント
- Compose構成と環境変数
- 異なるホスト構造間のパス変換
- 圧縮と差分同期を使用したRsync転送
- コンテナの停止と検証によるデータの一貫性
🔧 設定(オプション!)
Docker Manager MCPの素晴らしい点は、何も設定する必要がないことです。自動的に以下のことを行います:
- SSH設定からDockerホストを検出する
- 安全な接続を設定する
- 認証を管理する
ただし、カスタマイズしたい場合は以下の方法があります。
カスタムホストの追加
~/.docker-mcp/config/hosts.ymlを作成します:
hosts:
# Production Docker Host
production-server:
hostname: 192.168.1.100
user: myuser
description: "Production Docker server"
compose_path: /opt/compose # Where to store compose files
appdata_path: /opt/appdata # Container data directory
# Staging Docker Host
staging-server:
hostname: 192.168.1.101
user: myuser
description: "Staging Docker server"
compose_path: /opt/compose # Where to store compose files
appdata_path: /opt/appdata # Container data directory
環境変数の使用
FASTMCP_PORT=8080 # Change port
LOG_LEVEL=DEBUG # More verbose logging
FASTMCP_DATA_DIR=/var/lib/docker-mcp/data # Persist OAuth tokens & runtime data
DOCKER_MCP_DATA_DIR=/var/lib/docker-mcp/data # Alias for tooling expecting DOCKER_MCP_*
# OAuth Authentication (Optional but Recommended)
FASTMCP_ENABLE_OAUTH=true # Enable OAuth support (defaults to off)
FASTMCP_SERVER_AUTH=fastmcp.auth.GoogleProvider # Select Google OAuth provider
FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id # Google OAuth client ID
FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-client-secret # Google OAuth client secret
FASTMCP_SERVER_AUTH_GOOGLE_REDIRECT_PATH=/auth/callback # OAuth callback path
# Or use any other FastMCP auth provider by specifying its import path
🚀 転送方法
Rsync転送の特徴:
- 汎用互換性: 任意のLinux Dockerホストで動作します。
- データの整合性: チェックサムによるファイルレベルの検証。
- 増分転送: 圧縮を使用した差分同期で効率的です。
- メタデータ: パーミッション、タイムスタンプ、および所有権を保持します。
- 信頼性: リトライ機能を備えたファイル単位の転送。
- ユースケース: すべてのDocker環境で汎用互換性があります。
パフォーマンス:
- 大規模なデータセット: 効率的な差分転送により帯域幅を削減します。
- 小規模なスタック: 最小限のオーバーヘッドで迅速な転送が可能です。
- データベースの移行: コンテナの停止によりデータの一貫性が保証されます。
🐳 Dockerデプロイ
すでに含まれています!インストーラーがすべてを作成します:
# Check status
cd ~/.docker-mcp && docker compose ps
# View logs
cd ~/.docker-mcp && docker compose logs
# Update to latest
cd ~/.docker-mcp && docker compose pull && docker compose up -d
# Stop service
cd ~/.docker-mcp && docker compose down
🔒 組み込みのセキュリティ
- SSHキー認証のみ(パスワードは使用しません)
- Docker Manager専用のSSHキー(個人のキーとは分離されています)
- 永続的なデータボリューム (
FASTMCP_DATA_DIR) で、OAuth資格情報とランタイム状態を再起動間で保持します。 - OAuth認証サポート(Google、GitHub、または任意のFastMCPプロバイダ)
whoami診断ツールによるID検証- 設定用の読み取り専用マウント
- 乱用を防止するためのレート制限
- 非ルートコンテナの実行
- GitHub Actionsによる自動セキュリティ更新
OAuth認証の特徴
OAuthを有効にすると(FASTMCP_ENABLE_OAUTH=trueに設定し、FASTMCP_SERVER_AUTHを提供する):
- 動的なプロバイダの読み込み - Google、GitHub、またはカスタム認証プロバイダを使用できます。
whoamiツール - 認証されたユーザーのIDとクレームを検証します。- 安全なトークン処理 - FastMCPの堅牢な認証フレームワークに基づいています。
- 柔軟な構成 - 環境ベースの設定により簡単にデプロイできます。
💻 開発者向け
開発環境の迅速なセットアップ
git clone https://github.com/jmagar/docker-mcp
cd docker-mcp
uv sync
uv run docker-mcp
コードのフォーマット
uv run ruff format .
uv run ruff check . --fix
📁 中身の確認
docker-mcp/
├── docker_mcp/ # Main application
│ ├── server.py # FastMCP server with 3 consolidated tools
│ ├── core/ # Docker & SSH management
│ ├── services/ # Business logic
│ └── tools/ # Tool implementations
├── config/ # Example configurations
├── tests/ # Comprehensive test suite
└── install.sh # One-line installer
🆘 ヘルプが必要ですか?
コンテナが起動しない場合
AIアシスタントに以下のように尋ねるだけです:
"What's running on port 80 on my-server?"
"Show me the logs from my-app container on my-server"
"Why won't my nginx container start on production-1?"
ホストに接続できない場合
AIアシスタントにトラブルシューティングを依頼します:
"Test the connection to my staging server"
"Import all hosts from my SSH config"
"Add my new server at 192.168.1.100 to Docker Manager"
その他の問題の場合
- ログを確認する:
~/.docker-mcp/data/logs/ - デバッグモードを使用する:
LOG_LEVEL=DEBUG - 問題を報告する
🎉 Docker Manager MCPの魅力
- ゼロ設定 - 既存の設定ですぐに使用できます。
- 汎用管理 - すべてのDockerホストを一箇所から管理できます。
- AIフレンドリー - LLMによるインフラストラクチャのオーケストレーションに最適です。
- 本番環境対応 - レート制限、エラーハンドリング、およびロギングが組み込まれています。
- デフォルトで安全 - SSHキーのみを使用し、パスワードは一切使用しません。
- 常に最新 - Dockerを通じた自動更新が行われます。
📄 ライセンス
MITライセンスです。自由に使用できます!
🚀 今すぐ始めましょう
# Install in 10 seconds
curl -sSL https://raw.githubusercontent.com/jmagar/docker-mcp/main/install.sh | bash
# That's it! Start managing your Docker infrastructure
質問がありますか? 問題を報告する - お手伝いします!









