Skip to main content
Glama

Isolator MCP Server

by Ompragash

アイソレータMCPサーバー

isolator-mcp TypeScript で記述されたModel Context Protocol (MCP)サーバーです。組み込みのisolator Go CLI ツールのラッパーとして機能し、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、ステータス) を返します。

前提条件

  • 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": [] } } }
    (必要に応じてargsのパスを調整してください) 。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. サーバー処理 ( index.ts ):
    • 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 実行 ( isolator-cli/isolator run ):
    • フラグを解析します (新しい--envフラグを含む)。
    • 一時ディレクトリの内容の tar ストリームを作成します。
    • Docker SDK を使用して、指定されたイメージ、リソース制限、環境変数 ( --envから)、およびセキュリティ設定 (バインドマウントなし) を持つコンテナーを作成します。
    • CopyToContainerを使用して、tar ストリームをコンテナの作業ディレクトリにコピーします。
    • コンテナを起動し、要求されたコマンド (例: python /workspace/hello_world.py ) を実行します。
    • 完了を待機し、stdout/stderr をキャプチャします。
    • コンテナを削除します。
    • 結果 (ステータス、出力など) を JSON として stdout に出力します。
  4. サーバー結果処理 ( index.ts ):
    • 完了した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

(無効な引数やプロセスの開始の失敗などのプロトコル レベルのエラーが発生すると、 CallToolResultではなく標準の MCP エラー応答が返されます)

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

local-only server

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

分離された Docker コンテナ内での安全なコード実行を提供するモデル コンテキスト プロトコルを実装した TypeScript サーバー。これにより、LLM アプリケーションは Python、Go、または JavaScript コード スニペットを安全に実行できます。

  1. 特徴
    1. 前提条件
      1. インストール
        1. ローカル開発/テスト
          1. アーキテクチャとフロー
            1. execute_codeツール
              1. 説明
              2. 入力スキーマ( arguments )
              3. 出力 ( CallToolResult )

            Related MCP Servers

            • -
              security
              F
              license
              -
              quality
              A TypeScript-based server that provides a memory system for Large Language Models (LLMs), allowing users to interact with multiple LLM providers while maintaining conversation history and offering tools for managing providers and model configurations.
              Last updated -
              20
              JavaScript
              • Apple
            • A
              security
              F
              license
              A
              quality
              A template for creating Model Context Protocol (MCP) servers in TypeScript, offering features like container-based dependency injection, a service-based architecture, and integration with the LLM CLI for architectural design feedback through natural language.
              Last updated -
              1
              5
              TypeScript
            • -
              security
              A
              license
              -
              quality
              Facilitates isolated code execution within Docker containers, enabling secure multi-language script execution and integration with language models like Claude via the Model Context Protocol.
              Last updated -
              Python
              MIT License
              • Linux
              • Apple
            • -
              security
              A
              license
              -
              quality
              A TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.
              Last updated -
              6
              TypeScript
              MIT License

            View all related MCP servers

            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