Skip to main content
Glama

MCP QuickJS Runner

by jlucaso1

Ejecutor QuickJS de MCP

Un servidor que implementa el Protocolo de Contexto de Modelo (MCP) que proporciona una herramienta para ejecutar de forma segura código JavaScript arbitrario dentro de un motor QuickJS compilado en WebAssembly (WASM) y ejecutado utilizando la implementación WASI incorporada de Node.js.

Descripción

Este servidor actúa como proveedor de herramientas MCP. Expone una única herramienta, run_javascript_code , que recibe una cadena de código JavaScript como entrada. El código se ejecuta dentro de un entorno WASM QuickJS aislado. El servidor captura los flujos de salida estándar ( stdout ) y error estándar ( stderr ) de la ejecución y los devuelve, junto con cualquier error de ejecución, al cliente MCP.

Esto permite que los modelos de lenguaje u otros clientes MCP ejecuten de forma segura fragmentos de código JavaScript potencialmente no confiables sin comprometer el sistema host.

Características

  • Ejecución segura: ejecuta JavaScript en un entorno sandbox de WASM utilizando QuickJS y Node.js WASI.
  • Captura de E/S estándar: captura stdout y stderr del código JavaScript ejecutado.
  • Informe de errores: informa errores de tiempo de ejecución de QuickJS y códigos de salida distintos de cero.
  • Integración MCP: expone la funcionalidad como una herramienta MCP estándar sobre stdio .
  • Desarrollado con TypeScript: proporciona seguridad de tipos durante el desarrollo.

Cómo funciona

  1. Módulo WASM: utiliza un motor QuickJS precompilado ( qjs-wasi.wasm ) orientado a la interfaz del sistema WebAssembly (WASI).
  2. Node.js WASI: aprovecha el módulo node:wasi en Node.js para instanciar y ejecutar el módulo WASM.
  3. Redirección de Stdio (archivos temporales): para capturar stdout y stderr del entorno WASM, el servidor actualmente se basa en el enfoque estándar compatible con node:wasi :
    • Se crea un directorio temporal en el sistema de archivos del host utilizando node:fs/promises y node:os .
    • Los archivos temporales para stdout y stderr se abren dentro de este directorio.
    • Los descriptores de archivos del sistema operativo reales para estos archivos se pasan a la instancia WASI durante la inicialización ( stdout: fd , stderr: fd ).
    • El módulo WASM de QuickJS escribe su salida en estos descriptores, que son enrutados por WASI a los archivos temporales.
    • Una vez finalizada la ejecución, el servidor cierra los controladores de archivos y lee el contenido de los archivos temporales.
    • Se limpian el directorio y los archivos temporales.
    • (Nota: los intentos de utilizar tuberías en memoria o sistemas de archivos virtuales como memfs no tuvieron éxito porque node:wasi actualmente requiere descriptores de archivos del sistema operativo reales para stdio).
  4. Comunicación MCP: el servidor utiliza @modelcontextprotocol/sdk para escuchar las solicitudes MCP a través de stdio y responder con los resultados de la ejecución formateados de acuerdo con el protocolo.

Prerrequisitos

  • Node.js (se recomienda v23.x o posterior, verifique la compatibilidad node:wasi para su versión específica)
  • npm o hilo
  • El archivo WASM de QuickJS ( qjs-wasi.wasm ) debe estar en el mismo directorio que el script de servidor compilado (p. ej., ./dist/qjs-wasi.wasm en relación con ./dist/server.js ). Es posible que deba obtenerlo o compilarlo por separado.

Instalación

  1. Clonar el repositorio (si corresponde).
  2. Instalar dependencias:
    npm install

Uso

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.

Proporciona la ejecución segura de código JavaScript arbitrario dentro de un entorno QuickJS WASM aislado, lo que permite que los modelos de lenguaje u otros clientes MCP ejecuten de forma segura fragmentos de código JavaScript sin comprometer el sistema host.

  1. Descripción
    1. Características
      1. Cómo funciona
        1. Prerrequisitos
          1. Instalación
            1. Uso

              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