mcpField
H
Hyperlight

Hyperlight

ローカル
github.com開発ツール39今日更新

Hyperlight について

Hyperlight は、ローカルのハードウェア分離マイクロ VM で Python を実行する MCP サーバーです。完全な CPython 3.12 を備え、呼び出し間で状態を保持するため、手元の環境で隔離実行したい開発者に適しています。

主な機能

  1. 01ローカルのハードウェア分離マイクロ VM
  2. 02ネイティブ wheel 対応の CPython 3.12
  3. 03呼び出し間で Python の状態を保持
  4. 04ネットワーク制限とファイルの選択的マウント
  5. 05新しいゲスト環境へのリセット

活用シーン

  1. 01隔離環境での Python コード実行
  2. 02複数回の呼び出しで変数やインポートを再利用
  3. 03コードからのホストやローカルファイルへのアクセス制限

MCP 対応

標準入出力で MCP を使用し、クライアントに `run_python` と `reset_sandbox` ツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"hyperlight-dev-mcp-server-hyperlight": {
"command": "uvx",
"args": [
"mcp-server-hyperlight"
]
}
}
}
起動コマンドuvx mcp-server-hyperlight

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-server-hyperlight0.1.1

ツール

2

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
codestringはい実行する Python コード

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

mcp-server-hyperlight

あらゆる MCP クライアント(Claude Code、Claude Desktop、VS Code、Cursor など)向けに、ローカルの Hyperlight マイクロ VM で Python を実行する MCP サーバーです。

このサーバーは hluk CLI を介して、専用のハードウェア分離型マイクロ VM(Linux では KVM または MSHV、Windows では WHP、Apple シリコン搭載 Mac では HVF)内で Unikraft のユニカーネルを起動します。アカウントもデーモンも API キーも不要で、コードとデータはお使いのマシン内にとどまります。--net-allow でホストを許可しない限り、ゲストはネットワークにアクセスできません。また、マウントしない限り、ファイルにもアクセスできません。

Pyodide サーバークラウドサンドボックスmcp-server-hyperlight
分離Deno プロセス内の Wasmクラウド VM またはコンテナーマイクロ VM、独自のカーネル
PythonPyodide のパッケージのみフル機能フル機能の CPython 3.12、ネイティブホイール
マシン上で実行はいいいえはい
必要なものDenoアカウント、API キーhluk とハイパーバイザー
起動時間数秒数秒約 40 ms(Linux、KVM)

インストール

hluk v0.18.0 以降をインストールします。Linux または macOS の場合:

curl -fsSL https://raw.githubusercontent.com/hyperlight-dev/hyperlight-unikraft/main/install.sh | sh

Windows の場合は、PowerShell で:

irm https://raw.githubusercontent.com/hyperlight-dev/hyperlight-unikraft/main/install.ps1 | iex

続いて、サーバーをクライアントに追加します。uv の uvx を使うか、pip install mcp-server-hyperlight を実行して mcp-server-hyperlight コマンドを使います。

Claude Code:

claude mcp add hyperlight -- uvx mcp-server-hyperlight

Claude Desktop、Cursor、その他の JSON 設定を使うクライアント:

{
  "mcpServers": {
    "hyperlight": {
      "command": "uvx",
      "args": ["mcp-server-hyperlight"]
    }
  }
}

VS Code(.vscode/mcp.json):

{
  "servers": {
    "hyperlight": {
      "command": "uvx",
      "args": ["mcp-server-hyperlight"]
    }
  }
}

Codex(~/.codex/config.toml)では、初回起動時に uvx がサーバーをインストールする時間と、初回の呼び出しでゲストイメージを待つ時間(--startup-timeout、300 s)、その後に実行する時間(--timeout、30 s)を確保します。呼び出しは一度に 1 件ずつ処理されます。

[mcp_servers.hyperlight]
command = "uvx"
args = ["mcp-server-hyperlight"]
startup_timeout_sec = 60
tool_timeout_sec = 360

OpenAI Agents SDK では、同じ初回呼び出しに対して MCPServerStdio(params={"command": "uvx", "args": ["mcp-server-hyperlight"]}, client_session_timeout_seconds=360) を使って実行します。デフォルトの 5 秒では、呼び出しの実行時間に足りない場合があります。

Claude Desktop では、設定不要の Desktop Extension としても利用できます。リリースから mcp-server-hyperlight-0.1.1.mcpb をダウンロードして開いてください。uv を使って PyPI からサーバーをインストールします。設定では --timeout と --net-allow を指定します。

クライアントがサーバーを起動すると、サーバーはすぐにゲストを起動します。初回は hluk がリリースの agent イメージ(約 400 MB、ダウンロードサイズは 130 MB)を取得し、起動済みのイメージのウォームスナップショット(約 800 MB)を保存します。この処理には数秒から数分かかります。その後、ゲストはスナップショットから数ミリ秒で起動します。イメージには、numpy、pandas、scipy、scikit-learn、matplotlib、pillow、requests を含む CPython 3.12 が同梱されています。クライアントが初めてサーバーを起動する前に両方の準備を済ませるには、hluk run --runtime agent --exec 'print("ready")' を実行します。

ツール

ツール
run_pythonPython コードを実行します。ノートブックと同様に、変数、インポート、関数は次の呼び出しまで保持されます。サブプロセスの出力も含め、コードが出力した内容と、末尾の式の値を Out: の後に返します。エラーの場合はトレースバックをツールエラーとして返します。
reset_sandbox実行中のコードが終了するかタイムアウトした後、約 60 ms でウォームスナップショットから新しいゲストに置き換えます(Linux、KVM の場合)。--package で指定したパッケージは、--net-allow を使って再インストールされます。

--timeout(デフォルトは 30 s)を超えて実行される呼び出しは停止され、ゲストは新しいものに置き換えられます。ゲストがクラッシュした場合も同様です。モデルには変数が失われたことが通知されます。クライアントが実行順になる前にキャンセルした呼び出しは実行されません。すでに実行中の呼び出しは終了するかタイムアウトするまで続行されます。サーバーには、時間制限に達する前にコードを停止する手段がまだないためです。

オプション

コマンドの後に指定します。例:uvx mcp-server-hyperlight --net-allow pypi.org --net-allow files.pythonhosted.org --package sympy。

オプションデフォルト
--net-allow HOSTなしゲストが接続できるホストまたは IP です。複数指定する場合は繰り返すか、コンマで区切ります。何も指定しない場合、すべての接続が拒否されます。
--package NAMEなしイメージに含まれていない場合に、起動時とリセット後にゲストへインストールするパッケージです。インストールには、パッケージインデックス用の --net-allow が必要です。
--timeout SECONDS30呼び出しの最長実行時間です。そのため、リセットまたは次の呼び出しで待機する最長時間でもあります。
--runtime NAMEagent実行する公開イメージです。名前または完全な参照で指定します。
--initrd PATH代わりに実行する独自のルートファイルシステム CPIO です(CPython 3 が必要です)。
--scratch-mb MIBイメージの値ゲストメモリの MiB 数です。
--hluk-path PATHPATH 上の hlukそれ以外の場合、インストール先は $HLUK_INSTALL_DIR、インストールスクリプトの ~/.local/bin(Windows では %LOCALAPPDATA%\hluk\bin)、または Cargo の $CARGO_HOME/bin(~/.cargo/bin)です。別の PATH でサーバーを起動するクライアント向けのオプションです。
--hluk-arg ARGhluk run に渡す追加引数です。オプションごとに 1 つ指定します。--hluk-arg=--mount --hluk-arg=/data:/data:ro を指定すると、/data を読み取り専用でマウントします。
--startup-timeout SECONDS300ゲストの起動を待つ最長時間です。初回起動時にはイメージがプルされます。

ツールの説明では、ゲストが利用できるもの、つまりパッケージ、接続可能なホスト、自分のファイルが見えるかどうかをモデルに伝えます。ディレクトリをマウントしたりネットワークを開いたりできる --hluk-arg を使うと、ゲストにどちらもないとは説明されなくなります。

仕組み

このサーバーは、smolagents-hyperlight のエグゼキューター上に構築された薄いレイヤーです。子プロセスとして hluk run を起動し、コンソール経由でゲスト内の小さな Python スクリプトと通信します。2 つのパッケージは、ゲストプロトコルとそのテスト、およびゲストから返されるデータの上限を共有しています。

  • 1 つのゲストがサーバーのクライアントに対応し、ツール呼び出しは順番に実行されるため、状態の一貫性が保たれます。起動に失敗したゲストは標準エラーに報告され、最初の呼び出しではモデルにも報告され、その呼び出しで再試行されます。
  • 呼び出しの間、マイクロ VM 全体が一時停止します。呼び出し後も実行を続けるスレッドやサブプロセスも、呼び出しの実行中にのみ動作します。
  • ゲストは信頼されていません。応答にはサイズ上限(64 MiB、出力は 2 MiB)が設けられ、サーバーが使用する前に検証されます。MCP クライアントがエージェントのエグゼキューターよりもはるかに少ない文字数しか扱わないため、ツールの結果は最大 100,000 文字に制限され、先頭と末尾が保持されます。
  • サーバーは標準入力と標準出力で MCP を通信し、標準エラーにログを出力します。hluk 自身の出力は分離して保持され、ゲストの起動に失敗した場合はエラーとともに出力されます。サーバーの終了時、入力が閉じられたとき、または SIGTERM か SIGINT を受け取ったときに、ゲストを停止します。

既知の制限

  • Python のみ、テキストのみです。コードが生成した画像は repr として返されます。画像を保持するには、マウントしたディレクトリに保存してください。
  • コード自体で pip を使ってインストールしたパッケージは、リセット後に消えます。--package で指定したパッケージは再インストールされます。
  • vCPU は 1 つです。ゲスト内のスレッドは同時に実行されず、順番に動作します。
  • サーバー終了時に、イメージのプル中または --package のパッケージのインストール中で、まだ起動中のゲストはサーバーとともに停止せず、起動処理が終わるまで実行されます。それまではエグゼキューターがサーバーにそのゲストへのハンドルを渡さないためです。
  • 各 Python サブプロセス(pip install を含む)は、ゲストを再起動するまで約 15 MiB のゲストメモリを使用します(ゲストカーネルのバグです)。
  • CI では Linux(KVM)と Windows(WHP)上でサーバーをテストします。hluk は Apple シリコン搭載 Mac もサポートしていますが、サーバーはまだそこでテストされていません。

開発

pip install -e ../smolagents -e '.[test]'
pytest                    # unit tests, and the server end to end with a stand-in for hluk
RUN_ALL=1 pytest          # also the tests in a real micro-VM, with the hluk on PATH

smolagents-hyperlight と同様に、HLUK_PATH、HLUK_INITRD、HLUK_SCRATCH_MB を使うと、PATH 上の hluk とその公開イメージの代わりに、ローカルビルドの hluk とその agent ルートファイルシステムをテストできます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。