mcpField
🐋
🐋 Docker MCP server

🐋 Docker MCP server

ローカル
github.com/ckreilingクラウド・インフラ74912 週間前に更新

🐋 Docker MCP server について

Docker MCP サーバーは、自然言語で Docker を管理するための MCP サーバーです。サーバー管理者、個人で試す開発者、AI に関心を持つ人を想定しています。コンテナの構成、確認、片付けを行えます。

主な機能

  1. 01自然言語による計画に基づくコンテナ構成
  2. 02実行中のコンテナの確認とデバッグ
  3. 03Docker ボリュームとネットワークの管理
  4. 04SSH 経由のリモート Docker エンジンへの接続

活用シーン

  1. 01MySQL コンテナを伴う WordPress のデプロイ
  2. 02デバッグ時のコンテナログと統計情報の確認
  3. 03公開サイト用のリモート Docker ホストの管理

MCP 対応

本プロジェクトは MCP サーバーであり、コンテナ・イメージ・ネットワーク・ボリュームのツールと、コンテナのログおよび統計情報のリソーステンプレートを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

🐋 Docker MCP サーバー

自然言語で Docker を管理する MCP サーバーです!

🪩 できること

  • 🚀 自然言語でコンテナを構成
  • 🔍 実行中のコンテナを調査してデバッグ
  • 📀 Docker ボリュームで永続データを管理

❓ 対象ユーザー

  • サーバー管理者:一般公開ウェブサイトの管理などのために、リモート Docker エンジンに接続します。
  • いろいろ試したい方:コンテナをローカルで実行し、Docker に対応するオープンソースアプリを試します。
  • AI 愛好家:LLM の能力の限界に挑戦します!

デモ

自然言語を使って WordPress をデプロイする簡単なデモです:

https://github.com/user-attachments/assets/65e35e67-bce0-4449-af7e-9f4dd773b4b3

🏎️ クイックスタート

インストール
Claude Desktop

MacOS の場合:~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows の場合:%APPDATA%/Claude/claude_desktop_config.json

uv を使用して PyPi からインストール

uv がインストールされていない場合は、お使いのシステム向けのインストール手順に従ってください: リンク

次に、MCP サーバーの設定ファイルに以下を追加します:

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ]
  }
}
Docker を使用してインストール

利便性のため、サーバーは Docker コンテナ内で実行できます。

このリポジトリをクローンした後、Docker イメージをビルドします:

docker build -t mcp-server-docker .

次に、MCP サーバーの設定ファイルに以下を追加します:

"mcpServers": {
  "mcp-server-docker": {
    "command": "docker",
    "args": [
      "run",
      "-i",
      "--rm",
      "-v",
      "/var/run/docker.sock:/var/run/docker.sock",
      "mcp-server-docker:latest"
    ]
  }
}

Docker ソケットをボリュームとしてマウントしている点にご注意ください。これにより、MCP サーバーはローカルの Docker デーモンに接続し、制御できます。

📝 プロンプト

🎻 docker_compose

自然言語でコンテナを構成します。デモについては上記をご覧ください。

プロジェクト名と、必要なコンテナの説明を指定すると、残りは LLM が処理します。

このプロンプトは、LLM が plan+apply のループに入るよう指示します。LLM とのやり取りは、次の手順で進みます:

  1. 起動するコンテナについて、LLM に指示します
  2. LLM が簡潔な自然言語のプランを作成し、提示します
  3. 次のいずれかを選択します:
    • プランを適用する
    • LLM にフィードバックを伝え、LLM がプランを再作成する
例
  • name: nginx、containers: 「nginx コンテナをデプロイし、ポート 9000 で公開する」
  • name: wordpress、containers: 「WordPress コンテナと、それを支える MySQL コンテナをデプロイし、WordPress をポート 9000 で公開する」
プロジェクトの再開

このプロンプトを使って新しいチャットを開始すると、LLM は指定したプロジェクトの name で作成されたコンテナ、ボリューム、ネットワークの状態を受け取ります。

これは主に、多数のコンテナを管理していたチャットを失った場合の後片付けに役立ちます。

📔 リソース

サーバーは、現在実行中のコンテナを列挙する代わりに、リソーステンプレートを公開します:

  • docker://containers/{container_id}/logs (text/plain)
  • docker://containers/{container_id}/stats (application/json)

Docker のコンテナ ID または名前を指定して、どちらの URI からもデータを読み取れます。

🔨 ツール

コンテナ
  • list_containers
  • create_container
  • run_container
  • recreate_container
  • start_container
  • fetch_container_logs
  • stop_container
  • remove_container
イメージ
  • list_images
  • pull_image
  • push_image
  • build_image
  • remove_image
ネットワーク
  • list_networks
  • create_network
  • remove_network
ボリューム
  • list_volumes
  • create_volume
  • remove_volume

🚧 免責事項

機密データ

機密データを含むコンテナを設定しないでください。 API キーやデータベースのパスワードなどがこれに含まれます。

LLM とやり取りする機密データは、LLM がローカルマシンで実行されていない限り、必然的に漏えいしたものとみなされます。

コンテナにシークレットを安全に渡す方法に関心がある場合は、ユースケースを添えてこのリポジトリに Issue を作成してください。

作成されたコンテナの確認

LLM が作成するコンテナは慎重に確認してください。Docker は安全なサンドボックスではないため、MCP サーバーが Docker を介してホストマシンに影響を及ぼす可能性があります。

安全上の理由から、この MCP サーバーは --privileged や --cap-add/--cap-drop などの機密性の高い Docker オプションをサポートしていません。これらの機能に関心がある場合は、ユースケースを添えてこのリポジトリに issue を登録してください。

🛠️ 設定

このサーバーは、Python Docker SDK の from_env メソッドを使用します。設定の詳細については、ドキュメントを参照してください。

SSH 経由で Docker に接続する

この MCP サーバーは、SSH 経由でリモート Docker デーモンに接続できます。

MCP サーバーの定義に ssh:// ホスト URL を設定するだけです。

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ],
    "env": {
      "DOCKER_HOST": "ssh://[email protected]"
    }
  }
}

💻 開発

開発環境の設定には Devbox の使用をお勧めします。このサーバーは MCP Python SDK v2 の高水準 MCPServer API を使用しており、直接調査できます。

uv sync --all-groups
uv run mcp dev src/mcp_server_docker/server.py:app
# or: npx @modelcontextprotocol/inspector uv run mcp-server-docker

Docker デーモンを使用せずに、隔離されたテストおよび lint スイートを実行します。

uv run pytest
uv run ruff format --check src tests
uv run ruff check src tests

開発に役立つコマンドについては、devbox.json を参照してください。

devbox のセットアップ後、Claude MCP の設定でこれを使用するように設定できます。

  "docker": {
    "command": "/path/to/repo/.devbox/nix/profile/default/bin/uv",
    "args": [
      "--directory",
      "/path/to/repo/",
      "run",
      "mcp-server-docker"
    ]
  },

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。