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 路由到临时文件。
执行完成后,服务器关闭文件句柄并读取临时文件的内容。
临时目录和文件已被清理。
(注意:尝试使用内存管道或虚拟文件系统(如
**MCP 通信:**服务器使用
@modelcontextprotocol/sdk通过stdio监听 MCP 请求,并以根据协议格式化的执行结果进行响应。
先决条件
Node.js (建议使用 v23.x 或更高版本,请检查
node:wasi与您的特定版本的兼容性)QuickJS WASM 文件 (
qjs-wasi.wasm) 必须与已编译的服务器脚本位于同一目录中(例如,./dist/qjs-wasi.wasm相对于./dist/server.js)。您可能需要单独获取或编译该文件。
安装
克隆存储库(如果适用)。
安装依赖项:
npm install
用法
This server cannot be installed
Related Resources
Related MCP Servers
- AsecurityFlicenseAqualityProvides a secure, isolated JavaScript execution environment with configurable time and memory limits for safely running code from Claude.Last updated -1155
- -security-license-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.
- AsecurityAlicenseAqualityA secure JavaScript REPL server that enables executing code snippets in a sandboxed environment with memory protection, timeout handling, and comprehensive error reporting.Last updated -721108MIT License
- AsecurityFlicenseAqualityA secure Node.js execution environment that allows coding agents and LLMs to run JavaScript dynamically, install NPM packages, and retrieve results while adhering to the Model Control Protocol.Last updated -7324