mcpField
C
Claude KVM

Claude KVM

本地服务
github.com开发工具1916 周前更新

关于 Claude KVM

Claude KVM 是用于控制 VNC 远程桌面的 MCP 工具,由 JavaScript 代理和 macOS 原生 Swift 守护进程组成。它提供屏幕捕获与输入控制,并通过 Apple Vision OCR 返回文本及元素坐标。

主要功能

  1. 01VNC 屏幕捕获与变化检测
  2. 02鼠标和键盘输入
  3. 03Apple Vision OCR 与坐标
  4. 04可配置显示缩放和操作时序

适用场景

  1. 01自动执行 VNC 桌面任务
  2. 02点击前定位屏幕文字
  3. 03验证会话中的桌面变化

MCP 相关

Claude KVM 提供 JavaScript MCP 代理,通过 stdio 与客户端通信并管理原生 VNC 守护进程。`vnc_command` 工具提供屏幕、鼠标、键盘、OCR 和配置操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aras-workspace-claude-kvm": {
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>"
}
}
}
}
启动命令npx -y claude-kvm
需要配置的环境变量
VNC_HOSTVNC server hostname or IP
VNC_PORTVNC server port
VNC_USERNAME密钥VNC/ARD username
VNC_PASSWORD密钥VNC/ARD password
CLAUDE_KVM_DAEMON_PATHPath to claude-kvm-daemon binary

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmclaude-kvm2.0.12

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
xinteger否X 坐标
yinteger否Y 坐标
dxinteger否相对 X 偏移量(微调)
dyinteger否相对 Y 偏移量(微调)
msinteger否等待时长(毫秒,默认值:500)
keystring否按键名称或组合键字符串(例如 "cmd+c")
toXinteger否拖动目标 X 坐标
toYinteger否拖动目标 Y 坐标
keysarray否组合键的按键名称数组(例如 ["cmd","shift","3"])
textstring否要输入或粘贴的文本
resetboolean否将所有参数重置为默认值
actionenum是要执行的操作screenshot | cursor_crop | diff_check | set_baseline | mouse_click | mouse_double_click | mouse_move | hover | nudge | mouse_drag | scroll | key_tap | key_combo | key_type | paste | detect_elements | configure | get_timing | wait | health | shutdown
amountinteger否滚动量(默认值:3)
buttonenum否鼠标按键left | right | middle
directionenum否滚动方向up | down | left | right
key_hold_msinteger否按键按住时长
type_key_msinteger否输入期间按键按住时长
combo_mod_msinteger否修饰键稳定延迟
drag_step_msinteger否插值点之间的间隔
click_hold_msinteger否点击按住时长
drag_press_msinteger否拖动按住时长
max_dimensioninteger否截图最大尺寸
type_shift_msinteger否Shift 键稳定等待
drag_min_stepsinteger否最小插值步数
drag_settle_msinteger否释放前的稳定等待
scroll_tick_msinteger否滚动刻度间隔
hover_settle_msinteger否悬停稳定等待
paste_settle_msinteger否剪贴板写入后的等待时间
scroll_press_msinteger否滚动按下与释放之间的间隔
drag_position_msinteger否拖动前的位置等待时间
type_inter_key_msinteger否字符间延迟
cursor_crop_radiusinteger否光标裁剪半径
double_click_gap_msinteger否双击间隔
drag_pixels_per_stepnumber否每像素点密度

详细介绍

Claude KVM

Claude KVM

远程访问,人工智能

claude-kvm.ai

Claude KVM 是一种 MCP 工具,可通过 VNC 控制远程桌面环境。它由一个轻量级 JS 代理层(MCP 服务)和一个运行在 macOS 系统上的平台原生 Swift VNC 守护进程组成。

Claude KVM 演示 Claude KVM Mac 演示

提示

**Phantom-WG 或许是一个很好的替代方案。**在您自己的网络中隔离 VNC 服务,同时享受可自托管 VPN 的性能,以及由此带来的额外隐私保护功能。

实时测试运行

说明

测试在 GitHub Actions 上透明进行——CI 环境中的每个步骤都清晰可见。每次测试结束时,无论集成成功还是失败,您都能找到 Agent 在会话中每一步操作的截图,以及一段记录整个会话的 .mp4 视频。通过查看这些录像和截图,您可以了解 Agent 如何逐步完成各个阶段、任务耗时多久,以及它根据系统提示词做出了哪些决定。您可以将这些示例作为参考,为自己的环境编写系统提示词或 MCP 服务指令。

警告

由于 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 通过渐进式验证方案最大限度地降低 token 成本:

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 使用 Apple Vision 框架在设备端执行 OCR。返回包含缩放空间中边界框坐标的文本内容,从而无需消耗视觉 token 即可精准定位点击目标。


安装

要求
  • macOS(Apple Silicon / aarch64)
  • Node.js(LTS)
守护进程
brew tap ARAS-Workspace/tap
brew install claude-kvm-daemon

说明

claude-kvm-daemon 通过 CI(GitHub Actions)编译并进行代码签名。构建输出打包为两种格式:用于 Homebrew 分发的 .tar.gz 归档文件,以及用于公证的 .dmg 磁盘映像。DMG 会在同一工作流中提交至 Apple 服务器进行公证,可通过 CI 日志跟踪此过程。经过公证的 DMG 可作为 CI Artifact 获取;归档后的 .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"
      }
    }
  }
}

说明

此工具已通过 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_ms10Shift 键稳定时间
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逐字符输入文本
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)

通过 ARD 身份验证类型 30 的凭据请求自动检测 macOS。检测到后,Meta 键会重新映射为 Super(兼容 Command 键)。


MCP 徽章

说明

在裸机 Mac 上运行?请参阅 Mac M1 准备技巧,了解 VNC 加固、SSH 隧道和会话稳定性技巧。


“Claude”是 Anthropic, PBC 的商标。本项目与 Anthropic 无关,也未获得其认可。

版权所有 (c) 2026 Riza Emre ARAS — MIT 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。