Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Serial Hid Kvm

FreeNot checked

Gives AI agents full keyboard, mouse, and screen access to a physical PC via a KVM server and OCR.

GitHubEmbed

About

Gives AI agents full keyboard, mouse, and screen access to a physical PC via a KVM server and OCR.

README

MCP (Model Context Protocol) server that gives AI agents full keyboard, mouse, and screen access to a physical PC. Thin client for serial-hid-kvm — all hardware control is delegated via TCP.

How It Works

Claude / AI Agent
  ↕ MCP (stdio)
mcp-serial-hid-kvm        ← this package (thin client + OCR)
  ↕ TCP (localhost:9329)
serial-hid-kvm             ← standalone KVM server (owns hardware)
  ↕ USB Serial + HDMI
Target PC

The KVM server (serial-hid-kvm) runs as a persistent process owning the serial port and capture device. This MCP server connects to it as a TCP client. Multiple MCP instances (multiple Claude sessions) can share a single KVM server without device conflicts.

Prerequisites

  1. Hardware: CH9329+CH340 USB HID cable + USB HDMI capture device (see serial-hid-kvm for details)
  2. serial-hid-kvm installed and running:
    pip install -e /path/to/serial-hid-kvm
    serial-hid-kvm --api              # with preview window
    serial-hid-kvm --api --headless   # or headless
    
  3. Tesseract OCR (for get_screen_text / execute_and_read):

Installation

pip install -e .

This automatically installs serial-hid-kvm as a dependency.

MCP Client Configuration

Claude Desktop / Claude Code

{
  "mcpServers": {
    "kvm": {
      "command": "mcp-serial-hid-kvm"
    }
  }
}

Custom KVM server address:

{
  "mcpServers": {
    "kvm": {
      "command": "mcp-serial-hid-kvm",
      "env": {
        "SHKVM_API_HOST": "127.0.0.1",
        "SHKVM_API_PORT": "9329"
      }
    }
  }
}

Configuration

Variable Default Description
SHKVM_API_HOST 127.0.0.1 KVM server address
SHKVM_API_PORT 9329 KVM server port
SHKVM_OCR_CMD auto-detect Path to tesseract executable
SHKVM_CAPTURE_LOG_DIR platform default Capture log directory (empty string to disable)

Hardware settings (SHKVM_SERIAL_PORT, SHKVM_SCREEN_WIDTH, etc.) are configured on the KVM server side, not here. If the target PC uses a non-US keyboard, set --target-layout (or SHKVM_TARGET_LAYOUT) on the KVM server so that type_text and send_key produce correct characters.

Available Tools

Keyboard

Tool Description
type_text Type text with inline tags: ls -la{enter}, {ctrl+c}, {alt+f4}. Whitelist-based: unknown {content} passes through literally. Raw mode (raw=true) disables tags; actual line breaks become Enter. char_delay_ms: delay between keystrokes in ms (default: 20). Only ASCII printable characters, tab, and line breaks are supported; unsupported characters (Unicode, CJK, etc.) cause an error — use base64 encoding as a workaround
send_key Single key press with modifiers
send_key_sequence Multiple key steps with per-step delays. default_delay_ms: delay between steps in ms (default: 100); each step can override with delay_ms

Mouse

Tool Description
mouse_move Move cursor (absolute or relative)
mouse_click Click at optional position
mouse_drag Drag from one position to another (drag-and-drop, text selection, etc.)
mouse_scroll Scroll wheel

Screen

Tool Description
capture_screen Capture screen as image (high token cost)
get_screen_text Capture + OCR to text (preferred for text content)
execute_and_read Type command, Enter, wait, capture + OCR

Device Management

Tool Description
get_device_info Serial port, capture device, config info
list_capture_devices List available video devices
set_capture_device Switch capture device
set_capture_resolution Change capture resolution

Architecture

This package is intentionally minimal (~4 files):

mcp_serial_hid_kvm/
  server.py    MCP tool handlers → KvmClient TCP calls
  config.py    KVM host/port, tesseract, log settings
  ocr.py       Tesseract OCR (runs locally on fetched frames)
  __init__.py

All keyboard/mouse/capture logic lives in serial-hid-kvm. This package only translates MCP tool calls to TCP API calls and runs OCR locally.

Why Separate?

  • No device conflicts — multiple Claude sessions share one KVM server
  • Independent restarts — restart the MCP server without losing the KVM connection
  • Standalone useserial-hid-kvm works without MCP (interactive preview, scripts, other AI frameworks)

License

MIT

from github.com/sunasaji/mcp-serial-hid-kvm

Install Serial Hid Kvm in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install mcp-serial-hid-kvm

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add mcp-serial-hid-kvm -- uvx mcp-serial-hid-kvm

FAQ

Is Serial Hid Kvm MCP free?

Yes, Serial Hid Kvm MCP is free — one-click install via Unyly at no cost.

Does Serial Hid Kvm need an API key?

No, Serial Hid Kvm runs without API keys or environment variables.

Is Serial Hid Kvm hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Serial Hid Kvm in Claude Desktop, Claude Code or Cursor?

Open Serial Hid Kvm on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Serial Hid Kvm with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs