Docker MCP Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Support for installing and using Axios in Node.js containers as demonstrated in examples

  • Support for Debian-based containers with automatic apt-get package management

  • Deep integration with Docker to execute code in isolated containers, manage container lifecycles, and install dependencies

Docker MCP サーバー

分離された Docker コンテナ内でコードを実行し、その結果を Claude などの言語モデルに返す強力なモデル コンテキスト プロトコル (MCP) サーバー。

特徴

  • 分離されたコード実行: メインシステムから分離されたDockerコンテナでコードを実行します
  • 多言語サポート: Dockerイメージを使用して任意の言語でコードを実行
  • 複雑なスクリプトのサポート: 単純なコマンドと完全な複数行のスクリプトの両方を実行
  • パッケージ管理: pip、npm、apt-get、apk を使用して依存関係をインストールします
  • コンテナ管理: Dockerコンテナを簡単に作成、一覧表示、クリーンアップ
  • 堅牢なエラー処理: 適切なタイムアウト管理とフォールバックメカニズム
  • カラフルな出力: 明確で色分けされたコンソールフィードバック

要件

  • Python 3.9以上
  • Dockerがインストールされ実行中
  • fastmcpライブラリ

インストール

  1. このリポジトリをクローンします:
    git clone https://github.com/yourusername/docker_mcp_server.git cd docker_mcp_server
  2. 仮想環境を作成します。
    python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
  3. 必要なパッケージをインストールします。
    pip install -r requirements.txt

使用法

MCPインスペクターの実行

サーバーの機能をテストして調査するには:

python run_server.py

MCP Inspector インターフェイスがブラウザのhttp://localhost:5173で開きます。

利用可能なツール

Docker MCP サーバーは次のツールを提供します。

1. コンテナの一覧

すべての Docker コンテナとその詳細を一覧表示します。

  • パラメータ:
    • show_all : (オプション) 停止しているコンテナも含め、すべてのコンテナを表示するかどうか (デフォルト: True)

2. コンテナを作成する

オプションの依存関係を持つ Docker コンテナを作成して起動します。

  • パラメータ:
    • image : 使用する Docker イメージ (例: "python:3.9-slim", "node:16")
    • container_name : コンテナの一意の名前
    • dependencies : (オプション) インストールするパッケージのスペース区切りリスト (例: "numpy pandas", "express lodash")

3. 依存関係を追加する

既存の Docker コンテナに追加パッケージをインストールします。

  • パラメータ:
    • container_name : 対象コンテナの名前
    • dependencies : インストールするパッケージのスペース区切りリスト

4. コードを実行する

実行中の Docker コンテナ内でコマンドを実行します。

  • パラメータ:
    • container_name : 対象コンテナの名前
    • command : コンテナ内で実行するコマンド

5. Pythonスクリプトを実行する

実行中の Docker コンテナ内で複数行の Python スクリプトを実行します。

  • パラメータ:
    • container_name : 対象コンテナの名前
    • script_content : Pythonスクリプトの完全な内容
    • script_args : スクリプトに渡すオプションの引数

6. クリーンアップコンテナ

Docker コンテナを停止して削除します。

  • パラメータ:
    • container_name : クリーンアップするコンテナの名前

基本的なワークフローの例

# 1. List existing containers to see what's already running list_containers() # 2. Create a new container create_container( image="python:3.9-slim", container_name="python-example", dependencies="numpy pandas" ) # 3. Execute a command in the container execute_code( container_name="python-example", command="python -c 'import numpy as np; print(\"NumPy version:\", np.__version__)'" ) # 4. Add more dependencies later add_dependencies( container_name="python-example", dependencies="matplotlib scikit-learn" ) # 5. List containers again to confirm status list_containers(show_all=False) # Only show running containers # 6. Clean up when done cleanup_container(container_name="python-example")

Python データ分析の例

# 1. Create a container with dependencies create_container( image="python:3.9-slim", container_name="python-test", dependencies="numpy pandas matplotlib" ) # 2. Execute a Python script script = """ import numpy as np import pandas as pd import matplotlib.pyplot as plt # Create some data data = pd.DataFrame({ 'x': np.random.randn(100), 'y': np.random.randn(100) }) print(f"Data shape: {data.shape}") print(f"Data correlation: {data.corr().iloc[0,1]:.4f}") """ execute_python_script(container_name="python-test", script_content=script) # 3. Add additional dependencies later if needed add_dependencies(container_name="python-test", dependencies="scikit-learn") # 4. Verify container is running list_containers(show_all=False) # 5. Clean up when done cleanup_container(container_name="python-test")

Node.jsの例

# 1. Check for existing Node.js containers list_containers() # 2. Create a Node.js container create_container( image="node:16", container_name="node-test", dependencies="express axios" ) # 3. Execute a Node.js script execute_code( container_name="node-test", command="node -e \"console.log('Node.js version: ' + process.version); console.log('Express installed: ' + require.resolve('express'));\"" ) # 4. Add more dependencies add_dependencies(container_name="node-test", dependencies="lodash moment") # 5. Clean up when done cleanup_container(container_name="node-test")

パッケージマネージャーのサポート

Docker MCP サーバーは適切なパッケージ マネージャーを自動的に検出して使用します。

  • Pythonコンテナ: pipを使用する
  • Node.jsコンテナ: npmを使用
  • Debian/Ubuntuコンテナ: apt-get使用
  • アルパインコンテナapkを使用

イメージ名からパッケージ マネージャーが明らかでないコンテナーの場合、サーバーは利用可能なパッケージ マネージャーを検出しようとします。

クロードと他のLLMとの統合

このMCPサーバーは、Claudeやモデルコンテキストプロトコルをサポートする他のLLMと統合できます。Claudeに登録するには、 fastmcp installコマンドを使用してください。

fastmcp install src/docker_mcp.py

トラブルシューティング

  • ポートは既に使用されています: 「アドレスは既に使用されています」というエラーが表示される場合は、他の MCP Inspector インスタンスが実行されていないことを確認してください。
  • Docker 接続の問題: docker --versionを使用して Docker が実行されていることを確認します。
  • コンテナのタイムアウト: サーバーには、予期された時間内に応答しないコンテナのためのフォールバック メカニズムが含まれています。
  • パッケージのインストール失敗: 指定されたパッケージ マネージャーのパッケージ名が正しいことを確認してください。
  • コンテナーが見つかりません: list_containers に結果が表示されない場合は、Docker にまだコンテナーが作成されていない可能性があります。

セキュリティに関する考慮事項

このサーバーはDockerコンテナ内でコードを実行するため、ホストシステムから分離されます。ただし、以下の点にご注意ください。

  • 追加のセキュリティ対策を講じずにこのサーバーを公開しないでください
  • ホストボリュームをコンテナにマウントするときは注意してください
  • DoS攻撃を防ぐためにコンテナのリソース制限を検討する

ライセンス

MITライセンス

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

Docker コンテナ内での分離されたコード実行を容易にし、安全な多言語スクリプトの実行と、モデル コンテキスト プロトコルを介した Claude などの言語モデルとの統合を可能にします。

  1. Features
    1. Requirements
      1. Installation
        1. Usage
          1. Running the MCP Inspector
          2. Available Tools
          3. Examples
        2. Package Manager Support
          1. Integrating with Claude and Other LLMs
            1. Troubleshooting
              1. Security Considerations
                1. License
                  1. Contributing
                    ID: lqu9w7f3jf