Docker MCP Server について
Docker MCP Server は Docker と Docker Swarm の操作を MCP クライアント向けのツールとして公開します。MCP Mediator を基盤とし、Docker サービスのメソッドからツールを生成でき、Docker デーモンと TLS の設定にも対応します。
主な機能
- 01コンテナ、イメージ、ボリュームの管理
- 02ネットワーク、サービス、Swarm の確認
- 03コマンド実行とログ取得
- 04Docker ホストと TLS の設定
- 05サービスメソッドから MCP ツールを生成
活用シーン
- 01コンテナの状態とリソース使用量を調べる
- 02Docker Swarm のノードとサービスを管理する
- 03ツール経由でイメージをビルド、取得、削除する
MCP 対応
MCP Mediator を介して Docker と Docker Swarm のコマンドを MCP ツールとして公開します。Docker デーモンのオプションを設定したサーバープロセスにクライアントが接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Docker MCP サーバー
このモジュールは、mcp_mediator コアフレームワークを基盤とする、Docker コマンド用の Model Context Protocol MCP サーバーの実装を提供します。
Docker MCP サーバーは、MCP Mediator の サーバー自動生成機能を活用して、既存の Docker コマンドを MCP ツールとして公開します。
ツールの見つけやすさと使いやすさを高めるため、各コマンドには必要に応じて最小限の説明とともに @McpTool を付与できます。
👉 対応コマンドの一覧はこちらをご覧ください。

重要
これはmcp_mediatorプロジェクトの一部です:https://github.com/makbn/docker_mcp_server ビルドまたは変更するには、親リポジトリをクローンしてください:git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git
使用例
java -jar docker-mcp-server.jar \
--docker-host=tcp://localhost:2376 \
--tls-verify \
--cert-path=/etc/docker/certs \
--server-name=my-server \
--server-version=1.0.0 \
--max-connections=150 \
--docker-config=/custom/docker/config
java -jar を使って Docker MCP サーバーを Claude Desktop で実行するには:
{
"mcpServers": {
"my_java_mcp_server": {
"command": "java",
"args": [
"-jar",
"docker-mcp-server.jar"
"--docker-host=tcp://localhost:2376",
"--tls-verify", # not required
"--cert-path=/etc/docker/certs", # required only if --tls-verify is available
"--server-name=my-docker-mcp-server",
"--server-version=1.0.0",
"--max-connections=150",
"--docker-config=/custom/docker/config"
]
}
}
}
または、ネイティブイメージを作成して(以下の手順を参照)、スタンドアロンアプリケーションを使用します:
{
"mcpServers": {
"my_java_mcp_server": {
"command": "docker-mcp-server-executable",
"args": [
"--docker-host=tcp://localhost:2376" // rest of args
]
}
}
}
ビルド方法
実行可能ファイルをビルドするには:
mvn clean compile package
このコマンドは、target フォルダーに mcp-mediator-implementation-docker-[version].jar という JAR ファイルを作成します。ここで終了して、JAR ファイルを java -jar コマンドで実行できます。または、GraalVM ネイティブイメージを使用してスタンドアロンの実行可能アプリケーションを作成できます:
native-image -jar mcp-mediator-implementation-docker-[version].jar
このコマンドは、実行可能なファイル 'mcp-mediator-implementation-docker-[version] を作成します。
MCP ツールの自動生成
このプロジェクトは、MCP Mediator と連携して、既存の Docker サービスから MCP ツールを自動生成します。
Docker サービスクラスの各メソッドには、ツールの 名前、説明、その他のメタデータを明示的に定義するため、必要に応じて @McpTool を付与できます。
ただし、アノテーションは 必須ではありません。MCP Mediator は、メソッド名、クラス名、パッケージ名から詳細を推測して、アノテーションのないメソッドのツールを自動生成できます。この動作を有効にするには、createForNonAnnotatedMethods を true に設定してください:
DefaultMcpMediator mediator = new DefaultMcpMediator(McpMediatorConfigurationBuilder.builder()
.createDefault()
.serverName(serverName)
.serverVersion(serverVersion)
.build());
mediator.
registerHandler(McpServiceFactory.create(dockerClientService)
.
createForNonAnnotatedMethods(true)); // Enables support for non-annotated methods
MCP Mediator の設定全体については、io.github.makbn.mcp.mediator.docker.server.DockerMcpServer を確認してください。
サポートされている CLI オプション
| オプション | 説明 | デフォルト |
|---|---|---|
--docker-host | Docker デーモンのホスト URI | unix:///var/run/docker.sock |
--tls-verify | TLS 検証を有効にします(--cert-path と併用) | false |
--cert-path | Docker TLS クライアント証明書のパス(TLS が有効な場合は必須) | none |
--docker-config | カスタム Docker 設定ディレクトリ | ~/.docker |
--server-name | MCP サーバーのサーバー名 | docker_mcp_server |
--server-version | サーバーのバージョンラベル | 1.0.0.0 |
--max-connections | Docker デーモンへの最大接続数 | 100 |
--help | 使用方法と利用可能なオプションを表示します | n/a |
環境変数:
| オプション | 説明 | デフォルト |
|---|---|---|
DOCKER_MCP_LOG_LEVEL | ログレベル(TRACE、DEBUG、INFO など) | DEBUG |
DOCKER_MCP_LOG_FILE | ログ出力ファイルのパス | logs/docker_mcp_server.log |
MCP サーバーツールとしてサポートされている Docker コマンド
| MCP ツール名 | 説明 |
|---|---|
| docker_start_container | ID を指定して Docker コンテナを起動します。 |
| docker_stop_container | ID を指定して Docker コンテナを停止します。 |
| docker_leave_swarm | Docker Swarm からノードを削除します。 |
| docker_container_diff | コンテナのファイルシステムに加えられた変更を表示します。 |
| docker_build_image_file | Dockerfile またはディレクトリからイメージをビルドします。 |
| docker_inspect_volume | Docker ボリュームの詳細を取得します。 |
| docker_remove_service | ID を指定して Docker サービスを削除します。 |
| docker_list_containers | オプションのフィルターを適用してコンテナを一覧表示します。 |
| docker_inspect_swarm | Docker Swarm の詳細を調べます。 |
| docker_push_image | イメージをレジストリにプッシュします。認証に対応しています。 |
| docker_copy_archive_to_container | tar アーカイブを実行中のコンテナにコピーします。 |
| docker_stats_container | コンテナの統計情報(CPU、メモリなど)を取得します。 |
| docker_disconnect_container_from_network | コンテナを Docker ネットワークから切断します。 |
| docker_remove_container | オプションで強制削除を指定してコンテナを削除します。 |
| docker_inspect_service | Docker サービスを調べます。 |
| docker_remove_secret | ID を指定して Docker シークレットを削除します。 |
| docker_pull_image | イメージをレジストリからプルします。認証に対応しています。 |
| docker_inspect_container | コンテナの設定と状態を調べます。 |
| docker_unpause_container | 一時停止中のコンテナを再開します。 |
| docker_list_images | オプションのフィルターを適用して Docker イメージを一覧表示します。 |
| docker_list_services | Swarm 内のすべての Docker サービスを一覧表示します。 |
| docker_remove_image | 強制削除とプルーニングのオプションを指定してイメージを削除します。 |
| docker_create_network | Docker ネットワークを作成します。 |
| docker_tag_image | イメージに新しいリポジトリ名とタグを付けます。 |
| docker_authenticate | Docker レジストリに認証します。 |
| docker_exec_command | コンテナ内でコマンドを実行します。 |
| docker_remove_swarm_node | オプションで強制削除を指定して Swarm ノードを削除します。 |
| docker_search_images | Docker Hub でイメージを検索します。 |
| docker_list_networks | すべての Docker ネットワークを一覧表示します。 |
| docker_remove_volume | Docker ボリュームを削除します。 |
| docker_create_container | カスタム設定でコンテナを作成します。 |
| docker_remove_network | Docker ネットワークを削除します。 |
| docker_copy_archive_from_container | コンテナからホストにファイルをコピーします。 |
| docker_rename_container | Docker コンテナの名前を変更します。 |
| docker_pause_container | 実行中のコンテナを一時停止します。 |
| docker_version | Docker のバージョン情報を取得します。 |
| docker_list_swarm_nodes | Docker Swarm 内のすべてのノードを一覧表示します。 |
| docker_log_container | コンテナのログを取得します。 |
| docker_prune | 未使用の Docker リソースをプルーニングします。 |
| docker_inspect_network | ネットワークの詳細情報を取得します。 |
| docker_kill_container | コンテナに kill シグナルを送信します。 |
| docker_top_container | コンテナ内で実行中のプロセスを取得します。 |
| docker_list_volumes | オプションのフィルターを適用して Docker ボリュームを一覧表示します。 |
| docker_update_swarm_node | Swarm ノードの設定を更新します。 |
| docker_info | Docker システム全体の情報を表示します。 |
| docker_log_service | Docker サービスのログを取得します。 |
| docker_load_image | tar アーカイブからイメージを読み込みます。 |
| docker_list_tasks | Docker Swarm 環境内のタスクを一覧表示します。 |
| docker_save_image | Docker イメージをローカルの tar ファイルに保存します。 |
| docker_join_swarm | 既存の Swarm クラスターにノードを参加させます。 |
| docker_create_volume | 新しい Docker ボリュームを作成します。 |
| docker_initialize_swarm | 新しい Docker Swarm クラスターを初期化します。 |
| 作業中です。今後、内容を追加する予定です。 |
DockerClientService の機能カバレッジ
利用可能なツールと実装予定のツールの全一覧については、DockerClientService クラスを確認してください。
重要
MCP ツールの説明と名前のほとんどは、AI エージェントを使用して自動生成されています!
🧩 リポジトリ構造と Git サブツリーの設定
このプロジェクトは、親リポジトリ
makbn/mcp_mediator の Git サブツリーモジュールです。独立したバージョン管理、CI、リリースプロセスをサポートするために独自のリポジトリで管理しながら、メインの mcp_mediator モノレポにも統合されています。
🔀 クローンの構造
mcp_mediator システム全体のコンテキストで作業する場合:
`git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git`
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。まずはこちらをお読みください!
ライセンス
このプロジェクトは GPL3 ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。