MCP QuickJS 运行器是一个实现了 Model Context Protocol (MCP) 的服务器,它提供了一种安全的方式,可在 QuickJS 引擎中执行任意 JavaScript 代码。该引擎通过 WebAssembly (WASM) 编译,并借助 Node.js 的内置 WASI 实现运行。
若要启动 MCP QuickJS 运行器,可使用以下命令:
node server.ts
node:wasi
的兼容性)qjs-wasi.wasm
)。该文件必须位于服务器脚本所在的同一目录中(例如,相对于 ./dist/server.js
的 ./dist/qjs-wasi.wasm
)。如果需要,请自行获取或编译。npm install
此服务器充当 MCP 工具提供者。它暴露一个名为 run_javascript_code
的工具,该工具接收一段 JavaScript 代码字符串作为输入。然后在 QuickJS WASM 环境中安全地执行这段代码。服务器捕获执行过程中的标准输出(stdout)和标准错误(stderr),并将这些结果连同任何运行时错误一并返回给 MCP 客户端。
这使语言模型或其他 MCP 客户端能够安全地执行可能不受信任的 JavaScript 代码片段,而不会对主机系统造成风险。
qjs-wasi.wasm
),该引擎针对 WebAssembly 系统接口 (WASI) 进行了目标编译。node:wasi
模块来 Instantiate 和运行 WASM 模块。node:wasi
兼容的标准方法:
node:fs/promises
和 node:os
创建一个临时目录。memfs
的虚拟文件系统来代替临时文件的方法失败了,因为 node:wasi
目前需要实际的操作系统文件描述符来进行 stdio。)@modelcontextprotocol/sdk
通过 stdio 监听 MCP 请求,并按协议格式将执行结果返回给客户端。