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 코드 조각을 안전하게 실행할 수 있습니다.
Related MCP server: MCP-REPL
특징
안전한 실행: QuickJS 및 Node.js WASI를 사용하여 WASM 샌드박스에서 JavaScript를 실행합니다.
표준 I/O 캡처: 실행된 JavaScript 코드에서
stdout및stderr캡처합니다.오류 보고: QuickJS의 런타임 오류와 0이 아닌 종료 코드를 보고합니다.
MCP 통합:
stdio통해 표준 MCP 도구로 기능을 제공합니다.TypeScript로 구축: 개발 중에 유형 안전성을 제공합니다.
작동 원리
WASM 모듈: WebAssembly System Interface(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/server.js에 대한./dist/qjs-wasi.wasm). 별도로 구하거나 컴파일해야 할 수도 있습니다.
설치
저장소를 복제합니다(해당되는 경우).
종속성 설치:
지엑스피1
용법
node server.tsThis server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.