Runno Code Sandbox について
Runno Code Sandboxは、AIアシスタントが複数の言語でコードを実行するためのMCPサーバーです。分離されたWebAssembly環境を使う`run_code`ツールは、実行状態、終了コード、出力、エラーを返し、ファイルシステムやネットワークにはアクセスできません。
主な機能
- 01WebAssemblyによる分離実行
- 02Python、JavaScript、C、C++、Ruby、PHPに対応
- 03実行状態、出力、エラーの返却
- 04stdio通信
活用シーン
- 01プログラミング問題を解くコードの実行
- 02コード片によるデータ計算
- 03別の対応言語での実装の試行
MCP 対応
stdio経由でMCPクライアントに`run_code`ツールを提供します。クライアントはランタイムと言語コードを渡し、実行状態と出力を受け取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@runno/mcp
概要
@runno/mcp は、AI アシスタントに安全なコード実行環境を提供する Model Context Protocol (MCP) サーバーです。WebAssembly を使用したサンドボックス環境内で、モデルがさまざまなプログラミング言語のコードを実行できるようにし、AI とのやり取りの中でコードスニペットを安全に実行する方法を提供します。
機能
- 安全なサンドボックス環境: ファイルシステム、ネットワーク、システムリソースにアクセスすることなく、コードを隔離された環境で実行します
- 複数言語のサポート: Python、JavaScript (QuickJS)、C、C++、Ruby、PHP のコードを実行できます
- MCP 準拠: AI アシスタントとのシームレスな統合のために Model Context Protocol を実装しています
- シンプルな CLI ツール: 複雑なセットアップなしで、npx を使って簡単に実行できます
- 標準入出力通信: クライアントとの通信に stdio を使用します
例
この例では、Claude に leetcode の問題を出しました。Claude は Python を書いてそれを解きました: Leetcode の問題。
この例では、Claude に 5000 個の素数を効率的に計算するように指示しました。Claude は Python を書いてそれを解きました。その後、C を使うように指示すると、C で解法を書き直しました(そして実行しました): 5000 個の素数。
この例では、Claude に短い数値リストの p75 を求めるように依頼しました。Claude はまず Numpy を使った Python を書いて解こうとしましたが(うまくいきませんでした)、その後方針を変えて標準ライブラリだけを使って書きました: p75 の計算。
仕組み
@runno/mcp サーバーは、AI アシスタントがさまざまなプログラミング言語のコードスニペットを実行するために使用できる run_code ツールを提供します。これは @runno/sandbox パッケージを利用しており、このパッケージは WebAssembly を使用してコード実行用の隔離された環境を作成します。コード実行の結果は STDIO を介して提供されます。
@runno/sandbox は、複数のプログラミング言語向けにあらかじめコンパイルされた WebAssembly バイナリを使用します。そして、WASI preview1 の @runno/wasi 実装を使用して、仮想ファイルシステムに対してこれらのバイナリを実行します。
Runno サンドボックスの仕組みについて詳しくは、私の記事 I made a Python package for sandboxing code で読むことができます。これはサンドボックスの古いバージョン向けのものですが、基本的には同じように動作します。
サポートされているランタイム
| ランタイム | プログラミング言語 |
|---|---|
| python | Python |
| quickjs | JavaScript |
| clang | C |
| clangpp | C++ |
| ruby | Ruby |
| php-cgi | PHP |
ツールの使用方法
run_code ツールは、次のパラメータを受け付けます:
runtime: 使用するランタイム環境(サポートされているランタイムのいずれか)code: 実行するコード文字列
このツールは次を返します:
- 実行ステータス(完了、クラッシュ、強制終了、タイムアウトのいずれか)
- 終了コード(正常に完了した実行の場合)
- 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。