kvm-pilot — Claude Code MCP server: what it does, how to install
MCP server for managing bare-metal machines over IP-KVM, BMC, and SSH without installing background software on the target.
claude mcp add --env KVM_PILOT_PROFILE=<KVM_PILOT_PROFILE> --env KVM_PILOT_MCP_READ_ONLY=<KVM_PILOT_MCP_READ_ONLY> --env KVM_PILOT_MCP_DRY_RUN=<KVM_PILOT_MCP_DRY_RUN> --env KVM_PILOT_MCP_ALLOW_POWER=<KVM_PILOT_MCP_ALLOW_POWER> --env KVM_PILOT_HOST=<KVM_PILOT_HOST> --transport stdio kvm-pilot -- uvx kvm-pilotWhat kvm-pilot does
The server connects language models directly to physical hardware using IP-KVM adapters, BMC controllers like Redfish and IPMI, or Intel AMT. Target machines require zero host software. Control happens entirely via external display capture and virtual input devices, allowing agents to navigate POST screens, BIOS menus, bootloaders, and OS setups.
Visual analysis runs through Claude or any local vision model running on Ollama, LM Studio, or vLLM. Using an on-premises model keeps all captured frames strictly inside the local network. Safety measures prevent unintended modifications: setting KVM_PILOT_MCP_READ_ONLY=1 restricts the agent to observation until explicitly relaxed.
What it helps with
- interact with BIOS menus and bootloaders on headless servers
- automate OS setup routines without network access inside the guest
- monitor hardware boot progress using vision backends
- trigger remote power cycles through BMC or KVM interfaces
Example prompts for the agent
- Take a frame capture of the current display and check which boot stage the machine is in.
- Wait until the screen reaches the GRUB prompt and press Enter.
- Check remote hardware power status in read-only mode.
How to install kvm-pilot
Platform CLI
claude mcp add --env KVM_PILOT_PROFILE=<KVM_PILOT_PROFILE> --env KVM_PILOT_MCP_READ_ONLY=<KVM_PILOT_MCP_READ_ONLY> --env KVM_PILOT_MCP_DRY_RUN=<KVM_PILOT_MCP_DRY_RUN> --env KVM_PILOT_MCP_ALLOW_POWER=<KVM_PILOT_MCP_ALLOW_POWER> --env KVM_PILOT_HOST=<KVM_PILOT_HOST> --transport stdio kvm-pilot -- uvx kvm-pilotReplace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from kvm-pilot <command>
Platform CLI
codex mcp add kvm-pilot --env KVM_PILOT_PROFILE=<KVM_PILOT_PROFILE> --env KVM_PILOT_MCP_READ_ONLY=<KVM_PILOT_MCP_READ_ONLY> --env KVM_PILOT_MCP_DRY_RUN=<KVM_PILOT_MCP_DRY_RUN> --env KVM_PILOT_MCP_ALLOW_POWER=<KVM_PILOT_MCP_ALLOW_POWER> --env KVM_PILOT_HOST=<KVM_PILOT_HOST> -- uvx kvm-pilotReplace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from kvm-pilot <command>
Config file
{
"mcpServers": {
"kvm-pilot": {
"command": "uvx",
"args": [
"kvm-pilot"
],
"env": {
"KVM_PILOT_PROFILE": "<KVM_PILOT_PROFILE>",
"KVM_PILOT_MCP_READ_ONLY": "<KVM_PILOT_MCP_READ_ONLY>",
"KVM_PILOT_MCP_DRY_RUN": "<KVM_PILOT_MCP_DRY_RUN>",
"KVM_PILOT_MCP_ALLOW_POWER": "<KVM_PILOT_MCP_ALLOW_POWER>",
"KVM_PILOT_HOST": "<KVM_PILOT_HOST>"
}
}
}
}Replace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from kvm-pilot <command>
Config file
{
"servers": {
"kvm-pilot": {
"type": "stdio",
"command": "uvx",
"args": [
"kvm-pilot"
],
"env": {
"KVM_PILOT_PROFILE": "<KVM_PILOT_PROFILE>",
"KVM_PILOT_MCP_READ_ONLY": "<KVM_PILOT_MCP_READ_ONLY>",
"KVM_PILOT_MCP_DRY_RUN": "<KVM_PILOT_MCP_DRY_RUN>",
"KVM_PILOT_MCP_ALLOW_POWER": "<KVM_PILOT_MCP_ALLOW_POWER>",
"KVM_PILOT_HOST": "<KVM_PILOT_HOST>"
}
}
}
}Replace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from kvm-pilot <command>
Platform CLI
gemini mcp add -e KVM_PILOT_PROFILE=<KVM_PILOT_PROFILE> -e KVM_PILOT_MCP_READ_ONLY=<KVM_PILOT_MCP_READ_ONLY> -e KVM_PILOT_MCP_DRY_RUN=<KVM_PILOT_MCP_DRY_RUN> -e KVM_PILOT_MCP_ALLOW_POWER=<KVM_PILOT_MCP_ALLOW_POWER> -e KVM_PILOT_HOST=<KVM_PILOT_HOST> kvm-pilot uvx kvm-pilotReplace <…> with your own values. 3 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from kvm-pilot <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about kvm-pilot
How to install kvm-pilot in Claude Code?
Run `claude mcp add --env KVM_PILOT_PROFILE=<KVM_PILOT_PROFILE> --env KVM_PILOT_MCP_READ_ONLY=<KVM_PILOT_MCP_READ_ONLY> --env KVM_PILOT_MCP_DRY_RUN=<KVM_PILOT_MCP_DRY_RUN> --env KVM_PILOT_MCP_ALLOW_POWER=<KVM_PILOT_MCP_ALLOW_POWER> --env KVM_PILOT_HOST=<KVM_PILOT_HOST> --transport stdio kvm-pilot -- uvx kvm-pilot`.
What does kvm-pilot do?
It lets agents interact with bare-metal computers via video feeds and emulated keyboard strokes using IP-KVM hardware and BMC interfaces.
Does the target machine require an installed agent?
No background software is needed on the controlled host because operations run through hardware capture devices and out-of-band management protocols.