
Runno MCP Server
Author: taybenlor
Description: Runno is a TypeScript/JavaScript monorepo of packages for running multi-language code (via WASI/WebAssembly) in a sandbox across browser and Node, including an MCP server package (@runno/mcp) built on @runno/sandbox. MCP usage (from README): configure your MCP client to run `npx @runno/mcp`. Capabilities (high level): execute sandboxed code using WASI-based runtimes (e.g., python, ruby, quickjs, sqlite, clang, clangpp, php-cgi) with STDIN/STDOUT-style interaction; virtual filesystem support via the sandbox layer; no network/real filesystem by default (virtualized WASI preview1 environment).
Stars: 762
Forks: 44
License: MIT License
Category: Open Source
Overview
Installation
{
"mcpServers": {
"runno": {
"command": "npx",
"args": ["@runno/mcp"]
}
}
}npm install
npm run bootstrap
npm run build # make sure the dependent libraries are built
npm run devrunCode
Run a snippet of code in a specified runtime (e.g., ruby) inside the sandbox and return the execution result (including stdout/stderr and completion status).
runFS
Run code/programs in a specified runtime using a provided virtual file system (WASIFS), with optional stdin and timeout, returning a RunResult.
WASI.start
Convenience method to set up WASI and run a Wasm/WASI binary directly (on the main thread), with support for args, env, stdout/stderr callbacks, stdin provider, and a virtual file system.
<runno-run>
Web component for running editable code examples in the browser using a chosen runtime (e.g., python), optionally with an editor and controls.
<runno-wasi>
Web component for running a WASI WebAssembly binary in the browser (e.g., via a src URL), optionally autorun.
FAQs
How do I configure Runno MCP Server with Cursor or VS Code instead of Claude Desktop?
Both editors support stdio MCP servers using identical command and args structures. In Cursor, add the server to MCP settings JSON; in VS Code, configure via Copilot MCP settings panel or settings.json. Use the absolute npx path found via `which npx` on macOS/Linux or the full Node.js installation path on Windows, typically pointing to npx.cmd.
What are the specific limitations of running Python 3.6 in Runno MCP Server compared to modern Python versions?
Python 3.6 in Runno lacks pattern matching, positional-only parameters, typing improvements like union syntax, async comprehensions, dataclass frozen defaults, and performance optimizations from later releases. Additionally, Python 3.6 reached end-of-life in December 2021, meaning it no longer receives security patches or bug fixes, creating potential risks for production workloads.
How does Runno MCP Server's WebAssembly sandbox performance compare to Docker-based code execution for small scripts?
WebAssembly sandboxes typically start in milliseconds versus Docker's seconds-long container spin-up because WASM runtimes avoid kernel namespace creation and image layer loading. For small scripts under one second of execution time, this startup overhead dominates total latency, making WASM-based solutions measurably faster in practice despite similar runtime performance once executing.
Can I add timeouts and resource limits to Runno MCP Server for production use, and how?
Yes, but you must implement them at the host level. Runno's documentation recommends adding timeouts and resource limits for production but does not provide built-in mechanisms. You'll need to wrap the MCP server process with OS-level controls like systemd resource limits, container constraints, or Node.js process monitoring libraries that enforce CPU, memory caps, and execution timeouts externally.
What happens if my code needs to read or write files when running in the Runno MCP sandbox?
Code cannot access the host filesystem in Runno's default configuration. However, Runno supports virtual file I/O inside the sandbox itself, meaning you can create, read, and write files that exist only within the isolated WebAssembly execution environment and disappear after execution completes. These in-memory files are not persisted to your local system.
Is Runno MCP Server suitable for running unit tests on AI-generated code, and what testing frameworks are available within the stdlib-only constraint?
Yes, Runno can validate individual unit test functions written inline, but traditional frameworks like pytest, unittest, Jest, or RSpec require imports unavailable in stdlib-only execution. You must write assertions manually using language primitives—Python's `assert`, Ruby's `raise`, or return-value checks—then parse output to determine pass or fail. This works for small validation but doesn't scale.