mcp-serial-hid-kvm

mcp-serial-hid-kvm

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

Category
Visit Server

README

mcp-serial-hid-kvm

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):
    • Linux: sudo apt install tesseract-ocr
    • Windows: https://github.com/tesseract-ocr/tesseract

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 use — serial-hid-kvm works without MCP (interactive preview, scripts, other AI frameworks)

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured