关于 Runno Code Sandbox
Runno Code Sandbox 是供 AI 助手执行多种语言代码片段的 MCP 服务,使用隔离的 WebAssembly 环境。其 `run_code` 工具返回执行状态、退出码、输出和错误,且无法访问文件系统或网络。
主要功能
- 01基于 WebAssembly 的隔离执行
- 02支持 Python、JavaScript、C、C++、Ruby 和 PHP
- 03返回执行状态、输出和错误
- 04通过 stdio 通信
适用场景
- 01运行代码解决编程题
- 02用代码片段计算数据结果
- 03尝试使用其他支持的语言实现方案
MCP 相关
通过 stdio 向 MCP 客户端提供 `run_code` 工具。客户端传入运行时和代码字符串,并接收执行状态与输出。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
@runno/mcp
概述
@runno/mcp 是一个 Model Context Protocol (MCP) 服务,为 AI 助手提供安全的代码执行环境。它使模型能够在基于 WebAssembly 的沙箱环境中执行各种编程语言的代码,为 AI 交互过程中运行代码片段提供了一种安全的方式。
功能特性
- 安全的沙箱环境:在隔离环境中运行代码,无法访问文件系统、网络或系统资源
- 支持多种语言:可执行 Python、JavaScript (QuickJS)、C、C++、Ruby 和 PHP 代码
- 兼容 MCP:实现 Model Context Protocol,可与 AI 助手无缝集成
- 简单的命令行工具:无需复杂配置,通过 npx 即可轻松运行
- 标准 I/O 通信:使用 stdio 与客户端进行通信
示例
在这个示例中,我给 Claude 出了一道 leetcode 题目。它通过编写 Python 解决了这道题:Leetcode 题目。
在这个示例中,我让 Claude 高效地计算 5000 个素数。它通过编写 Python 解决了这个问题。随后当我让它使用 C 时,它用 C 重写了解决方案(并运行了它):5000 个素数。
在这个示例中,我让 Claude 告诉我一组简短数字的 p75。它先编写了使用 Numpy 的 Python(但没有成功),随后调整思路,仅使用标准库完成了编写:p75 计算。
工作原理
@runno/mcp 服务提供了一个 run_code 工具,AI 助手可以用它来执行各种编程语言的代码片段。它借助 @runno/sandbox 包,该包使用 WebAssembly 为代码执行创建隔离环境。代码执行的结果通过 STDIO 返回。
@runno/sandbox 使用为多种编程语言预编译的 WebAssembly 二进制文件。然后,它使用 @runno/wasi 对 WASI preview1 的实现,在虚拟文件系统上执行这些二进制文件。
你可以在我的文章 I made a Python package for sandboxing code 中了解更多关于 Runno 沙箱工作原理的内容。这篇文章针对的是较旧版本的沙箱,但其工作方式基本相同。
支持的运行时
| Runtime | Programming Language |
|---|---|
| python | Python |
| quickjs | JavaScript |
| clang | C |
| clangpp | C++ |
| ruby | Ruby |
| php-cgi | PHP |
工具用法
run_code 工具接受以下参数:
runtime:要使用的运行时环境(受支持运行时之一)code:要执行的代码字符串
该工具返回:
- 执行状态(completed、crashed、terminated 或 timed out)
- 退出码(针对已完成的执行)
- TTY 输出(合并的 stdout 和 stderr)
- 错误详情(针对崩溃的执行)
限制
在沙箱中执行的代码:
- 无法访问文件系统
- 无法建立网络连接
- 无法执行系统命令
- 无法从包管理器导入包
- 无法执行外部程序
- 仅限于核心编程语言能力
运行服务
使用 npx
运行 Runno MCP 服务最简单的方式是使用 npx:
npx @runno/mcp
这将在 stdio 上启动服务,使其立即可用于与兼容 MCP 的客户端集成。
与 MCP 客户端集成
要将 Runno MCP 服务与 MCP 客户端配合使用,你只需将其配置为运行 npx @runno/mcp。
对于 Claude,你可以编辑 MCP Config:
{
"mcpServers": {
"runno": {
"command": "/usr/local/bin/npx",
"args": ["@runno/mcp"]
}
}
}
注意:要获取 npx 的正确路径,请运行 which npx。
安全注意事项
- Runno MCP 服务通过 WebAssembly 为执行的代码提供强隔离
- 不过,仍应监控资源消耗(CPU、内存)
- 在生产环境中使用时,请考虑实施额外的控制措施,例如超时和资源限制
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。