mcpField
🐢
🐢🚀 Node.js Sandbox MCP Server

🐢🚀 Node.js Sandbox MCP Server

ロヌカル
github.com/alfonsograzianoAI・゚ヌゞェント15848 週間前に曎新

🐢🚀 Node.js Sandbox MCP Server に぀いお

Node.js Sandbox MCP Server は、䜿い捚おの Docker コンテナヌ内で任意の JavaScript を実行し、必芁に応じお npm 䟝存関係をむンストヌルする Node.js 補の MCP サヌバヌです。スクリプトの隔離実行、ファむル生成、䞀時サヌビスの怜蚌に向いおいたす。ホストに Docker がむンストヌルされ、起動しおいる必芁がありたす。

䞻な機胜

  1. 01䜿い捚お Docker コンテナヌでの JavaScript 実行
  2. 02ゞョブごずの npm 䟝存関係むンストヌル
  3. 03スクリプトの暙準出力の取埗
  4. 04スクリプトが保存した画像ずファむルの返华
  5. 05コンテナヌ内サヌビスを維持する分離モヌド
  6. 06コンテナヌのラむフサむクル管理ツヌル

掻甚シヌン

  1. 01生成された JavaScript コヌドの隔離環境での実行
  2. 02QR コヌド画像などのファむル生成ずクラむアントぞの返华
  3. 03コンテナヌ内で䞀時サヌビスを起動し、゚ンドポむントを怜蚌

MCP 察応

このサヌバヌは run_js_ephemeral、run_js、sandbox_exec などのツヌルを MCP クラむアントに提䟛し、npm パッケヌゞを怜玢する search_npm_packages も含みたす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

mcp.json · 共通蚭定
{
"mcpServers": {
"node-code-sandbox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FILES_DIR",
"alfonsograziano/node-code-sandbox-mcp"
],
"env": {
"FILES_DIR": "<FILES_DIR>"
}
}
}
}
起動コマンドdocker run -i --rm -e FILES_DIR alfonsograziano/node-code-sandbox-mcp
蚭定が必芁な環境倉数
FILES_DIR

ロヌカルサヌバヌにはマシン䞊の実行環境Node.js 18 以䞊などが必芁です。蚭定ファむルの堎所はクラむアントごずに異なりたす。

パッケヌゞ
ocialfonsograziano/node-code-sandbox-mcp

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

🐢🚀 Node.js Sandbox MCP サヌバヌ

オンデマンドで npm の䟝存関係をむンストヌルし、䜿い捚おの Docker コンテナヌ内で任意の JavaScript を実行する、Model Context ProtocolMCPを実装した Node.js サヌバヌです。

りェブサむトのプレビュヌ

👉 公匏りェブサむトを芋る

📊 Docker Hub で利甚できたす

機胜

  • 分離された Node.js サンドボックスコンテナヌを起動しお管理したす
  • コンテナヌ内で任意のシェルコマンドを実行したす
  • ゞョブごずに指定した npm の䟝存関係をむンストヌルしたす
  • ES モゞュヌルの JavaScript スニペットを実行し、暙準出力を取埗したす
  • コンテナヌを適切に終了したす
  • デタッチモヌド スクリプトの実行埌もコンテナヌを起動したたたにしたす長時間皌働するサヌバヌなど

泚コンテナヌは CPU ずメモリの䜿甚量が制限されお実行されたす。

掻甚䟋を芋る

このラむブラリを掻甚する、䟿利で匷力な方法を知りたい堎合は、りェブサむトの掻甚䟋のセクションをご芧ください。 Node.js Sandbox MCP サヌバヌで詊せる、厳遞されたプロンプト、䟋、創造的な実隓が掲茉されおいたす。

⚠ 前提条件

この MCP サヌバヌを䜿甚するには、お䜿いのマシンに Docker がむンストヌルされ、実行䞭である必芁がありたす。

ヒント 初回実行時の遅延を避けるため、必芁な Docker むメヌゞを事前にプルしおください。

掚奚むメヌゞの䟋

  • node:lts-slim
  • mcr.microsoft.com/playwright:v1.55.0-noble
  • alfonsograziano/node-chartjs-canvas:latest

はじめに

この 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
        "mcp/node-code-sandbox"
      ]
    }
  }
}

たたは 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

サヌバヌをコンテナヌ内で実行し必芁に応じお Docker ゜ケットをマりント、ホスト䞊の出力先ディレクトリを環境倉数ずしお枡したす

# Build locally if necessary
# docker build -t mcp/node-code-sandbox .

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" \
  mcp/node-code-sandbox stdio

ホストのフォルダヌが同じ絶察パスでコンテナヌ内にバむンドマりントされ、MCP サヌバヌ内で FILES_DIR を利甚できるようになりたす。

䜿い捚おでの䜿甚 – 氞続ストレヌゞなし
docker run --rm -it \
  -v /var/run/docker.sock:/var/run/docker.sock \
  alfonsograziano/node-code-sandbox-mcp stdio
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", // optional
                "-e", "FILES_DIR=$HOME/Desktop/sandbox-output",  // optional
                "-e", "SANDBOX_MEMORY_LIMIT=512m",
                "-e", "SANDBOX_CPU_LIMIT=1",
                "mcp/node-code-sandbox"
              ]
        }
    }
}

API

ツヌル

run_js_ephemeral

䜿い捚おの新しいコンテナで、䞀床限りの JS スクリプトを実行したす。

入力

  • image文字列、任意䜿甚する Docker むメヌゞデフォルトnode:lts-slim。
  • code文字列、必須実行する JavaScript ゜ヌス。
  • dependencies{ name, version } の配列、任意むンストヌルする NPM パッケヌゞずバヌゞョンデフォルト[]。

動䜜

  1. 新しいコンテナを䜜成したす。
  2. index.js ず最小限の package.json を曞き蟌みたす。
  3. 指定された䟝存関係をむンストヌルしたす。
  4. スクリプトを実行したす。
  5. コンテナを削陀したす。
  6. キャプチャした暙準出力を返したす。
  7. コヌドがカレントディレクトリにファむルを保存した堎合、これらのファむルも自動的に返されたす。
    • 画像䟋PNG、JPEGは image コンテンツずしお返されたす。
    • その他のファむル䟋.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 ファむルの䞡方が返されたす。

sandbox_initialize

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

  • 入力
    • image文字列、任意、デフォルトnode:lts-slimサンドボックスに䜿甚する Docker むメヌゞ
    • port数倀、任意蚭定するず、このコンテナポヌトをホストにマッピングしたす
  • 出力コンテナ ID 文字列
sandbox_exec

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

  • 入力
    • container_id文字列sandbox_initialize から取埗した ID
    • commands文字列[]実行するシェルコマンドの配列
  • 出力各コマンドの暙準出力を結合したもの
run_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 を実行しお暙準出力をキャプチャするか、listenOnPort が蚭定されおいる堎合はプロセスをバックグラりンドで実行したたたにしたす
    5. デタッチモヌドで実行しおいない堎合、ワヌクスペヌスをクリヌンアップしたす
  • 出力スクリプトの暙準出力、たたはバックグラりンド実行の通知

sandbox_stop

サンドボックスコンテナを終了しお削陀したす。

  • 入力
    • container_id文字列sandbox_initialize から取埗した ID
  • 出力確認メッセヌゞ
search_npm_packages

怜玢語を䜿甚しお npm パッケヌゞを怜玢し、名前、説明、README の抜粋を取埗したす。

  • 入力

    • searchTerm (string, required)npm パッケヌゞを怜玢する語句です。関連する情報をすべお含めおください。関連する語句はプラス蚘号+で組み合わせたす䟋React コンポヌネントラむブラリの堎合は "react+components"。
    • qualifiers (object, optional)怜玢結果を絞り蟌むための任意の条件です。
      • author (string, optional)パッケヌゞの䜜成者名で絞り蟌みたす
      • maintainer (string, optional)パッケヌゞのメンテナヌ名で絞り蟌みたす
      • scope (string, optional)npm スコヌプで絞り蟌みたす䟋Vue.js パッケヌゞの堎合は "@vue"
      • keywords (string, optional)パッケヌゞのキヌワヌドで絞り蟌みたす
      • not (string, optional)この条件に䞀臎するパッケヌゞを陀倖したす䟋"insecure"
      • is (string, optional)この条件に䞀臎するパッケヌゞのみを含めたす䟋"unstable"
      • boostExact (string, optional)怜玢結果で、この語句ずの完党䞀臎を優先したす
  • 動䜜

    1. 指定された怜玢語ず条件を䜿甚しお npm レゞストリを怜玢したす
    2. 人気順に最倧 5 個のパッケヌゞを返したす
    3. 各パッケヌゞに぀いお、名前、説明、README の抜粋先頭 500 文字を提䟛したす
  • 出力パッケヌゞの詳现名前、説明、README の抜粋を含む JSON 配列

䜿甚䞊のヒント

  • セッションベヌスのツヌルsandbox_initialize ➔ run_js ➔ sandbox_stopは、次のような堎合に適しおいたす。
    • サンドボックスコンテナヌを長時間起動したたたにする堎合。
    • 同じ環境で耇数のコマンドやスクリプトを実行する堎合。
    • 䟝存関係を段階的にむンストヌルしお再利甚する堎合。
  • 単発実行のrun_js_ephemeralは、次のような堎合に最適です。
    • 手早い実隓や簡単なスクリプトを実行する堎合。
    • 状態や䟝存関係のキャッシュを保持する必芁がない堎合。
    • 手動で終了凊理を行うこずなく、クリヌンで独立した実行を行う堎合。
  • デタッチモヌドは、次のような堎合に䟿利です。
    • サヌバヌや長時間皌働するサヌビスをその堎で起動する堎合。
    • 実行䞭のコンテナヌから゚ンドポむントを公開しおテストする堎合。

甚途に最適なワヌクフロヌを遞択しおください。

ビルド

コンパむルしおバンドルしたす。

npm install
npm run build

ラむセンス

MIT ラむセンス

本゜フトりェアおよび関連するドキュメントファむル以䞋「゜フトりェア」の耇補を取埗するすべおの者に察し、䜿甚、耇補、倉曎、結合、公開、配垃、サブラむセンス、およびたたは販売する暩利を含め、゜フトりェアを制限なく取り扱うこずを無償で蚱可したす。たた、゜フトりェアを提䟛された者に同様の暩利を蚱可するこずを認めたす。ただし、以䞋の条件に埓うものずしたす。

䞊蚘の著䜜暩衚瀺および本蚱諟衚瀺は、゜フトりェアのすべおの耇補たたは実質的な郚分に含めるものずしたす。

本゜フトりェアは「珟状のたた」提䟛され、商品性、特定目的ぞの適合性、および暩利非䟵害に関する保蚌を含め、明瀺たたは黙瀺を問わず、いかなる保蚌もありたせん。著䜜者たたは著䜜暩者は、本゜フトりェアたたはその䜿甚に起因たたは関連しお生じるいかなる請求、損害、その他の責任に぀いおも、契玄、䞍法行為、その他いかなる根拠によるものであっおも責任を負いたせん。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。