# Claude KVM

Claude KVM lets an agent inspect and control a remote desktop over VNC. Use it for tasks that require interacting with a graphical interface.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 19
- Author: ARAS-Workspace
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/ARAS-Workspace/claude-kvm
- Updated: 2026-07-06
- HTML: https://affpapa.org/en/nevibecode/mcp/claude-kvm

## What it does

Claude KVM connects an MCP client to a remote machine over VNC. A JavaScript proxy launches a native daemon written in Swift and C; the daemon captures the screen and sends mouse and keyboard input. Apple Vision handles OCR, and the daemon maps clicks from the scaled image to the VNC server’s native resolution.

An agent can locate interface elements, read on-screen text, and click buttons. Setup requires macOS on Apple Silicon, Node.js LTS, a reachable VNC server, and values for `VNC_HOST`, `VNC_PORT`, `VNC_USERNAME`, `VNC_PASSWORD`, and `CLAUDE_KVM_DAEMON_PATH`. Without a working VNC connection, the agent has no desktop to control.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `VNC_HOST`, `VNC_PORT`, `VNC_USERNAME`, `VNC_PASSWORD`, `CLAUDE_KVM_DAEMON_PATH` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add claude-kvm -e VNC_HOST=<VNC_HOST> -e VNC_PORT=<VNC_PORT> -e VNC_USERNAME=<VNC_USERNAME> -e VNC_PASSWORD=<VNC_PASSWORD> -e CLAUDE_KVM_DAEMON_PATH=<CLAUDE_KVM_DAEMON_PATH> -- npx -y claude-kvm
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add claude-kvm --env VNC_HOST=<VNC_HOST> --env VNC_PORT=<VNC_PORT> --env VNC_USERNAME=<VNC_USERNAME> --env VNC_PASSWORD=<VNC_PASSWORD> --env CLAUDE_KVM_DAEMON_PATH=<CLAUDE_KVM_DAEMON_PATH> -- npx -y claude-kvm
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "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>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "claude-kvm": {
            "type": "stdio",
            "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>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e VNC_HOST=<VNC_HOST> -e VNC_PORT=<VNC_PORT> -e VNC_USERNAME=<VNC_USERNAME> -e VNC_PASSWORD=<VNC_PASSWORD> -e CLAUDE_KVM_DAEMON_PATH=<CLAUDE_KVM_DAEMON_PATH> claude-kvm npx -y claude-kvm
```
Replace <…> with your own values

## When to use it
- click a control in a remote desktop app
- read screen text with OCR
- enter text into a remote application
- drag an item across the desktop

## Example prompts
- Find the save button on the remote screen and click it.
- Read the text in the window, then enter it in the search field.
- Move the file into a folder on the remote desktop by dragging it.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
