MCP QuickJS 运行器
实现模型上下文协议 (MCP) 的服务器,它提供了一种工具,可以在编译为 WebAssembly (WASM) 的 QuickJS 引擎中安全地执行任意 JavaScript 代码,并使用 Node.js 的内置 WASI 实现运行。
描述
该服务器充当 MCP 工具提供程序。它公开一个工具run_javascript_code
,该工具接受一串 JavaScript 代码作为输入。然后在沙盒化的 QuickJS WASM 环境中执行该代码。服务器捕获执行过程中的标准输出 ( stdout
) 和标准错误 ( stderr
) 流,并将它们连同所有执行错误一起返回给 MCP 客户端。
这允许语言模型或其他 MCP 客户端安全地执行可能不受信任的 JavaScript 代码片段,而不会损害主机系统。
特征
- **安全执行:**使用 QuickJS 和 Node.js WASI 在 WASM 沙箱中运行 JavaScript。
- **标准 I/O 捕获:**从执行的 JavaScript 代码中捕获
stdout
和stderr
。 - **错误报告:**报告 QuickJS 的运行时错误和非零退出代码。
- **MCP 集成:**通过
stdio
公开标准 MCP 工具的功能。 - **使用 TypeScript 构建:**在开发过程中提供类型安全。
工作原理
- **WASM 模块:**使用针对 WebAssembly 系统接口 (WASI) 的预编译 QuickJS 引擎 (
qjs-wasi.wasm
)。 - **Node.js WASI:**利用 Node.js 中的
node:wasi
模块实例化并运行 WASM 模块。 - **Stdio 重定向(临时文件):**为了从 WASM 环境捕获
stdout
和stderr
,服务器当前依赖于与node:wasi
兼容的标准方法:- 使用
node:fs/promises
和node:os
在主机文件系统上创建一个临时目录。 - 在此目录中打开
stdout
和stderr
的临时文件。 - 这些文件的真实 OS 文件描述符在初始化期间传递给
WASI
实例(stdout: fd
,stderr: fd
)。 - QuickJS WASM 模块将其输出写入这些描述符,然后由 WASI 路由到临��文件。
- 执行完成后,服务器关闭文件句柄并读取临时文件的内容。
- 临时目录和文件已被清理。
- (注意:尝试使用内存管道或虚拟文件系统(如
memfs
失败,因为node:wasi
目前需要 stdio 的真实 OS 文件描述符。)
- 使用
- **MCP 通信:**服务器使用
@modelcontextprotocol/sdk
通过stdio
监听 MCP 请求,并以根据协议格式化的执行结果进行响应。
先决条件
- Node.js (建议使用 v23.x 或更高版本,请检查
node:wasi
与您的特定版本的兼容性) - npm或yarn
- QuickJS WASM 文件 (
qjs-wasi.wasm
) 必须与已编译的服务器脚本位于同一目录中(例如,./dist/qjs-wasi.wasm
相对于./dist/server.js
)。您可能需要单独获取或编译该文件。
安装
- 克隆存储库(如果适用)。
- 安装依赖项:
用法
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.
在沙盒 QuickJS WASM 环境中提供任意 JavaScript 代码的安全执行,允许语言模型或其他 MCP 客户端安全地运行 JavaScript 代码片段,而不会损害主机系统。
Related MCP Servers
- -securityAlicense-qualityThe sessionless code interpreter. Securely run AI-generated code in stateful sandboxes that run forever.Last updated -65176RustMIT License
- AsecurityFlicenseAqualityProvides a secure, isolated JavaScript execution environment with configurable time and memory limits for safely running code from Claude.Last updated -15JavaScript
- -securityFlicense-qualityA secure MCP server that provides controlled ShellJS access for LLMs, enabling AI systems to safely execute shell commands and interact with the filesystem within a configurable security sandbox.Last updated -JavaScript
- AsecurityFlicenseAqualityA secure JavaScript REPL server that enables executing code snippets in a sandboxed environment with memory protection, timeout handling, and comprehensive error reporting.Last updated -21507JavaScript