Docker Mcp Server について
Docker Mcp Serverは、Python Docker SDKを介してDockerコンテナとイメージを操作するMCPサーバーです。コンテナ管理ツールやDocker情報リソースを必要とするMCPクライアント向けで、stdioとSSEに対応します。
主な機能
- 01コンテナとイメージの一覧表示
- 02コンテナの起動、停止、削除
- 03ログ表示とコンテナの検査
- 04Dockerイメージの取得
- 05Docker情報リソースの提供
- 06SSEのトークン認証オプション
活用シーン
- 01稼働中コンテナとイメージ一覧の確認
- 02MCPクライアントからのコンテナ起動や停止
- 03コンテナ詳細とログの検査
- 04トークンによるSSE接続の制限
MCP 対応
Docker操作をMCPツールとして、Dockerデータをリソースとして提供します。クライアントはstdioまたはSSEで接続でき、SSEではトークン認証を設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Docker MCP サーバー
これは、Docker コンテナやイメージを操作するためのツールとリソースを提供する Model Context Protocol(MCP)サーバーです。通信にはストリーム HTTP トランスポート方式を使用し、Docker の操作には Python Docker SDK(docker-py)を使用します。
機能
- Docker コンテナとイメージを一覧表示します
- コンテナを実行、停止、削除します
- コンテナのログを表示します
- Docker イメージをプルします
- コンテナの詳細を調査します
- Docker の情報にリソースとしてアクセスします
前提条件
- Docker
- Docker Compose(任意。デプロイを簡単にするために使用します)
- uv(ローカル開発用)
はじめに
Docker Compose で実行する
- このリポジトリをクローンします
- サーバーをビルドして起動します。
docker-compose up -d
Docker を直接使って実行する
- Docker イメージをビルドします。
docker build -t mcp-docker-server .
- コンテナを実行します。
# Run server with SSE transport (no authentication)
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 --name mcp-docker-server mcp-docker-server
# Run server with SSE transport and token authentication
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 -e MCP_AUTH_TOKEN=your_secret_token --name mcp-docker-server mcp-docker-server
MCP_PORT 環境変数が設定されている場合、サーバーは stdio ではなく SSE トランスポートを使用します。認証は SSE トランスポートを使用する場合にのみ適用されます。MCP_AUTH_TOKEN 環境変数が設定されている場合、サーバーはトークン認証を有効にし、SSE エンドポイントを /sse/{token} 形式に設定します。この {token} は MCP_AUTH_TOKEN に設定された値と一致する必要があります。トークンが一致しない場合、または指定されていない場合、接続は拒否されます。トークンが設定されていない場合、サーバーは認証なしで標準の /sse エンドポイントを使用します。
ローカルで実行する(開発)
- uv をインストールします(未インストールの場合)。
curl -sSf https://astral.sh/uv/install.sh | sh
- uv を使って依存関係をインストールします。
uv sync
- サーバーを実行します。
# Run with stdio transport (default)
uv run server.py
# Run with SSE transport on port 8000
MCP_PORT=8000 uv run server.py
# Run with SSE transport and token authentication
MCP_PORT=8000 MCP_AUTH_TOKEN=your_secret_token uv run server.py
設定
サーバーは環境変数を使って設定できます。
MCP_PORT:設定すると、SSE トランスポートモードが有効になり、待ち受けるポートを指定します(デフォルト:8000)。設定されていない場合、サーバーは stdio トランスポートを使用します。MCP_AUTH_TOKEN:認証用の秘密トークンです(SSE トランスポートを使用する場合にのみ適用されます)。設定すると、SSE エンドポイントは/sseではなく/sse/{token}になります。MCP_HOSTNAME:Docker コンテナに使用するホスト名です(デフォルト:localhost)。コンテナの作成後にアクセスする際に使用する、ドメイン名または IP アドレスを指定できます。MCP_AVAILABLE_PORTS:Docker コンテナがバインドできるポートまたはポート範囲をカンマ区切りで指定したリストです(例:8000,8080-8090,9000)。指定すると、サーバーは要求されたホストポートがこのリストに含まれているかを検証します。
MCP クライアントでの使用
最初に Docker イメージをビルドしてください。
{
"mcpServers": {
"docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/var/run/docker.sock:/var/run/docker.sock",
"mcp-docker-server"
]
}
}
}
利用可能なツール
docker_ps:実行中のコンテナを一覧表示しますdocker_images:利用可能な Docker イメージを一覧表示しますdocker_inspect:コンテナの詳細情報を取得しますdocker_run:Docker コンテナを実行しますdocker_stop:実行中のコンテナを停止しますdocker_rm:コンテナを削除しますdocker_logs:コンテナのログを取得しますdocker_pull:Docker イメージをプルします
利用可能なリソース
docker://containers:すべてのコンテナに関する情報docker://images:すべてのイメージに関する情報docker://container/{container_id}:特定のコンテナの詳細情報docker://config/hostname:Docker コンテナに設定されたホスト名を取得しますdocker://config/available_ports:Docker コンテナで利用可能なポートのリストを取得します
TODO
- 特定の Docker イメージのドキュメントを検索する機能を追加する
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。