Skip to main content
Glama
svngoku

MCP Docker Sandbox Interpreter

by svngoku

MCP Docker サンドボックス インタープリター

モデル コンテキスト プロトコル (MCP) 用の安全な Docker ベースのコード実行環境。

概要

このプロジェクトは、MCP(モデルコンテキストプロトコル)を介してコードを実行するための安全なサンドボックスを提供します。これにより、AIアシスタントはホストシステムに直接アクセスすることなく、すべてのコードを独立したDockerコンテナ内で実行することで、安全にコードを実行できます。

graph LR
    A[Claude/Cursor] -->|Sends Code| B[MCP Server]
    B -->|Executes Code| C[Docker Sandbox]
    C -->|Returns Results| A

Related MCP server: SandboxRunner

特徴

  • セキュア実行: 厳格なセキュリティ制限のある分離された Docker コンテナ内でコードが実行されます。

  • 多言語サポート: 現在 Python をサポートしており、他の言語への拡張も容易です。

  • リソース制限: 不正使用を防ぐためのCPUとメモリの制限

  • MCP統合:モデルコンテキストプロトコルと完全に互換性があります

  • 自動セットアップ: コンテナの作成、依存関係のインストール、クリーンアップを処理します

要件

  • Docker (デスクトップまたはエンジン)

  • Python 3.10以上

  • MCP SDK ( pip install mcp )

  • Docker Python SDK ( pip install docker )

インストール

  1. このリポジトリをクローンします:

    git clone https://github.com/yourusername/mcp-docker-interpreter.git
    cd mcp-docker-interpreter
  2. 仮想環境を作成してアクティブ化します。

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  3. 依存関係をインストールします:

    pip install -r requirements.txt

使用法

MCPサーバーの起動

次のコマンドを実行してサーバーを起動します。

# For Colima users:
export DOCKER_HOST="unix:///Users/username/.colima/default/docker.sock"

# Run the server
uv run mcp dev main.py

AIアシスタントへの接続

この MCP サーバーを、モデル コンテキスト プロトコルをサポートする AI アシスタントに接続できます。

カーソル

カーソルで、MCP 設定に以下を追加します。

{
  "mcpServers": {
    "docker-sandbox": {
      "command": "python",
      "args": ["/absolute/path/to/your/main.py"],
      "env": {
        "DOCKER_HOST": "unix:///path/to/your/docker.sock"
      }
    }
  }
}

パスを実際のファイル パスに置き換えます。

クロードデスクトップ

カーソルと同様に、Claude Desktop の MCP 設定に構成を追加します。

MCPツール

この MCP サーバーは、次の 3 つの主要なツールを公開します。

  1. initialize_sandbox : コード実行用の新しい Docker コンテナを作成する

    Arguments:
    - image: The Docker image to use (default: "alpine:latest")
  2. execute_code : 初期化されたサンドボックス内でコードを実行する

    Arguments:
    - code: The code string to execute
    - language: Programming language (default: "python")
  3. stop_sandbox : コンテナを停止して削除する

    No arguments needed

仕組み

  1. initialize_sandboxが呼び出されると、システムは次の処理を実行します。

    • Alpine LinuxをベースにしたDockerコンテナを作成する

    • Pythonとその他の依存関係をインストールします

    • セキュリティ制限を設定する

  2. execute_codeが呼び出されると:

    • コードは分離されたコンテナ内で実行される

    • 標準出力とエラーがキャプチャされます

    • 結果は呼び出し元のアプリケーションに返されます

  3. stop_sandboxが呼び出されると:

    • コンテナが停止し、取り外される

    • すべてのリソースが解放される

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

このサンドボックスでは、いくつかのセキュリティ対策が実装されています。

  • コンテナはCPUとメモリの使用量が制限されている

  • コンテナは最小限の権限で実行される

  • ネットワークアクセスはデフォルトで無効になっています

  • 容器は使い捨てで、使用後は清掃する

発達

プロジェクト構造

mcp-docker-interpreter/
├── main.py          # Main implementation of MCP server and Docker sandbox
├── requirements.txt # Project dependencies
└── README.md        # This file

新しい言語サポートの追加

新しいプログラミング言語のサポートを追加するには、 DockerSandboxクラスのrun_codeメソッドを変更して、新しい言語を処理できるようにします。

トラブルシューティング

よくある問題

  1. Docker接続エラー:

    • Dockerが実行中であることを確認する

    • Dockerインストール時にDOCKER_HOST環境変数が正しく設定されているか確認します。

  2. コンテナの作成に失敗しました:

    • Dockerコンテナを作成する権限があることを確認する

    • 指定されたベースイメージにアクセスできることを確認する

  3. コード実行に失敗しました:

    • 言語ランタイムがコンテナに正しくインストールされていることを確認する

    • 指定された言語に対してコードが有効であることを確認します

ライセンス

MITライセンス

謝辞

Related MCP Connectors

Related MCP Servers