MCP QuickJS Runner

MCP QuickJS 러너

WebAssembly(WASM)로 컴파일된 QuickJS 엔진 내에서 임의의 JavaScript 코드를 안전하게 실행하고 Node.js의 내장 WASI 구현을 사용하여 실행하는 도구를 제공하는 MCP(Model Context Protocol)를 구현하는 서버입니다.

설명

이 서버는 MCP 도구 제공자 역할을 합니다. JavaScript 코드 문자열을 입력으로 받는 run_javascript_code 라는 단일 도구를 제공합니다. 이 코드는 샌드박스 처리된 QuickJS WASM 환경에서 실행됩니다. 서버는 실행 과정에서 표준 출력( stdout )과 표준 오류( stderr ) 스트림을 캡처하여 실행 오류와 함께 MCP 클라이언트로 반환합니다.

이를 통해 언어 모델이나 다른 MCP 클라이언트는 호스트 시스템을 손상시키지 않고 잠재적으로 신뢰할 수 없는 JavaScript 코드 조각을 안전하게 실행할 수 있습니다.

특징

  • 안전한 실행: QuickJS 및 Node.js WASI를 사용하여 WASM 샌드박스에서 JavaScript를 실행합니다.
  • 표준 I/O 캡처: 실행된 JavaScript 코드에서 stdoutstderr 캡처합니다.
  • 오류 보고: QuickJS의 런타임 오류와 0이 아닌 종료 코드를 보고합니다.
  • MCP 통합: stdio 통해 표준 MCP 도구로 기능을 제공합니다.
  • TypeScript로 구축: 개발 중에 유형 안전성을 제공합니다.

작동 원리

  1. WASM 모듈: WebAssembly System Interface(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: fd , stderr: fd ).
    • QuickJS WASM 모듈은 이러한 설명자에 출력을 쓰고, 이 출력은 WASI에 의해 임시 파일에 라우팅됩니다.
    • 실행이 완료되면 서버는 파일 핸들을 닫고 임시 파일의 내용을 읽습니다.
    • 임시 디렉토리와 파일이 정리됩니다.
    • (참고: 메모리 내 파이프나 memfs 와 같은 가상 파일 시스템을 사용하려는 시도는 실패했습니다. 왜냐하면 node:wasi 현재 stdio에 대한 실제 OS 파일 설명자를 필요로 하기 때문입니다.)
  4. MCP 통신: 서버는 @modelcontextprotocol/sdk 사용하여 stdio 통해 MCP 요청을 수신하고 프로토콜에 따라 포맷된 실행 결과로 응답합니다.

필수 조건

  • Node.js (v23.x 이상 권장, 특정 버전에 대한 node:wasi 호환성 확인)
  • npm 또는 yarn
  • QuickJS WASM 파일( qjs-wasi.wasm )은 컴파일된 서버 스크립트와 같은 디렉토리에 있어야 합니다(예: ./dist/server.js 에 대한 ./dist/qjs-wasi.wasm ). 별도로 구하거나 컴파일해야 할 수도 있습니다.

설치

  1. 저장소를 복제합니다(해당되는 경우).
  2. 종속성 설치:지엑스피1

용법

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

샌드박스 QuickJS WASM 환경 내에서 임의의 JavaScript 코드를 안전하게 실행하여 언어 모델이나 다른 MCP 클라이언트가 호스트 시스템을 손상시키지 않고 JavaScript 코드 조각을 안전하게 실행할 수 있도록 합니다.

  1. Description
    1. Features
      1. How it Works
        1. Prerequisites
          1. Installation
            1. Usage
              ID: eb22brd6ru