/ ディレクトリ / プレイグラウンド / CodeRunner
● コミュニティ instavm ⚡ 即起動

CodeRunner

作者 instavm · instavm/coderunner

エージェント向けの VM 隔離コード実行環境。Python・Playwright・永続 Jupyter カーネル、全てホストから切り離されたサンドボックスで動作。

CodeRunner は Claude(および他のエージェント)に安全で永続的なサンドボックスを提供する。長期間保持の Jupyter カーネルで Python を実行し、Playwright でスクレイピングし、PDF や画像を操作できる。コンテナベースの VM レベル隔離により、エージェントが未検証のコードを実行してもホストマシンを破壊しない。MCP サーバーとして自身を公開するので任意のクライアントで動作する。

なぜ使うのか

主な機能

ライブデモ

実際の動作

準備完了

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "coderunner-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "coderunner-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/instavm/coderunner",
          "~/.claude/skills/coderunner"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add coderunner-skill -- git clone https://github.com/instavm/coderunner ~/.claude/skills/coderunner

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: CodeRunner

未検証のコードを Claude に実行させてもラップトップを危険にさらさない

👤 自動生成コードを試している開発者 ⏱ ~15 min intermediate

使うタイミング: 完全にはレビューしていないスクリプトを Claude に書かせて実行させたいとき。

前提条件
  • macOS Apple Silicon + Python 3.10 以上 — 現時点での制限。Linux サポートはまちまち
  • スキルのインストール — プロジェクトの README に従って git clone + ./install.sh を実行
フロー
  1. タスクを渡す
    Use coderunner. Write a Python script that downloads my Strava activities CSV from <url>, parses, and computes weekly mileage. Run it in the sandbox.✓ コピーしました
    → スクリプトが実行され、出力が表示される。自分のファイルシステムには何も触れていない
  2. イテレーションする
    Add a chart of weekly mileage. Re-run.✓ コピーしました
    → チャートがレンダリングされる。カーネルの状態が保持される(再インポート不要)
  3. 結果を書き出す
    Save CSV + chart to ./out/ on host (this only).✓ コピーしました
    → そのパスのみに書き込まれる。サンドボックスは封鎖されたまま

結果: 「うっかり /Users を削除した」がない、安全な素早い実験ができる。

注意点
  • サンドボックスでもネットワークアクセスは可能 — 本当に信頼できないコードを実行する場合はネットワークを無効にする。そうしないとデータが流出する可能性がある
組み合わせ: filesystem

Claude との永続的なデータ分析セッション

👤 Claude を Jupyter の補助として使うアナリスト ⏱ ~30 min beginner

使うタイミング: カーネルの状態を失わずに 30 分間の探索的データ分析を行いたいとき。

フロー
  1. 一度データを読み込む
    Use coderunner. Load /data/sales.csv into df. Show schema + 5 sample rows.✓ コピーしました
    → df がカーネルに保持される。セッション中は維持される
  2. アドホックなクエリ
    Pivot by region × month, show top 5 anomalies.✓ コピーしました
    → ピボットと異常フラグ付きの行が表示される
  3. 書き出す
    Save the anomalies subset to /out/anomalies.csv on host.✓ コピーしました
    → /out/ に CSV が保存される

結果: 実際にコードが動作するチャットを通じた、ノートブック品質の分析が完成する。

注意点
  • 長いセッションでカーネルの状態が乖離し、古い変数に基づいた結果になる — 無関係なタスクの間にカーネルをリセットする。Claude は %reset を発行できる
組み合わせ: filesystem

JS が多いサイトを安全にスクレイピングする

👤 SPA から単発データが必要な開発者 ⏱ ~20 min intermediate

使うタイミング: 完全なブラウザが必要なサイトで、ホストに Chrome プロセスを常駐させたくないとき。

フロー
  1. セッションを起動する
    Use coderunner Playwright. Open <url>, wait for the table, extract rows as JSON.✓ コピーしました
    → JSON が返される。ブラウザはサンドボックス内に留まる
  2. セレクタを調整する
    Selector missed the price column; adjust to find it.✓ コピーしました
    → セレクタが更新され、データが完全になる

結果: データが抽出される。ホストのブラウザの痕跡なし。

注意点
  • サイトがヘッドレスを検出してブロックする — スキルが公開している chromium の stealth オプションに切り替える

組み合わせ

他のMCPと組み合わせて10倍の力を

coderunner-skill + filesystem

マウントされたパスのみを通じてサンドボックスとの間でデータを移動する

Mount only /Users/me/data and /Users/me/out; everything else is read-only.✓ コピーしました
coderunner-skill + duckduckgo-mcp

検索 → 取得 → 分析のパイプライン

Search via duckduckgo, scrape via coderunner Playwright, analyze in Python.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
run_python code: str あらゆるコード実行 0
browser_navigate url, wait_for? SPA スクレイピングのための Playwright セッション 0
browser_extract selector, format ナビゲート後にデータを取得する 0
pdf_ops input_path, op, args PDF の結合・分割・抽出 0
image_ops input_path, op, args リサイズ・フォーマット変換・OCR 0
kernel_reset 無関係なセッションの間 0

コストと制限

運用コスト

APIクォータ
なし — ローカル
呼び出しあたりのトークン
コード・出力のトークンのみ
金額
無料
ヒント
永続カーネルは再インポートを省いてトークンを節約する。状態がおかしい場合のみリセットする

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Mounted filesystem paths only Network on/off via config
認証情報の保管: エージェントに見られて問題ないものでなければ機密情報をサンドボックスに入れないこと
データ送信先: ネットワークがオンの場合、サンドボックスは任意の URL にアクセス可能。機密性の高い実行では無効化する
絶対に付与しない: $HOME や / のマウント。サンドボックスの意味がなくなる

トラブルシューティング

よくあるエラーと対処法

Linux で install.sh が失敗する

プロジェクトは macOS Apple Silicon がファーストクラス。Linux サポートはまちまち。ディストリビューション固有の情報はイシューを確認する

Playwright の状態が古い

kernel_reset を実行する。古いブラウザコンテキストが呼び出しをまたいで残る場合がある

サンドボックスがインターネットに接続できない

設定でネットワークが無効になっている。必要な場合は有効にする。逆に不要な場合は隔離すること

PDF・画像スキルの依存関係が不足している

コンテナイメージには一般的なものが含まれている。カスタム依存関係を追加するにはイメージを再ビルドする

代替案

CodeRunner 他との比較

代替案代わりに使う場面トレードオフ
Anthropic code execution betaローカルサンドボックスなしのサーバーサイド実行が欲しいときクラウドサイド。データがマシン外に出る
Docker by handコンテナイメージを完全に制御したいとき手動セットアップ。MCP サーバーが最初から用意されていない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る