Docker MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows management of Docker with natural language, including composing containers, introspecting running containers, and managing Docker volumes, networks, and images.

  • Allows deployment of MySQL containers through natural language commands.

  • Allows deployment of NGINX containers through natural language commands.

🐋 Docker MCP サーバー

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

🪩 何ができるの?

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

❓ これは誰向けですか?

  • サーバー管理者: 公開 Web サイトの管理などのためにリモート Docker エンジンに接続します。
  • Tinkerers: コンテナをローカルで実行し、Docker をサポートするオープンソース アプリを試します。
  • AI 愛好家の皆さん、LLM の能力の限界を押し広げましょう!

デモ

自然言語を使用した WordPress の展開を示す簡単なデモ:

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

🏎️ クイックスタート

インストール

クロードデスクトップ

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

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

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

次に、MCP サーバー ファイルに次のコードを追加します。

"mcpServers": { "mcp-server-docker": { "command": "uvx", "args": [ "mcp-server-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が計画を再計算します

  • 名前: nginx 、コンテナ: 「ポート 9000 で公開する nginx コンテナをデプロイする」
  • 名前: wordpress 、コンテナ: 「WordPress コンテナとそれをサポートする MySQL コンテナをデプロイし、Wordpress をポート 9000 で公開する」

プロジェクトの再開

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

これは主に、多くのコンテナを担当していたチャットが失われた場合にクリーンアップするのに役立ちます。

📔 リソース

サーバーは、コンテナごとにいくつかのリソースを実装します。

  • 統計: コンテナの CPU、メモリなど
  • ログ: コンテナからいくつかのログを tail する

🔨 ツール

コンテナ

  • 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 と交換される機密データは本質的に危険にさらされます。

シークレットをコンテナに安全に渡すことに関心がある場合は、このリポジトリにユースケースを記載した問題を報告してください。

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

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

安全上の理由から、このMCPサーバーは--privileged--cap-add/--cap-dropといった機密性の高いDockerオプションをサポートしていません。これらの機能にご興味がある場合は、このリポジトリにユースケースを記載して問題を提出してください。

🛠️ 構成

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

💻 開発

開発環境を構成するには、Devbox を使用することをお勧めします。

役立つ開発コマンドについては、 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" ] },
-
security - not tested
A
license - permissive license
-
quality - not tested

自然言語で Docker コンテナを管理できる MCP サーバー。ユーザーは自分でコマンドを実行しなくてもコンテナを作成、イントロスペクト、デバッグできます。

  1. 🪩 What can it do?
    1. ❓ Who is this for?
      1. Demo
        1. 🏎️ Quickstart
          1. Install
        2. 📝 Prompts
          1. 🎻 docker_compose
        3. 📔 Resources
          1. 🔨 Tools
            1. Containers
            2. Images
            3. Networks
            4. Volumes
          2. 🚧 Disclaimers
            1. Sensitive Data
            2. Reviewing Created Containers
          3. 🛠️ Configuration
            1. 💻 Development
              ID: dmna3tblnr