mcpField
R
Runno Code Sandbox

Runno Code Sandbox

本地服务
github.com/taybenlorAI 与智能体77524 周前更新

关于 Runno Code Sandbox

Runno Code Sandbox 是供 AI 助手执行多种语言代码片段的 MCP 服务,使用隔离的 WebAssembly 环境。其 `run_code` 工具返回执行状态、退出码、输出和错误,且无法访问文件系统或网络。

主要功能

  1. 01基于 WebAssembly 的隔离执行
  2. 02支持 Python、JavaScript、C、C++、Ruby 和 PHP
  3. 03返回执行状态、输出和错误
  4. 04通过 stdio 通信

适用场景

  1. 01运行代码解决编程题
  2. 02用代码片段计算数据结果
  3. 03尝试使用其他支持的语言实现方案

MCP 相关

通过 stdio 向 MCP 客户端提供 `run_code` 工具。客户端传入运行时和代码字符串,并接收执行状态与输出。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"taybenlor-runno": {
"command": "npx",
"args": [
"-y",
"@runno/mcp"
]
}
}
}
启动命令npx -y @runno/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@runno/mcp0.10.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@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 沙箱工作原理的内容。这篇文章针对的是较旧版本的沙箱,但其工作方式基本相同。

支持的运行时

RuntimeProgramming Language
pythonPython
quickjsJavaScript
clangC
clangppC++
rubyRuby
php-cgiPHP

工具用法

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、内存)
  • 在生产环境中使用时,请考虑实施额外的控制措施,例如超时和资源限制

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。