kvm-pilot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KVM_PILOT_PROFILE | Yes | The name of the profile to use for the KVM device, as defined in the config file. | |
| KVM_PILOT_MCP_READ_ONLY | No | Set to 1 to enable read-only mode for the MCP server, restricting the agent to non-destructive operations. Recommended for initial setup. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| infoA | Identify the device and the system behind it (read-only). Returns |
| healthcheckA | Audit the device's readiness/recovery, security posture, and firmware (#80). Read-only. Returns per-check findings with a tiered severity; a |
| capabilitiesA | List the capabilities the target's driver supports (read-only, offline). Structural — makes no network call and runs no preflight; it answers "which
tools/actions can this device serve?" so you can pick the right interface up
front (a Redfish BMC has no video; a PiKVM has no BootProgress). Returned in
the capability enum's declaration order for stable output. |
| support_matrixA | What has actually been exercised on real hardware, per device+firmware+capability (read-only, offline — no device call). Aggregated from the test-run ledger shipped in the package (the same data
behind the wiki Hardware-Compatibility page), with each combo's derived
maturity level (#98) joined from the shipped firmware registry. This is
EVIDENCE, not a guarantee: a capability listed in |
| doctrineA | Re-serve the bundled operating doctrine (read-only; offline, no device I/O). The skill's playbooks ship inside this package; this tool re-serves them so
a session that never loaded the skill file — or has long since compacted it
away — can re-anchor on the written doctrine instead of a faded memory of
it. Call with no |
| sessionA | Report this server's current operating posture (read-only; offline, no device I/O — answers even when the device is down). Call this after a context compaction, when resuming a long flow, or before
planning act calls: it names the target, dry-run/read-only state, which
effect gates are open (by class name only — opening one is operator-only,
out of band), the approval posture, any live standing approvals (#192) with
their scope and time left, the recent act journal, and the last
|
| power_stateA | Report whether the managed host is powered on (read-only). Returns |
| logsA | Return the device/host event log as text (read-only).
|
| snapshotA | Capture the current KVM screen (read-only). Returns It also carries the live |
| classify_screenA | Classify the current screen's boot/run phase (read-only). Uses the server-side vision backend when configured; cheap on-device gates (power-off, no-signal, boot-progress, OCR rules) resolve with no credentials at all. Return shapes:
|
| wait_for_stateA | Wait (bounded) until the screen reaches a boot/run phase (read-only). Server-side twin of CLI |
| powerA | Change host power state. DESTRUCTIVE. Gated by the power effect gate + per-invocation approval (elicitation, or
|
| boot_optionsA | Show the host's current boot override (Redfish BootSourceOverride) — read-only. Reports |
| set_boot_deviceA | Set the next-boot (or persistent) boot device via BootSourceOverride. CONFIG MUTATION. Gated by the config effect gate + per-invocation approval; denials come
back through the same path with a typed |
| amt_enableA | Enable an Intel AMT redirection listener over WS-Man (Intel AMT/vPro only). CONFIG MUTATION.
|
| wakeA | Send a Wake-on-LAN magic packet to power the host on. POWER (soft). Gated by the power effect gate + per-invocation approval (typed same-path
denials, #234). |
| type_textA | Type a string on the managed host's console over the HID keyboard. DESTRUCTIVE. For printable text (commands, installer fields, passwords); nothing echoes
back and no Enter is appended —
|
| press_keyA | Press and release one key on the managed host's console. DESTRUCTIVE (HID). For a single non-text key: |
| send_shortcutA | Send a key chord — comma-separated kvmd key codes, e.g.
Gated by effect, not transport: a reboot/power chord (Ctrl+Alt+Del, Magic
SysRq) is classified |
| ctrl_alt_deleteA | Send Ctrl+Alt+Del to the managed host over the keyboard. DESTRUCTIVE (reboot). A reboot (or the OS's secure-attention screen) delivered through HID, so it
is classified |
| mouseA | Move the mouse (and optionally click) on the host. DESTRUCTIVE (HID input). A click must carry the
|
| calibrate_mouseA | Measure and store this host's mouse commanded→observed correction (#128). Fixes "clicks where the button should be and misses". Pointer moves only —
no clicks, no keystrokes — but it visibly moves the live cursor ~10-30s,
so it is gated like HID input ( |
| list_virtual_mediaA | Inventory the KVM's virtual-media (MSD) storage (read-only). Check this BEFORE asking the operator to download or upload an ISO — the
image may already be on the device (#127). Returns stored images, the
selected image, and attach state ( |
| mount_isoA | Mount an ISO as virtual media on the host. GATED act (media effect gate); reversible.
|
| ejectA | Detach the virtual media presented to the host (inverse of Needs |
| ssh_reachableA | Is the managed host's OS reachable over SSH? (read-only, in-band). Targets the host behind the KVM (its own
|
| ssh_execA | Run a command on the managed host's OS over SSH. DESTRUCTIVE / in-band. Gated by its own SSH effect gate (never the HID gate) + per-invocation
approval, with typed same-path denials (#234). |
| appliance_statusA | Read-only diagnostics from the KVM APPLIANCE's own OS over SSH. Targets the KVM appliance itself (its |
| appliance_rebootA | Reboot the KVM APPLIANCE (not the target) to clear a wedged encoder. DESTRUCTIVE. Recovers the RV1126 encoder wedge (the only fix — the stuck threads are unkillable kernel threads). Drops all KVM control for ~60s; the target's power is untouched. Gated by the appliance effect gate + per-invocation approval, with typed same-path denials (#234). There is no out-of-band power to the appliance, so use this deliberately, never in an automated loop. |
| access_pathsA | Which INDEPENDENT recovery paths are live for the device — the lockout view. Rolls up the REST API, appliance-SSH, target-SSH, out-of-band power, and
console-HID paths, each labeled by its failure domain so redundancy is not
oversold: several live paths that all ride the same appliance are ONE
independent domain. |
| eventsA | Collect typed device events from the kvmd stream (read-only, bounded). MCP twin of CLI |
| firmware_checkA | Report the device's firmware currency vs the bundled registry (read-only). The read half of |
| file_firmware_reportA | File the device's firmware-currency report as a GitHub issue when the
registry is behind (MCP twin of CLI The read/reconcile half always runs; registry current → nothing to file,
the result says so. Filing is gated as its own |
| ssh_discoverA | Scan a CIDR for hosts with an open SSH port. RISKY — opt-in. An active network scan: noisy, and only acceptable on networks the user owns or
is authorized to probe. Use it ONLY to help find a target whose address the user
doesn't know, after they confirm the range — never by default. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 34 tools
Most tools have clearly distinct roles, and the descriptions actively cross-reference boundaries such as power_state/power/wake, logs/events, type_text/press_key/send_shortcut, and ssh_reachable/ssh_exec/appliance_status. The main residual ambiguity is the large read-only introspection cluster (info, healthcheck, capabilities, support_matrix, session, doctrine, access_paths) and the overlapping Ctrl+Alt+Del paths, though the descriptions mitigate this well.
All names use snake_case, so the delimiter and casing are consistent. However the set mixes noun-only names (info, logs, snapshot, power_state, capabilities) with verb-oriented names (set_boot_device, mount_iso, ssh_exec) and inconsistent orderings such as firmware_check vs file_firmware_report and ssh_reachable vs ssh_discover.
34 tools is well above the typical 3-15 range for a well-scoped MCP server. Many are read-only diagnostics or meta tools (info, healthcheck, capabilities, support_matrix, doctrine, session, access_paths, power_state, logs, events, boot_options, list_virtual_media, ssh_reachable, appliance_status, firmware_check) that could be consolidated or exposed through a more compact interface.
Core KVM lifecycle coverage is strong: identify/health/capabilities, power state/change/wake, boot options/set, HID typing/keys/mouse/calibration, virtual media list/mount/eject, SSH reachable/exec, appliance status/reboot, logs/events, and firmware check/report. Minor gaps remain, such as no virtual-media upload/delete management, no detailed BMC sensor view, and no serial-console tool for non-video devices.