Kyvenza に戻る

MCP サーバー

コーディングエージェントに
専用のコンピューターを

Kyvenza には MCP サーバーが内蔵されています。Claude Code や他の MCP クライアントを向けるだけで、エージェントは仮想マシンを起動し、何かに触れる前にスナップショットを取り、ゲストの中でコマンドを実行し、画面を見ることができます。VM 管理アプリにチャット窓を取り付けたものではありません。マシンそのものを、任せてもよいと思えるだけの安全装置とともに渡すということです。

なぜコンテナではなく仮想マシンなのか

シェルコマンドを実行できるエージェントには、そのコマンドがキーチェーン、SSH 鍵、本番の資格情報に届かない場所が必要です。仮想マシンの境界はツールが約束するものではなく、OS が強制するものです。Kyvenza はそこにコンテナにはないものを加えます。数秒で戻れるスナップショット、ディスクをほとんど食わない使い捨てのクローン、そしてネットワークが一切ないネットワークモードです。

接続はおよそ一分

  1. サーバーをオンにする

    設定の「自動化」から。それまでは切られたままです。

  2. エンドポイントをコピーする

    この Mac のトークンがすでに含まれています。URL 一つで資格情報が完結するので、URL を入力できるクライアントなら何でも接続できます。

  3. クライアントに貼る

    Claude Code ならコマンド一行です。JSON 設定を読むクライアント向けには、設定画面がそのスニペットも生成します。

Claude Code

claude mcp add --transport http kyvenza http://127.0.0.1:59800/mcp/YOUR-TOKEN

隣には「接続をテスト」ボタンがあり、自分のエンドポイントに実際にハンドシェイクして、見つかったツールの数を返します。「設定はこれで合っているのか」をその場で解決します。後からツール呼び出しの失敗で知ることにはなりません。

エージェントが Mac を壊さない理由

サーバーはループバックから出ない

127.0.0.1 にのみバインドします。ネットワーク上のどの機器からも、インターネットからも見えません。

Mac ごとに固有のトークン

これは具体的に説明する価値があります。脆弱性は理論上のものではなく実在するからです。QEMU のユーザーモードネットワークは、ゲストが 10.0.2.2 に送ったものをホストのループバックへの接続に翻訳します。つまり実行中の Windows ゲストは、Mac の 127.0.0.1 で待ち受けているサービスに到達でき、このサーバーもその一つです。そこでエンドポイントには 128 ビットのトークンを URL パスまたは Authorization ヘッダーに保持させ、ないリクエストには 401 だけを返します。これを無効にする互換モードはありません。

破壊的なツールは既定で無効

create_vm、clone_vm、delete_vm は、有効にするまでツール一覧にそもそも現れません。モデルに見えないツールは試されません。呼ばれてから拒むより確実な保証です。

delete_vm は自分が作ったものしか削除しない

clone_vm がサンドボックスとして作ったもの以外は拒否します。そして削除するものも完全に消すのではなく、ごみ箱に入れます。エージェントが違うものを消したときに取り消せないと困るからです。

エージェントが始める前にスナップショット

エージェントが MCP 経由で VM を起動すると、Kyvenza は先にスナップショットを取り、同じ応答の中でそれを報告します。エージェントはどこに戻ればよいかを知っておく必要があるからです。自分で画面から VM を起動したときは取りません。これは自動化のための安全機能であって、ディスクを埋めるものではありません。

ネットワークが一切ないマシン

どの VM も分離ネットワークに設定できます。Linux で Kyvenza のゲストエージェントを入れておけば、その後もコマンド実行と画面キャプチャは続けられます。その経路はネットワークではなく仮想ソケットだからです。

15 のツール

下記で印を付けた 3 つは、破壊的なツールを有効にするまで見えません。

ツール内容
list_vmsOS、状態、CPU、メモリを含む全 VM の一覧
get_vm_status状態、IP アドレス、画面解像度、ネットワークモード
get_vm_ip実行中の VM のゲスト IP アドレス
start_vm停止中の VM を、先にスナップショットを取ってから起動
stop_vm実行中の VM を停止。指定がなければ正常終了
restart_vm実行中の VM を再起動
suspend_vmゲストのメモリをディスクに書いて電源を切り、次回そこから再開Linux のみ。macOS と Windows には stop_vm を使ってください。
list_snapshotsVM のスナップショット一覧。自動取得分には印が付きます
take_snapshot停止中の VM のオフラインスナップショット
restore_snapshot停止中の VM をスナップショットに戻し、現在のディスクを置き換える
exec_shellゲストでコマンドを 1 つ実行し、終了コードと stdout、stderr を返すゲストエージェント入りの Linux はネットワークアドレスも SSH も不要です。macOS は SSH。Windows は、ゲスト内でドライバインストーラーを一度実行した上で、ループバック限定の転送ポート経由の SSH です。
screenshotゲスト画面の PNGWindows ゲストはホスト側で取得します。ゲストに何も入れる必要はなく、ネットワークアドレスも、表示ウィンドウを開いておく必要もありません。エージェント入りの Linux はディスプレイサーバーが無くても取れます。エージェントがカーネルのフレームバッファを直接読むからです。macOS はサインイン済みのグラフィカルセッションが必要です。
clone_vm既定で無効停止中の VM を使い捨てサンドボックスへ複製。ほぼ瞬時で、ディスクもほぼ使いません
create_vm既定で無効OS が入っていない空の新規マシン
delete_vm既定で無効clone_vm が作ったサンドボックスをごみ箱へ

これが得意なこと三つ

信用できないものを実行する

用意しておいた VM をサンドボックスにクローンし、その中でエージェントにインストーラーやスクリプトを実行させ、結果を読んでからサンドボックスを削除します。クローンはコピーオンライトなので、一秒ほどで現れ、ゲストが書き始めるまでディスクをほぼ使いません。期限切れのサンドボックスは Kyvenza が自動で回収するので、片付け忘れたエージェントのせいでライブラリが埋まることはありません。

本物の Windows でビルドを確かめる

エージェントは、ループバックにのみバインドされた転送ポート経由で Windows 11 on ARM ゲストにコマンドを実行でき、そのゲストに何も入れずに画面を撮れます。テストの結果ではなく、Windows で実際にどう見えるかを知りたいときに役立ちます。

ネットワークを抜いたマシンで作業する

Linux VM を分離ネットワークにすると、ネットワークアダプター自体がなくなります。それでもゲストエージェントはコマンドに答え、画面も撮ります。仮想ソケットを使っているからです。エージェントは働き続け、その上で動くコードはどこにも連絡できません。

できないこと

  • create_vm が返すのは空のマシンです。OS のインストールは対話的な作業で MCP からは驅動できません。だから、用意済みの VM からの clone_vm こそが本命のツールです。
  • Windows ゲストでコマンドを実行するには、Windows の中で Kyvenza のドライバインストーラーを一度実行する必要があり、その初回には VM からインターネットに出られることが必要です。
  • Windows ゲストの SSH ユーザー名は ASCII だけで構成されている必要があります。Windows 自体は許す引用符や空白、シェルのメタ文字を含むアカウント名を、OpenSSH は拒否します。
  • MCP 経由のスナップショットはディスクのみで、VM を停止しておく必要があります。実行中のマシンのメモリ保存は手動操作のままです。
  • macOS ゲストの画面キャプチャには、誰かがサインインしたグラフィカルセッションが必要です。

アプリ内にチャット欄がない理由

検討した上で作らないと決めました。率直に述べる価値のある理由が三つあります。Kyvenza は買い切りで、推論はトークン課金です。採算が合いません。ゲスト内で任意のコマンドを実行できるアプリ内アシスタントは、プライバシー開示、データ収集の申告、年齢制限を一気に連れてきます。そして、すでにお使いのクライアントは、仮想化アプリに添えて出すどんなものよりもクライアントとして優秀です。だから会話は今ある場所に置き、私たちはそれが話しかけるマシンを作ります。

手元のマシンで試してください

MCP サーバーは Mac App Store 版も直接ダウンロード版も、すべてのビルドに入っています。7 日間の無料試用にも含まれます。