Skip to main content
Glama
alfonsograziano

Node.js Sandbox MCP Server

🐢🚀 Node.js サンドボックス MCP サーバー

オンザフライの npm 依存関係インストールを使用して、一時的な Docker コンテナで任意の JavaScript を実行するための Model Context Protocol (MCP) を実装した Node.js サーバー。

ウェブサイトのプレビュー

👉公式サイトをご覧ください

特徴

  • 分離された Node.js サンドボックス コンテナを起動および管理する

  • コンテナ内で任意のシェルコマンドを実行する

  • ジョブごとに指定された npm 依存関係をインストールする

  • ES モジュールの JavaScript スニペットを実行し、標準出力をキャプチャします。

  • コンテナをきれいに解体する

  • **デタッチドモード:**スクリプト実行後もコンテナを存続させる (長時間実行されるサーバーなど)

注: コンテナは制御された CPU/メモリ制限で実行されます。

Related MCP server: Docker MCP Server

クールなユースケースを探る

このライブラリを使用するためのクールで強力な方法についてのアイデアが必要な場合は、 Web サイトのユースケース セクションをご覧ください。このセクションには、Node.js Sandbox MCP サーバーで試すことができるプロンプト、例、およびクリエイティブな実験の厳選されたリストが含まれています。

⚠️ 前提条件

この MCP サーバーを使用するには、マシンに Docker がインストールされ、実行されている必要があります。

**ヒント:**最初の実行時に遅延が発生しないように、必要な Docker イメージを事前にプルしておきます。

推奨画像の例:

  • ノード:lts-slim

  • mcr.microsoft.com/playwright:v1.52.0-noble

  • alfonsograziano/node-chartjs-canvas:最新

はじめる

この MCP サーバーを使い始めるには、まずそれをクライアント (たとえば、Claude Desktop) に接続する必要があります。

実行したら、いくつかのテスト プロンプトを使用して、完全に動作していることをテストできます。

  • ツールが実行できることを検証します。

    Create and run a JS script with a console.log("Hello World")

    これにより console.log が実行され、ツールの応答に Hello World が表示されるはずです。

  • 依存関係をインストールしてファイルを保存できることを確認する

    Create and run a JS script that generates a QR code for the URL `https://nodejs.org/en`, and save it as `qrcode.png` **Tip:** Use the `qrcode` package.

    これにより、マウントされたディレクトリ(デスクトップなど)に「qrcode.png」というファイルが作成されます。

Claude Desktopでの使用

これをclaude_desktop_config.jsonに追加します。このMCPサーバーをインストールするには、公式ガイドに従ってください。

{ "mcpServers": { "js-sandbox": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/var/run/docker.sock:/var/run/docker.sock", "-v", "$HOME/Desktop/sandbox-output:/root", "-e", "FILES_DIR=$HOME/Desktop/sandbox-output", "-e", "SANDBOX_MEMORY_LIMIT=512m", // optional "-e", "SANDBOX_CPU_LIMIT=0.75", // optional "alfonsograziano/node-code-sandbox-mcp" ] } } }

またはNPXの場合:

{ "mcpServers": { "node-code-sandbox-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "node-code-sandbox-mcp"], "env": { "FILES_DIR": "/Users/alfonsograziano/Desktop/node-sandbox", "SANDBOX_MEMORY_LIMIT": "512m", // optional "SANDBOX_CPU_LIMIT": "0.75" // optional } } } }

注: 作業ディレクトリがビルドされたサーバーを指していること、および Docker がインストール/実行されていることを確認してください。

ドッカー

コンテナ内でサーバーを実行し (必要に応じて Docker ソケットをマウントします)、必要なホスト出力ディレクトリを env var として渡します。

# Build locally if necessary # docker build -t alfonsograziano/node-code-sandbox-mcp . docker run --rm -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$HOME/Desktop/sandbox-output":"/root" \ -e FILES_DIR="$HOME/Desktop/sandbox-output" \ -e SANDBOX_MEMORY_LIMIT="512m" \ -e SANDBOX_CPU_LIMIT="0.5" \ alfonsograziano/node-code-sandbox-mcp stdio

これにより、ホスト フォルダーが同じ絶対パスでコンテナーにバインド マウントされ、MCP サーバー内でFILES_DIR使用できるようになります。

VS Codeでの使用

クイックインストールボタン (VS Code および Insiders):

js-sandbox-mcp (NPX) をインストールする js-sandbox-mcp (Docker) をインストールする

手動設定: VS Code のsettings.jsonまたは.vscode/mcp.jsonに追加します。

"mcp": { "servers": { "js-sandbox": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/var/run/docker.sock:/var/run/docker.sock", "-v", "$HOME/Desktop/sandbox-output:/root", "-e", "FILES_DIR=$HOME/Desktop/sandbox-output", "-e", "SANDBOX_MEMORY_LIMIT=512m", "-e", "SANDBOX_CPU_LIMIT=1", "alfonsograziano/node-code-sandbox-mcp" ] } } }

API

ツール

実行JSエフェメラル

まったく新しい使い捨てコンテナで 1 回限りの JS スクリプトを実行します。

入力:

  • image (文字列、オプション): 使用する Docker イメージ (デフォルト: node:lts-slim )。

  • code (文字列、必須): 実行する JavaScript ソース。

  • dependencies{ name, version }の配列、オプション):インストールする NPM パッケージとバージョン(デフォルト: [] )。

行動:

  1. 新しいコンテナを作成します。

  2. index.jsと最小限のpackage.jsonを書き込みます。

  3. 指定された依存関係をインストールします。

  4. スクリプトを実行します。

  5. コンテナを解体(削除)します。

  6. キャプチャした標準出力を返します。

  7. コードが現在のディレクトリにファイルを保存すると、これらのファイルは自動的に返されます。

    • imageコンテンツとして画像 (PNG、JPEG など) が返されます。

    • その他のファイル (例: .txt.json ) はresourceコンテンツとして返されます。

    • 注: ファイル保存機能は現在、一時ツールでのみ使用できます。

**ヒント:**ファイルを復元するには、スクリプトの実行中にファイルを保存するだけです。

呼び出し例:

{ "name": "run_js_ephemeral", "arguments": { "image": "node:lts-slim", "code": "console.log('One-shot run!');", "dependencies": [{ "name": "lodash", "version": "^4.17.21" }], }, }

ファイルを保存する例:

import fs from 'fs/promises'; await fs.writeFile('hello.txt', 'Hello world!'); console.log('Saved hello.txt');

これにより、コンソール出力hello.txtファイルが返されます。

サンドボックスの初期化

新しいサンドボックス コンテナーを起動します。

  • 入力:

    • image (文字列、オプション、デフォルト: node:lts-slim ): サンドボックス用のDockerイメージ

    • port (数値、オプション): 設定されている場合、このコンテナのポートをホストにマッピングします

  • 出力: コンテナID文字列

サンドボックス実行

実行中のサンドボックス内でシェル コマンドを実行します。

  • 入力:

    • container_id (文字列): sandbox_initializeからのID

    • commands ( string[] ): 実行するシェルコマンドの配列

  • 出力: 各コマンドの標準出力を結合したもの

実行js

npm の依存関係をインストールし、JavaScript コードを実行します。

  • 入力:

    • container_id (文字列): sandbox_initializeからのID

    • code (文字列): 実行するJSソース(ESモジュールをサポート)

    • dependencies{ name, version }、オプション、デフォルト: [] ): npmパッケージ名 → semverバージョン

    • listenOnPort (数値、オプション): 設定されている場合、プロセスは実行されたままになり、このポートがホストに公開されます (デタッチモード)

  • 行動:

    1. コンテナ内に一時ワークスペースを作成します

    2. index.jsと最小限のpackage.jsonを書きます

    3. npm install --omit=dev --ignore-scripts --no-audit --loglevel=error実行します。

    4. node index.jsを実行してstdoutをキャプチャするか、 listenOnPortが設定されている場合はプロセスをバックグラウンドで実行したままにします。

    5. デタッチモードで実行していない限り、ワークスペースをクリーンアップします

  • 出力: スクリプトの標準出力またはバックグラウンド実行通知

サンドボックスストップ

サンドボックス コンテナーを終了して削除します。

  • 入力:

    • container_id (文字列): sandbox_initializeからのID

  • 出力: 確認メッセージ

使用上のヒント

  • セッションベースのツール( sandbox_initializerun_jssandbox_stop ) は、次のような場合に最適です。

    • 長期間有効なサンドボックス コンテナーを開いたままにします。

    • 同じ環境で複数のコマンドまたはスクリプトを実行します。

    • 依存関係を段階的にインストールして再利用します。

  • run_js_ephemeralを使用したワンショット実行は、次のような場合に最適です。

    • 簡単な実験や簡単なスクリプト。

    • 状態またはキャッシュの依存関係を維持する必要がないケース。

    • 手動によるティアダウンを気にすることなく、クリーンでアトミックな実行を実現します。

  • 分離モードは、次のような場合に役立ちます。

    • サーバーや長期サービスも即座に起動

    • 実行中のコンテナからエンドポイントを公開してテストする

ユースケースに最適なワークフローを選択してください。

建てる

コンパイルしてバンドルする:

npm install npm run build

ライセンス

MITライセンス

本ソフトウェアおよび関連ドキュメント ファイル (以下「本ソフトウェア」) のコピーを入手したすべての人物は、以下の条件に従い、本ソフトウェアを無制限に扱う権利 (使用、コピー、変更、統合、公開、配布、サブライセンス、および/または販売する権利を含みますが、これに限定されません) および本ソフトウェアの提供を受けた人物が同様の行為を行うことを許可する権利を無償で付与されます。

上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含めるものとします。

本ソフトウェアは「現状有姿」で提供され、明示的または黙示的を問わず、商品性、特定目的への適合性、非侵害性を含むがこれらに限定されない、いかなる種類の保証も付与されません。いかなる場合においても、著作者または著作権者は、契約違反、不法行為、またはその他の行為にかかわらず、本ソフトウェア、本ソフトウェアの使用、またはその他の取り扱いに起因または関連して発生するいかなる請求、損害、またはその他の責任についても責任を負わないものとします。

-
security - not tested
F
license - not found
-
quality - not tested

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/alfonsograziano/node-code-sandbox-mcp'

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