Smart hands for your AI agents - write-capable KVM+BMC+SSH MCP server: gated, verified, audited.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Smart hands for your AI agents. A write-capable, multi-plane (KVM + BMC + SSH) MCP server for controlling physical machines β gated, verified, audited.
kvm-pilot lets an agent drive a headless box through POST, firmware, the
bootloader, and an OS install with no agent on the target: it works at the
pixel level through an IP-KVM (PiKVM, the GL.iNet GLKVM fork GL-RM1 /
GL-RM1PE, BliKVM), at the structured-state level through a BMC (Redfish on
iDRAC/iLO/OpenBMC, IPMI on BMCs that predate Redfish), at the firmware level
through Intel AMT/vPro (a BIOS/POST/GRUB screenshot + power + SOL on a
business laptop an HDMI-capture KVM can't see boot on), and over SSH once an OS
is up. A pluggable vision subsystem reads a KVM screenshot and tells you what
boot phase the machine is in β bios_menu, grub_menu, installer_progress,
login_prompt, crash_screen, and so on β and a safety layer gates every
destructive operation behind operator opt-ins and per-call approvals.
Vision runs on Claude or any local OpenAI-compatible VLM (LM Studio, Ollama, vLLM, llama.cpp). Point it at a model on your own GPU and the screenshots never leave your network and cost nothing per frame.
kvm-pilot runs a see β decide β act loop, and the screen is its only sensor:
it pulls a screenshot from the KVM, a vision model classifies the boot phase, and
kvm-pilot acts back through the KVM's keyboard and power. Because it works at the
pixel level, there is no agent on the target β the same loop drives POST,
firmware, the bootloader, and an OS install.
A real, unedited run against a GLKVM on the home fleet β an honest preflight, a headless snapshot (watch it wake the on-demand encoder), a gated dry-run power-cycle, and the boot console the agent actually saw:

One install gives you the whole product β the kvm-pilot CLI, the
kvm-pilot-mcp MCP server, and the bundled Claude skill β nothing to
clone. The current release line is a pre-release: install it with --pre,
which is explicit and keeps selecting the beta line once a stable release ships
(0.1.0a1 is yanked and much older than this README β don't pin it).
KVM_PILOT_MCP_READ_ONLY=1 is the recommended first rung of the trust ladder
β the agent can see everything and touch nothing until your hardware is
verified. The Getting started guide
covers credentials, Claude Desktop JSON config, sample prompts, and climbing
the ladder. The server is published to the official
MCP registry
as io.github.DustinTrap/kvm-pilot, so registry-aware hosts can discover
and install it by name. Agents: the repo root carries an
llms.txt doc map.
For the latest unreleased tree:
The CLI prompts for confirmation before any destructive action (power, virtual
media β including uploads β keyboard/mouse injection, GPIO). Use --yes to
skip prompts in automation, or --dry-run to log intended actions without
sending them β dry-run short-circuits before the prompt, so it never blocks
waiting for input. --timeout (HTTP per-request timeout) is a global flag and
goes before the subcommand; watch keeps its own --timeout for the vision
wait deadline.
Profiles like homelab live in ~/.config/kvm-pilot/config.toml. See
docs/cli.md for the full command table (every subcommand, the
capability it needs, and its gating), and
docs/configuration.md for the config-file format,
every KVM_PILOT_* environment variable, and the precedence between flags,
env, and profiles.
GLKVM setup note: on GL.iNet firmware the PiKVM REST API is disabled by default (every
/api/*call 404s, surfaced as a clearApiDisabledError), and a firmware upgrade can re-disable it. Enable it in/etc/kvmd/nginx-kvmd.confand pin the driver with--driver glkvm/driver = "glkvm"β full steps in the troubleshooting guide.
The same capability protocols span three actuation planes, so one agent workflow can mix pixels, structured BMC state, and shell access β with every destructive effect gated per class:
| Plane | Read | Act (operator-gated) |
|---|---|---|
| KVM β pixels & HID (PiKVM Β· GLKVM Β· BliKVM) | snapshot Β· classify_screen Β· wait_for_state Β· power_state Β· logs Β· list_virtual_media | power Β· type_text / press_key / send_shortcut / mouse Β· calibrate_mouse Β· mount_iso / eject |
| BMC β structured state (Redfish Β· IPMI) | info Β· boot_options Β· logs (SEL) Β· sensors (CLI) | power Β· set_boot_device Β· SOL console (CLI console) |
| Firmware β Intel AMT/vPro (spans both planes) | info Β· snapshot (firmware BIOS/POST/GRUB) Β· boot_options Β· power_state | power Β· set_boot_device Β· type/mouse Β· SOL (console) Β· amt_enable (open SOL/KVM listeners) |
| SSH β in-band & appliance | ssh_reachable Β· appliance_status Β· access_paths | ssh_exec Β· host_exec (ssh/winrm auto-picked) Β· wake (WoL) Β· appliance_reboot |
| Meta β evidence & intake | capabilities Β· support_matrix Β· healthcheck | file_firmware_report |
A machine with no KVM and no BMC at all is itself a first-class target:
driver = "ssh" plus ssh_host (the machine's own address, #248) stands
kvm-pilot on the recovery ladder's in-band rung β every device capability
honestly absent, and the healthcheck saying plainly that there is no
out-of-band recovery path there.
The canonical per-tool reference β annotations, effect gates, approval lifecycle β is the MCP server README; the CLI covers the full surface in docs/cli.md.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/kvm-pilot)<a href="https://allmcps.com/mcp/kvm-pilot"><img src="https://allmcps.com/api/badge/kvm-pilot?style=directory" alt="Kvm Pilot on AllMCPs" /></a>