Skip to main content
Glama

MCP QuickJS Runner

by jlucaso1

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 代码中捕获stdoutstderr
  • **错误报告:**报告 QuickJS 的运行时错误和非零退出代码。
  • **MCP 集成:**通过stdio公开标准 MCP 工具的功能。
  • **使用 TypeScript 构建:**在开发过程中提供类型安全。

工作原理

  1. **WASM 模块:**使用针对 WebAssembly 系统接口 (WASI) 的预编译 QuickJS 引擎 ( qjs-wasi.wasm )。
  2. **Node.js WASI:**利用 Node.js 中的node:wasi模块实例化并运行 WASM 模块。
  3. **Stdio 重定向(临时文件):**为了从 WASM 环境捕获stdoutstderr ,服务器当前依赖于与node:wasi兼容的标准方法:
    • 使用node:fs/promisesnode:os在主机文件系统上创建一个临时目录。
    • 在此目录中打开stdoutstderr的临时文件。
    • 这些文件的真实 OS 文件描述符在初始化期间传递给WASI实例( stdout: fdstderr: fd )。
    • QuickJS WASM 模块将其输出写入这些描述符,然后由 WASI 路由到临��文件。
    • 执行完成后,服务器关闭文件句柄并读取临时文件的内容。
    • 临时目录和文件已被清理。
    • (注意:尝试使用内存管道或虚拟文件系统(如memfs失败,因为node:wasi目前需要 stdio 的真实 OS 文件描述符。)
  4. **MCP 通信:**服务器使用@modelcontextprotocol/sdk通过stdio监听 MCP 请求,并以根据协议格式化的执行结果进行响应。

先决条件

  • Node.js (建议使用 v23.x 或更高版本,请检查node:wasi与您的特定版本的兼容性)
  • npmyarn
  • QuickJS WASM 文件 ( qjs-wasi.wasm ) 必须与已编译的服务器脚本位于同一目录中(例如, ./dist/qjs-wasi.wasm相对于./dist/server.js )。您可能需要单独获取或编译该文件。

安装

  1. 克隆存储库(如果适用)。
  2. 安装依赖项:
    npm install

用法

node server.ts
-
security - not tested
-
license - not tested
-
quality - not tested

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 代码片段,而不会损害主机系统。

  1. 描述
    1. 特征
      1. 工作原理
        1. 先决条件
          1. 安装
            1. 用法

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                The sessionless code interpreter. Securely run AI-generated code in stateful sandboxes that run forever.
                Last updated -
                65
                176
                Rust
                MIT License
              • A
                security
                F
                license
                A
                quality
                Provides a secure, isolated JavaScript execution environment with configurable time and memory limits for safely running code from Claude.
                Last updated -
                1
                5
                JavaScript
                • Apple
              • -
                security
                F
                license
                -
                quality
                A 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
              • A
                security
                F
                license
                A
                quality
                A secure JavaScript REPL server that enables executing code snippets in a sandboxed environment with memory protection, timeout handling, and comprehensive error reporting.
                Last updated -
                2
                150
                7
                JavaScript
                • Linux
                • Apple

              View all related MCP servers

              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/jlucaso1/mcp-javascript-sandbox'

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