Skip to main content
Glama

アイソレータMCPサーバー

isolator-mcp TypeScript で記述されたModel Context Protocol (MCP)サーバーです。組み込みのisolatorラッパーとして機能し、MCP 経由でアクセス可能な安全なコード実行サンドボックスを提供します。

LLM アプリケーション (MCP ホスト) はこのサーバーに接続し、 execute_codeツールを使用して、直接提供された、または事前定義されたスニペット ファイルから読み込まれた Python、Go、または JavaScript コード スニペットを安全に実行できます。

特徴

  • execute_code MCP ツールを提供します。

  • 直接提供されたコード ( languageentrypoint_code ) または名前付きスニペット ( snippet_name ) 経由での実行をサポートします。

  • 複数の言語 (Python、Go、JavaScript、構成可能) をサポートします。

  • 組み込みのisolator Go CLI ( isolator-cli/ ) を使用して、Docker コンテナを安全に実行します。

  • isolator_config.jsonを介して構成可能なセキュリティのデフォルト (タイムアウト、リソース制限、ネットワーク)。

  • コード実行のためにホスト上の一時ディレクトリを管理します。

  • コンテナへのファイルのコピーを処理します ( isolator CLI に指示することにより)。

  • ツールレベルの失敗時にisError: trueを設定し、MCP 経由で構造化された結果 (stdout、stderr、ステータス) を返します。

Related MCP server: Hello World MCP Server

前提条件

  • Docker: isolator-cliによるコンテナの作成と実行に必要です。Docker デーモンが実行中であることを確認してください。

  • **Go:**組み込みのisolator-cli Go バイナリをビルドするために必要です。

  • **Node.js および npm:**依存関係をインストールし、 isolator-mcp TypeScript サーバーをビルドおよび実行するために必要です。

インストール

  1. **isolator Go CLI をビルドする:**埋め込まれた Go CLI ディレクトリに移動し、バイナリをビルドします。

    cd isolator-cli go build -o isolator main.go cd ..

    これにより、サーバーに必要な./isolator-cli/isolator実行可能ファイルが作成されます。

  2. isolator-mcp

    • isolator_config.jsonを編集します。isolatorPath isolatorPath更新し、ビルドされたバイナリの絶対パス(例: /Users/ompragash/Documents/Cline/MCP/isolator-mcp/isolator-cli/isolator )を指定します。必要に応じて、デフォルトの制限、コンテナの作業ディレクトリ、言語イメージ、またはpromptsDir (スニペット用)の場所を調整します。

    • promptsディレクトリが存在することを確認してください(デフォルト: ./prompts )。コードスニペットファイル(例: hello_world.py )を追加します。ファイル名のベース(例: hello_world )がsnippet_nameとして使用されます。

  3. **サーバーの依存関係をインストールします。**メイン ディレクトリ ( isolator-mcp ) に移動して、次のコマンドを実行します。

    npm install
  4. ビルドサーバー: TypeScript コードをコンパイルします。

    npm run build

    これによりbuild/index.jsに実行可能スクリプトが作成されます。

  5. MCP ホストを構成する: MCP クライアントの設定ファイル (例: VS Code 拡張機能の場合はcline_mcp_settings.json ) にサーバーを追加します。

    { "mcpServers": { "isolator": { "command": "node", "args": ["/Users/ompragash/Documents/Cline/MCP/isolator-mcp/build/index.js"], "env": {}, "disabled": false, "autoApprove": [] } } }

    (必要に応じて 。MCPホストはサーバーを自動的に検出して起動します。

重要事項: isolator_config.jsonで指定されているDockerイメージ(例: python:3.11-alpinegolang:1.21-alpine )が、 docker pull <image_name> 。isolator isolatorは、不足しているイメージを自動的にダウンロードしません。

ローカル開発/テスト

開発またはテストのためにサーバーをローカルで実行するには(MCP ホスト設定でインストールせずに):

  1. Go CLI をビルドする: isolator Go CLI がサブディレクトリ内にビルドされていることを確認します。

    cd isolator-cli go build -o isolator main.go cd ..
  2. **TS サーバーのビルド:**このメイン ディレクトリ ( isolator-mcp ) で、 npm installnpm run build実行します。

  3. 構成: isolator_config.json``isolatorPathキーを介してビルドされた./isolator-cli/isolatorバイナリを正しく指していることを確認します (絶対パスを使用)。

  4. サーバーの実行: Node を使用して構築されたサーバーを直接実行します。

    node build/index.js

    サーバーが起動し、stdio 経由で接続し、ログ ( index.tsからのconsole.errorメッセージを含む) をコンソールに出力します。

  5. 操作(手動): JSON-RPCメッセージ(例: tools/listtools/call )をサーバーの標準入力に手動で送信し、レスポンスをテストできます。 @modelcontextprotocol/inspectorなどのツールも役立ちます( npm run inspector )。

(MCP ホストに依存して設定ファイル経由でサーバーを起動する前に、手動で実行されているこのサーバーを必ず停止してください。)

アーキテクチャとフロー

  1. MCP ホスト要求: LLM は、MCP ホスト (VS Code 拡張機能など) に引数を指定してisolatorサーバーのexecute_codeツールを呼び出すように要求します。

  2. サーバー処理 (

    • stdio 経由でtools/call要求を受信します。

    • Zod を使用して引数を検証します。

    • isolator_config.jsonから構成を読み込みます。

    • コード ソースを決定します。

      • snippet_nameが指定されている場合は、構成されたpromptsDirから対応するファイルを読み取り、ファイル拡張子から言語を決定します。

      • entrypoint_codelanguageが指定されている場合は、それらを直接使用します。

    • ホスト上に一時ディレクトリを作成します。

    • エントリポイント コードとすべてのadditional_filesを一時ディレクトリに書き込みます。

    • 組み込みisolator Go CLI のコマンドライン引数を構築します。これには、構成からのセキュリティ フラグと一時ディレクトリへのパスが含まれます。

    • Node.js child_process.spawnを使用してisolatorプロセスを生成します。

  3. Go CLI 実行 (

    • フラグを解析します (新しい--envフラグを含む)。

    • 一時ディレクトリの内容の tar ストリームを作成します。

    • Docker SDK を使用して、指定されたイメージ、リソース制限、環境変数 ( --envから)、およびセキュリティ設定 (バインドマウントなし) を持つコンテナーを作成します。

    • CopyToContainerを使用して、tar ストリームをコンテナの作業ディレクトリにコピーします。

    • コンテナを起動し、要求されたコマンド (例: python /workspace/hello_world.py ) を実行します。

    • 完了を待機し、stdout/stderr をキャプチャします。

    • コンテナを削除します。

    • 結果 (ステータス、出力など) を JSON として stdout に出力します。

  4. サーバー結果処理 (

    • 完了したisolatorプロセスの stdout から JSON 出力を読み取ります。

    • JSON の結果を解析します。

    • CallToolResult MCP 用にフォーマットし、stdout/stderr を結合し、Go CLI が非成功ステータスを報告した場合にisErrorを設定します。

    • 結果を MCP ホストに送り返します。

    • ホスト上の一時ディレクトリをクリーンアップします。

  5. **MCP ホスト応答:**結果を LLM に中継し、LLM がユーザーへの応答を作成します。

execute_codeツール

説明

安全で分離されたコンテナ環境でコード (Python、Go、JavaScript) を実行します。

入力スキーマ( arguments

  • language (文字列、オプション): プログラミング言語(例: "python"、"go"、"javascript")。 snippet_nameが指定されていない場合は必須です。

  • entrypoint_code (文字列、オプション):実行するメインコードの内容。snippet_nameが指定snippet_nameれていない場合は必須です。

  • entrypoint_filename (文字列、オプション): メインコードのファイル名(例: "main.py"、"script.js")。指定されていない場合は、言語に基づいてデフォルトが設定されます。

  • additional_files (配列、オプション): オブジェクトの配列。各オブジェクトには次の内容が含まれます。

    • filename (文字列、必須): 追加ファイルの名前。

    • content (文字列、必須): 追加ファイルの内容。

  • snippet_name (文字列、オプション): 設定されたpromptsDirにある、定義済みのコードスニペットファイル(拡張子なし)の名前。language およびentrypoint_codeとは相互language排他的です。

制約: snippet_nameいずれか、またはlanguageentrypoint_codeの両方を指定する必要があります。

出力 ( CallToolResult )

  • content : 単一のTextContentオブジェクトを含む配列。

    • type :「テキスト」

    • text : 実行からの stdout と stderr を組み合わせた文字列。形式は次のようになります。

      --- stdout --- [Actual stdout output] --- stderr --- [Actual stderr output]

      実行中にエラーが発生した場合 (終了コードがゼロ以外、タイムアウト)、テキストの先頭にExecution Failed (status): [error message]\n\n追加されます。

  • isError (ブール値): isolator CLI によって報告された実行ステータスが「エラー」または「タイムアウト」の場合はtrue 、それ以外の場合はfalse

(無効な引数やプロセスの開始の失敗などのプロトコル レベルのエラーが発生すると、

One-click Deploy
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ompragash/isolator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server