Claude KVM

公式

🤖 ⚡️ MCPサーバー( MacOS)— VNC経由でリモートデスクトップを制御

ドキュメント

Claude KVM

Claude KVM

リモートアクセス、人工知能

claude-kvm.ai

Claude KVMは、VNC経由でリモートデスクトップ環境を制御するMCPツールです。軽量なJSプロキシレイヤー(MCPサーバー)と、macOSシステム上で動作するプラットフォームネイティブのSwift VNCデーモンで構成されています。

Claude KVM Demo Claude KVM Demo Mac

[!TIP] Phantom-WG は優れた代替手段となり得ます。 自己ホスト型VPNのパフォーマンスを享受しながら、追加のプライバシー機能と共に、VNCサーバーを自身のネットワーク内に隔離できます。

ライブテスト実行

[!NOTE] テストはGitHub Actions上で透過的に実施され、各ステップはCI環境で確認できます。統合テストの成否にかかわらず、各テストの最後には、エージェントがセッション中に実行した各ステップのスクリーンショットと、セッション全体を記録した.mp4ビデオ録画が提供されます。これらの録画とスクリーンショットを確認することで、エージェントが各段階をどのように進めたか、タスクにかかった時間、システムプロンプトに基づいてどのような判断が下されたかを観察できます。自身の環境でMCPサーバー用のシステムプロンプトや指示を作成する際の参考として、これらの例を活用できます。

[!WARNING] これらの実行に添付されたアーティファクトは、GitHubのアーティファクト保持ポリシーにより期限切れになっている可能性があります。永続的なコピーはPersist Artifactsワークフローを通じて準備され、press-kitブランチのartifacts/ディレクトリから実行IDで常にアクセスできます。

アーキテクチャ

graph TB
    subgraph MCP["MCP Client (Claude)"]
        AI["Claude"]
    end

    subgraph Proxy["claude-kvm · MCP Proxy (stdio)"]
        direction TB
        Server["MCP Server<br/><code>index.js</code>"]
        Tools["Tool Definitions<br/><code>tools/index.js</code>"]
        Server --> Tools
    end

    subgraph Daemon["claude-kvm-daemon · Native VNC Client (stdin/stdout)"]
        direction TB
        CMD["Command Handler<br/><i>PC Dispatch</i>"]
        Scale["Display Scaling<br/><i>Scaled ↔ Native</i>"]

        subgraph Screen["Screen"]
            Capture["Frame Capture<br/><i>PNG · Crop · Diff</i>"]
            OCR["OCR Detection<br/><i>Apple Vision</i>"]
        end

        subgraph InputGroup["Input"]
            Mouse["Mouse<br/><i>Click · Drag · Move · Scroll</i>"]
            KB["Keyboard<br/><i>Tap · Combo · Type · Paste</i>"]
        end

        VNC["VNC Bridge<br/><i>LibVNCClient 0.9.15</i>"]

        CMD --> Scale
        Scale --> Capture
        Scale --> Mouse
        Scale --> KB
        Capture -.->|"framebuffer"| VNC
        Mouse -->|"pointer events"| VNC
        KB -->|"key events"| VNC
    end

    subgraph Target["Target Machine"]
        VNC_Server["VNC Server<br/><i>:5900</i>"]
        Desktop["Desktop Environment"]
        VNC_Server --> Desktop
    end

    AI <-->|"stdio<br/>JSON-RPC"| Server
    Server <-->|"stdin/stdout<br/>PC (NDJSON)"| CMD
    VNC <-->|"RFB Protocol<br/>TCP :5900"| VNC_Server

    classDef proxy fill:#1a1a2e,stroke:#16213e,color:#e5e5e5
    classDef daemon fill:#0f3460,stroke:#533483,color:#e5e5e5
    classDef target fill:#1a1a2e,stroke:#e94560,color:#e5e5e5

    class Server,Tools proxy
    class CMD,Scale,VNC,Capture,Mouse,KB daemon
    class VNC_Server,Desktop target

レイヤー

レイヤー言語役割通信方式
MCPプロキシJavaScript (Node.js)MCPプロトコルでClaudeと通信し、デーモンのライフサイクルを管理stdio JSON-RPC
VNCデーモンSwift/C (Apple Silicon)VNC接続、画面キャプチャ、マウス/キーボード入力の注入stdin/stdout PC (NDJSON)

PC (プロシージャコール) プロトコル

プロキシとデーモン間の通信は、NDJSON上のPCプロトコルを使用します。

Request:      {"method":"<name>","params":{...},"id":<int|string>}
Response:     {"result":{...},"id":<int|string>}
Error:        {"error":{"code":<int>,"message":"..."},"id":<int|string>}
Notification: {"method":"<name>","params":{...}}

座標スケーリング

VNCサーバーのネイティブ解像度は、--max-dimension(デフォルト: 1280px)内に収まるように縮小されます。Claudeはスケーリングされた座標でより一貫して動作します。デーモンがバックグラウンドで変換を処理します。

Native:  4220 x 2568  (VNC server framebuffer)
Scaled:  1280 x 779   (what Claude sees and targets)

mouse_click(640, 400) → VNC receives (2110, 1284)

画面戦略

Claudeは、段階的な検証アプローチでトークンコストを最小限に抑えます。

diff_check       →  changeDetected: true/false     ~5ms    (text only, no image)
detect_elements  →  OCR text + bounding boxes      ~50ms   (text only, no image)
cursor_crop      →  crop around cursor              ~50ms   (small image)
screenshot       →  full screen capture             ~200ms  (full image)

detect_elementsは、オンデバイスOCRにApple Visionフレームワークを使用します。スケーリングされた空間でのバウンディングボックス座標と共にテキストコンテンツを返し、ビジョントークンを消費せずに正確なクリックターゲットを可能にします。


インストール

要件

  • macOS (Apple Silicon / aarch64)
  • Node.js (LTS)

デーモン

brew tap ARAS-Workspace/tap
brew install claude-kvm-daemon

[!NOTE] claude-kvm-daemonはCI(GitHub Actions)経由でコンパイルおよびコード署名されます。ビルド出力は、Homebrew配布用の.tar.gzアーカイブと、公証用の.dmgディスクイメージの2つの形式でパッケージ化されます。DMGは同じワークフロー内でAppleサーバーに公証のために提出され、プロセスはCIログから追跡できます。公証済みDMGはCIアーティファクトとして利用可能です。アーカイブされた.tar.gzもリポジトリのリリースとして公開されます。Homebrewインストールはこのリリースを追跡します。

MCP設定

プロジェクトディレクトリに.mcp.jsonファイルを作成します。

{
  "mcpServers": {
    "claude-kvm": {
      "command": "npx",
      "args": ["-y", "claude-kvm"],
      "env": {
        "VNC_HOST": "192.168.1.100",
        "VNC_PORT": "5900",
        "VNC_USERNAME": "user",
        "VNC_PASSWORD": "pass",
        "CLAUDE_KVM_DAEMON_PATH": "/opt/homebrew/bin/claude-kvm-daemon",
        "CLAUDE_KVM_DAEMON_PARAMETERS": "-v"
      }
    }
  }
}

[!NOTE] このツールはCI経由でエンドツーエンドテストされています。ClaudeがVNC経由でタスクを実行する間、独立したビジョンモデルが結果を観察し検証します。ライブワークフローの実行、システムプロンプト、デモ録画については統合テストを参照してください。

設定

MCPプロキシ (ENV)

パラメーターデフォルト説明
VNC_HOST127.0.0.1VNCサーバーアドレス
VNC_PORT5900VNCポート番号
VNC_USERNAMEユーザー名 (ARDに必要)
VNC_PASSWORDパスワード
CLAUDE_KVM_DAEMON_PATHclaude-kvm-daemonデーモンバイナリパス (PATHに含まれている場合は不要)
CLAUDE_KVM_DAEMON_PARAMETERSデーモンの追加CLI引数

デーモンパラメーター (CLI)

CLAUDE_KVM_DAEMON_PARAMETERS経由でデーモンに渡される追加引数:

"CLAUDE_KVM_DAEMON_PARAMETERS": "--max-dimension 800 -v"
パラメーターデフォルト説明
--max-dimension1280最大ディスプレイスケーリング次元 (px)
--connect-timeoutVNC接続タイムアウト (秒)
--bits-per-sampleピクセルあたりのビットサンプル
--no-reconnect自動再接続を無効化
-v, --verbose詳細ログ (stderr)

ランタイム設定 (PC)

すべてのタイミングおよび表示パラメーターは、configureメソッドを介してランタイムに設定可能です。現在の値を検査するにはget_timingを使用します。

タイミング設定:

{"method":"configure","params":{"click_hold_ms":80,"key_hold_ms":50}}
{"result":{"detail":"OK — changed: click_hold_ms, key_hold_ms"}}

表示スケーリング変更:

{"method":"configure","params":{"max_dimension":960}}
{"result":{"detail":"OK — changed: max_dimension","scaledWidth":960,"scaledHeight":584}}

デフォルトにリセット:

{"method":"configure","params":{"reset":true}}
{"result":{"detail":"OK — reset to defaults","timing":{"click_hold_ms":50,"combo_mod_ms":10,"cursor_crop_radius":150,"double_click_gap_ms":50,"drag_min_steps":10,"drag_pixels_per_step":20,"drag_position_ms":30,"drag_press_ms":50,"drag_settle_ms":30,"drag_step_ms":5,"hover_settle_ms":400,"key_hold_ms":30,"max_dimension":1280,"paste_settle_ms":30,"scroll_press_ms":10,"scroll_tick_ms":20,"type_inter_key_ms":20,"type_key_ms":20,"type_shift_ms":10},"scaledWidth":1280,"scaledHeight":779}}

現在の値を取得:

{"method":"get_timing"}
{"result":{"timing":{"click_hold_ms":80,"combo_mod_ms":10,"cursor_crop_radius":150,"double_click_gap_ms":50,"drag_min_steps":10,"drag_pixels_per_step":20,"drag_position_ms":30,"drag_press_ms":50,"drag_settle_ms":30,"drag_step_ms":5,"hover_settle_ms":400,"key_hold_ms":50,"max_dimension":1280,"paste_settle_ms":30,"scroll_press_ms":10,"scroll_tick_ms":20,"type_inter_key_ms":20,"type_key_ms":20,"type_shift_ms":10},"scaledWidth":1280,"scaledHeight":779}}
パラメーターデフォルト説明
max_dimension1280最大スクリーンショット次元
cursor_crop_radius150カーソル切り抜き半径 (px)
click_hold_ms50クリック保持時間
double_click_gap_ms50ダブルクリック間隔遅延
hover_settle_ms400ホバー安定待機
drag_position_ms30ドラッグ前位置待機
drag_press_ms50ドラッグ押下保持閾値
drag_step_ms5補間ポイント間
drag_settle_ms30リリース前安定化
drag_pixels_per_step20ピクセルあたりのポイント密度
drag_min_steps10最小補間ステップ
scroll_press_ms10スクロール押下-リリース間隔
scroll_tick_ms20ティック間遅延
key_hold_ms30キー保持時間
combo_mod_ms10修飾キー安定化遅延
type_key_ms20タイピング中のキー保持
type_inter_key_ms20文字間遅延
type_shift_ms10シフトキー安定化
paste_settle_ms30クリップボード書き込み後待機

ツール

すべての操作は、単一のvnc_commandツールを通じて実行されます。

画面

アクションパラメーター説明
screenshotフルスクリーンPNGキャプチャ
cursor_cropカーソル周辺をクロスヘアオーバーレイ付きで切り抜き
diff_checkベースラインに対する画面変更を検出
set_baseline現在の画面を差分リファレンスとして保存

マウス

アクションパラメーター説明
mouse_clickx, y, button?クリック (left|right|middle)
mouse_double_clickx, yダブルクリック
mouse_movex, yカーソル移動
hoverx, y移動 + 安定化待機
nudgedx, dy相対カーソル移動
mouse_dragx, y, toX, toY開始点から終了点へドラッグ
scrollx, y, direction, amount?スクロール (up|down|left|right)

キーボード

アクションパラメーター説明
key_tapkey単一キー押下 (enter|escape|tab|space|...)
key_combokey または keys修飾キーコンボ ("cmd+c" または ["cmd","shift","3"])
key_typetextテキストを1文字ずつ入力
pastetextクリップボード経由でテキストを貼り付け

検出

アクションパラメーター説明
detect_elementsバウンディングボックス付きOCRテキスト検出 (Apple Vision)

スケーリングされた空間でのバウンディングボックス座標を持つテキスト要素を返します。

{"method":"detect_elements"}
{"result":{"detail":"13 elements","elements":[{"confidence":1,"h":9,"text":"Finder","w":32,"x":37,"y":6},{"confidence":1,"h":9,"text":"File","w":15,"x":84,"y":6},{"confidence":1,"h":9,"text":"Edit","w":19,"x":112,"y":6},{"confidence":1,"h":9,"text":"View","w":22,"x":143,"y":6},{"confidence":1,"h":11,"text":"Go","w":15,"x":179,"y":6},{"confidence":1,"h":9,"text":"Window","w":35,"x":207,"y":6},{"confidence":1,"h":11,"text":"Help","w":22,"x":255,"y":6},{"confidence":1,"h":11,"text":"8•","w":26,"x":1161,"y":6},{"confidence":1,"h":9,"text":"Fri Feb 20 22:19","w":80,"x":1189,"y":6},{"confidence":1,"h":9,"text":"Assets","w":32,"x":1202,"y":97},{"confidence":1,"h":9,"text":"Passwords.kdbx","w":74,"x":1181,"y":168},{"confidence":1,"h":93,"text":"PHANTOM","w":633,"x":322,"y":477},{"confidence":1,"h":32,"text":"YOUR SERVER, YOUR NETWORK, YOUR PRIVACY","w":629,"x":325,"y":568}],"scaledHeight":717,"scaledWidth":1280}}

設定

アクションパラメーター説明
configure{<params>}ランタイムでタイミング/表示パラメーターを設定
configure{reset: true}すべてのパラメーターをデフォルトにリセット
get_timing現在のタイミング + 表示パラメーターを取得

制御

アクションパラメーター説明
waitms?待機 (デフォルト500ms)
health接続ステータス + ディスプレイ情報
shutdownグレースフルデーモンシャットダウン

認証

サポートされているVNC認証方式:

  • VNC Auth — パスワードベースのチャレンジレスポンス (DES)
  • ARD — Apple Remote Desktop (Diffie-Hellman + AES-128-ECB)

macOSは、ARD認証タイプ30のクレデンシャルリクエストを介して自動検出されます。検出されると、MetaキーはSuper(Commandキー互換性)に再マッピングされます。


MCP Badge

[!NOTE] ベアメタルのMacで実行していますか?VNCの強化、SSHトンネリング、セッション安定化のヒントについては、Mac M1準備のコツをご覧ください。


「Claude」はAnthropic, PBCの商標です。このプロジェクトはAnthropicとは提携しておらず、また承認も受けていません。

Copyright (c) 2026 Riza Emre ARAS — MIT License