🐢🚀 Node.js サンドボックス MCP サーバー
オンザフライの npm 依存関係インストールを使用して、一時的な Docker コンテナで任意の JavaScript を実行するための Model Context Protocol (MCP) を実装した Node.js サーバー。
特徴
- 分離された Node.js サンドボックス コンテナを起動および管理する
- コンテナ内で任意のシェルコマンドを実行する
- ジョブごとに指定された npm 依存関係をインストールする
- ES モジュールの JavaScript スニペットを実行し、標準出力をキャプチャします。
- コンテナをきれいに解体する
- **デタッチドモード:**スクリプト実行後もコンテナを存続させる (長時間実行されるサーバーなど)
注: コンテナは制御された CPU/メモリ制限で実行されます。
クールなユースケースを探る
このライブラリを使用するためのクールで強力な方法についてのアイデアが必要な場合は、 Web サイトのユースケース セクションをご覧ください。このセクションには、Node.js Sandbox MCP サーバーで試すことができるプロンプト、例、およびクリエイティブな実験の厳選されたリストが含まれています。
⚠️ 前提条件
この MCP サーバーを使用するには、マシンに Docker がインストールされ、実行されている必要があります。
**ヒント:**最初の実行時に遅延が発生しないように、必要な Docker イメージを事前にプルしておきます。
推奨画像の例:
- ノード
- mcr.microsoft.com/playwright.52.0-noble
- alfonsograziano/node-chartjs-canvas:最新
はじめる
この MCP サーバーを使い始めるには、まずそれをクライアント (たとえば、Claude Desktop) に接続する必要があります。
実行したら、いくつかのテスト プロンプトを使用して、完全に動作していることをテストできます。
- ツールが実行できることを検証します。これにより console.log が実行され、ツールの応答に Hello World が表示されるはずです。
- 依存関係をインストールしてファイルを保存できることを確認するこれにより、マウントされたディレクトリ(デスクトップなど)に「qrcode.png」というファイルが作成されます。
Claude Desktopでの使用
これをclaude_desktop_config.json
に追加します。このMCPサーバーをインストールするには、公式ガイドに従ってください。
またはNPXの場合:
注: 作業ディレクトリがビルドされたサーバーを指していること、および Docker がインストール/実行されていることを確認してください。
ドッカー
コンテナ内でサーバーを実行し (必要に応じて Docker ソケットをマウントします)、必要なホスト出力ディレクトリを env var として渡します。
これにより、ホスト フォルダーが同じ絶対パスでコンテナーにバインド マウントされ、MCP サーバー内でFILES_DIR
使用できるようになります。
VS Codeでの使用
クイックインストールボタン (VS Code および Insiders):
js-sandbox-mcp (NPX) をインストールする js-sandbox-mcp (Docker) をインストールする
手動設定: VS Code のsettings.json
または.vscode/mcp.json
に追加します。
API
ツール
実行JSエフェメラル
まったく新しい使い捨てコンテナで 1 回限りの JS スクリプトを実行します。
入力:
image
(文字列、オプション): 使用する Docker イメージ (デフォルト:node:lts-slim
)。code
(文字列、必須): 実行する JavaScript ソース。dependencies
({ name, version }
の配列、オプション):インストールする NPM パッケージとバージョン(デフォルト:[]
)。
行動:
- 新しいコンテナを作成します。
index.js
と最小限のpackage.json
を書き込みます。- 指定された依存関係をインストールします。
- スクリプトを実行します。
- コンテナを解体(削除)します。
- キャプチャした標準出力を返します。
- コードが現在のディレクトリにファイルを保存すると、これらのファイルは自動的に返されます。
image
コンテンツとして画像 (PNG、JPEG など) が返されます。- その他のファイル (例:
.txt
、.json
) はresource
コンテンツとして返されます。 - 注: ファイル保存機能は現在、一時ツールでのみ使用できます。
**ヒント:**ファイルを復元するには、スクリプトの実行中にファイルを保存するだけです。
呼び出し例:
ファイルを保存する例:
これにより、コンソール出力とhello.txt
ファイルが返されます。
サンドボックスの初期化
新しいサンドボックス コンテナーを起動します。
- 入力:
image
(文字列、オプション、デフォルト:node:lts-slim
): サンドボックス用のDockerイメージport
(数値、オプション): 設定されている場合、このコンテナのポートをホストにマッピングします
- 出力: コンテナID文字列
サンドボックス実行
実行中のサンドボックス内でシェル コマンドを実行します。
- 入力:
container_id
(文字列):sandbox_initialize
からのIDcommands
( string[] ): 実行するシェルコマンドの配列
- 出力: 各コマンドの標準出力を結合したもの
実行js
npm の依存関係をインストールし、JavaScript コードを実行します。
- 入力:
container_id
(文字列):sandbox_initialize
からのIDcode
(文字列): 実行するJSソース(ESモジュールをサポート)dependencies
({ name, version }
の配列、オプション、デフォルト:[]
): npmパッケージ名 → semverバージョンlistenOnPort
(数値、オプション): 設定されている場合、プロセスは実行されたままになり、このポートがホストに公開されます (デタッチモード)
- 行動:
- コンテナ内に一時ワークスペースを作成します
index.js
と最小限のpackage.json
を書きますnpm install --omit=dev --ignore-scripts --no-audit --loglevel=error
実行します。node index.js
を実行してstdoutをキャプチャするか、listenOnPort
が設定されている場合はプロセスをバックグラウンドで実行したままにします。- デタッチモードで実行していない限り、ワークスペースをクリーンアップします
- 出力: スクリプトの標準出力またはバックグラウンド実行通知
サンドボックスストップ
サンドボックス コンテナーを終了して削除します。
- 入力:
container_id
(文字列):sandbox_initialize
からのID
- 出力: 確認メッセージ
使用上のヒント
- セッションベースのツール(
sandbox_initialize
➔run_js
➔sandbox_stop
) は、次のような場合に最適です。- 長期間有効なサンドボックス コンテナーを開いたままにします。
- 同じ環境で複数のコマンドまたはスクリプトを実行します。
- 依存関係を段階的にインストールして再利用します。
run_js_ephemeral
を使用したワンショット実行は、次のような場合に最適です。- 簡単な実験や簡単なスクリプト。
- 状態またはキャッシュの依存関係を維持する必要がないケース。
- 手動によるティアダウンを気にすることなく、クリーンでアトミックな実行を実現します。
- 分離モードは、次のような場合に役立ちます。
- サーバーや長期サービスも即座に起動
- 実行中のコンテナからエンドポイントを公開してテストする
ユースケースに最適なワークフローを選択してください。
建てる
コンパイルしてバンドルする:
ライセンス
MITライセンス
本ソフトウェアおよび関連ドキュメント ファイル (以下「本ソフトウェア」) のコピーを入手したすべての人物は、以下の条件に従い、本ソフトウェアを無制限に扱う権利 (使用、コピー、変更、統合、公開、配布、サブライセンス、および/または販売する権利を含みますが、これに限定されません) および本ソフトウェアの提供を受けた人物が同様の行為を行うことを許可する権利を無償で付与されます。
上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含めるものとします。
本ソフトウェアは「現状有姿」で提供され、明示的または黙示的を問わず、商品性、特定目的への適合性、非侵害性を含むがこれらに限定されない、いかなる種類の保証も付与されません。いかなる場合においても、著作者または著作権者は、契約違反、不法行為、またはその他の行為にかかわらず、本ソフトウェア、本ソフトウェアの使用、またはその他の取り扱いに起因または関連して発生するいかなる請求、損害、またはその他の責任についても責任を負わないものとします。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
オンザフライの npm 依存関係インストールにより、分離された Docker コンテナーで任意の JavaScript コードを実行できるようになり、一時的なワンショット実行と永続的なサンドボックス環境の両方をサポートします。
Related MCP Servers
- -securityFlicense-qualityProvides isolated Docker environments for code execution, enabling users to create and manage containers, execute multi-language code, save and reproduce development environments, ensuring security and isolation.Last updated -6Python
- -securityAlicense-qualityFacilitates 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 -PythonMIT License
- -securityAlicense-qualityAn interactive Python code execution environment that allows users and LLMs to safely execute Python code and install packages in isolated Docker containers.Last updated -13PythonApache 2.0
- -securityAlicense-qualityAn interactive Python code execution tool that allows users and LLMs to safely execute Python code and install packages in isolated Docker containers.Last updated -13PythonApache 2.0