Token导航 LogoToken导航TokenDH.com
Node.js Sandbox MCP Server logo
开发工具stdio官方级别未说明来源级核验

Node.js Sandbox MCP Server

MCP Server

一个基于Docker容器的Node.js沙盒服务器,支持动态安装npm依赖并执行任意JavaScript代码,适用于代码隔离执行和实验性开发场景。

工具数

5

提示词数

0

GitHub Stars

152

资源数

0
开发工具TypeScriptClaudeDocker容器Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

alfonsograziano

提供方

alfonsograziano

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run --rm -it \

详细介绍

🐢🚀 Node.js沙盒MCP服务器

Node.js服务器实现了模型上下文协议(MCP),用于在具有实时npm依赖安装的临时Docker容器中运行任意JavaScript。

Website Preview

👉 查看官方网站

📦

特性

  • 启动和管理隔离的Node.js沙箱容器
  • 在容器内执行任意shell命令
  • 为每个作业安装指定的npm依赖项
  • 运行ES模块JavaScript代码段并捕获stdout
  • 干净地拆下容器
  • 分离模式: 在脚本执行后保持容器活动(例如,对于长时间运行的服务器)
注意:容器在受控的CPU/内存限制下运行。

探索酷炫的用例

如果你想了解使用这个库的酷而强大的方法,请查看 网站上的用例部分 它包含一个精心策划的提示、示例和创意实验列表,您可以使用Node.js Sandbox MCP Server进行尝试。

⚠️ 先决条件

要使用此MCP服务器,必须在您的计算机上安装并运行Docker。

提示: 预拉取你需要的任何Docker镜像,以避免第一次执行时的延迟。

推荐图片示例:

  • 节点:lts slim
  • 微软/剧作家:v1.55.0-noble
  • alfonsograziano/node chartjs画布:最新

入门

为了开始使用此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.

这应该会在您挂载的目录(例如Desktop)中创建一个名为“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套接字),并将所需的主机输出目录作为env-var传递:

# 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

此绑定将您的主机文件夹装载到以下位置的容器中 相同的绝对路径 并使 FILES_DIR MCP服务器内部可用。

短暂使用- 无持久存储

docker run --rm -it \
  -v /var/run/docker.sock:/var/run/docker.sock \
  alfonsograziano/node-code-sandbox-mcp stdio

使用VS代码

快速安装 按钮(VS代码和内部人员):

安装js沙盒mcp(NPX)安装js沙盒mcp(Docker)

手动配置:添加到您的VS代码 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_临时

在全新的一次性容器中运行一次性JS脚本。

输入:

  • image (string,可选):要使用的Docker镜像(默认值: node:lts-slim).
  • code (string,必填):要执行的JavaScript源代码。
  • dependencies (数组 { name, version },可选):要安装的NPM包和版本(默认值: []).

行为:

  1. 创建新容器。
  2. 写你的 index.js 以及最小值 package.json.
  3. 安装指定的依赖项。
  4. 执行脚本。
  5. 撕下(取出)容器。
  6. 返回捕获的stdout。
  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 文件。

沙盒初始化

启动一个新的沙盒容器。

  • 输入:

- image (_字符串_,可选,默认值: node:lts-slim):沙盒的Docker镜像 - port (_数字_,可选):如果设置,则将此容器端口映射到主机

  • 输出:容器ID字符串

沙盒exec

在正在运行的沙盒中运行shell命令。

  • 输入:

- container_id (_字符串_):ID来自 sandbox_initialize - commands (_string\[\]_):要执行的shell命令数组

  • 输出:每个命令的组合stdout

run_js

安装npm依赖项并执行JavaScript代码。

  • 输入:

- container_id (_字符串_):ID来自 sandbox_initialize - code (_字符串_):要运行的JS源代码(支持ES模块) - dependencies (_数组 { name, version }_,可选,默认值: []):npm包名称→ semver版本 - listenOnPort (_数字_,可选):如果设置,则使进程保持运行并将此端口暴露给主机(分离模式)

  • 行为:

1. 在容器内创建临时工作区 1. 写入 index.js 以及最小值 package.json 1. 跑 npm install --omit=dev --ignore-scripts --no-audit --loglevel=error 1. 执行 node index.js 并捕获stdout,或者在以下情况下让进程在后台运行 listenOnPort 已设置 1. 清理工作区,除非在分离模式下运行

  • 输出:脚本stdout或后台执行通知

沙盒停止

终止并删除沙盒容器。

  • 输入:

- container_id (_字符串_):ID来自 sandbox_initialize

  • 输出:确认消息

search_npm_packages

通过搜索词搜索npm包,并获取它们的名称、描述和README代码段。

  • 输入:

- searchTerm (_字符串_,required):在npm包中搜索的术语。应包含所有相关上下文。使用加号(+)组合相关术语(例如,react组件库的“react+components”)。 - qualifiers (_对象_,可选):筛选搜索结果的可选限定符: - author (_字符串_,可选):按包作者姓名筛选 - maintainer (_字符串_,可选):按包维护者名称筛选 - scope (_字符串_,可选):按npm作用域过滤(例如,vue.js包的“@vue”) - keywords (_字符串_,可选):按包关键字筛选 - not (_字符串_,可选):排除符合此条件的包(例如“不安全”) - is (_字符串_,可选):仅包含符合此条件的包(例如“不稳定”) - boostExact (_字符串_,可选):增强搜索结果中此词的精确匹配

  • 行为:

1. 使用提供的搜索词和限定词搜索npm注册表 1. 最多返回5个按受欢迎程度排序的包 1. 对于每个包,提供名称、描述和README代码段(前500个字符)

  • 输出:包含包详细信息的JSON数组,包括名称、描述和README代码段

使用技巧

  • 基于会话的工具 (sandbox_initializerun_jssandbox_stop)当你想:

- 保持长期沙盒容器打开。 - 在同一环境中运行多个命令或脚本。 - 逐步安装和重用依赖项。

  • 一枪处决 随着 run_js_ephemeral 非常适合:

- 快速实验或简单脚本。 - 不需要维护状态或缓存依赖关系的情况。 - 清洁、原子运行,无需担心手动拆卸。

  • 分离模式 当您想要:

- 动态启动服务器或长期服务 - 从正在运行的容器中暴露和测试端点

选择最适合您用例的工作流!

构建

编译和捆绑:

npm install
npm run build

许可证

MIT许可证

特此免费授予任何获得本软件和相关文档文件(“软件”)副本的人在不受限制的情况下处理软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,以及允许获得软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下,作者或版权持有人均不对任何索赔承担责任, 因软件引起的或与软件有关的损害赔偿或其他责任,无论是在合同、侵权或其他诉讼中 或软件的使用或其他交易。

目录标签

目录标签

开发工具TypeScriptClaudeDocker容器代码沙盒本地部署JavaScript执行npm依赖管理

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP