PiKVM MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PIKVM_URL | No | The URL of the PiKVM web interface, e.g., https://172.16.10.29 | |
| PIKVM_USER | No | The username for the PiKVM web login (default: admin) | admin |
| PIKVM_SERVERS | No | Comma-separated list of PiKVM names for multiple PiKVM mode. For each name, you must also provide PIKVM_URL_<NAME>, PIKVM_PASSWORD_<NAME>, PIKVM_SSH_PASSWORD_<NAME>, and optionally PIKVM_TOTP_SECRET_<NAME>. <NAME> is the name in capitals with non-alphanumeric characters replaced by underscore. | |
| PIKVM_SSH_KEY | No | Path to a private key for SSH authentication | |
| PIKVM_PASSWORD | No | The password for the PiKVM web login | |
| PIKVM_SSH_HOST | No | The SSH host for the PiKVM (default: the host in PIKVM_URL) | |
| PIKVM_SSH_PORT | No | The SSH port (default: 22) | 22 |
| PIKVM_SSH_USER | No | The SSH username (default: root) | root |
| PIKVM_VERIFY_TLS | No | Set to true to verify the TLS certificate (default: false) | false |
| PIKVM_TOTP_SECRET | No | TOTP secret for 2FA on the PiKVM web login (if 2FA is enabled). To get the secret, SSH in and run cat /etc/kvmd/totp.secret | |
| PIKVM_DOWNLOAD_DIR | No | Directory to store downloaded files | |
| PIKVM_SSH_PASSWORD | No | The SSH password for the PiKVM |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pikvm_serversA | List the PiKVMs this tool can reach. Shows names, addresses and whether SSH is set up. Never shows passwords. |
| pikvm_endpointsA | List the PiKVM web API paths this tool knows, with their options. query: a word to look for. group: system, hid, atx, msd, gpio, streamer, switch, export. Use pikvm_call to run one. |
| pikvm_infoC | Show PiKVM details: version, hardware, health (throttling, temperature), name. fields: any of auth, extras, fan, hw, meta, system (comma separated). |
| pikvm_statusB | One look at the target machine: power (ATX), screen (streamer), keyboard and mouse (HID), and virtual drive (MSD). |
| pikvm_callA | Call any PiKVM web API path (see pikvm_endpoints). method: GET or POST (DELETE too). path: starts with /api/. params: query options. Reads run right away. Changes need confirm=true after the user says yes. Power off, reset, deleting images and similar also need confirm_phrase equal to the path. Login and websocket paths are blocked. |
| pikvm_powerA | Power control of the target machine through ATX. action: status, on, off (soft, like a short press), off_hard (cut power, long press), reset_hard, click_power, click_power_long, click_reset. Everything except status and on can shut the machine down or restart it. Those need confirm=true and confirm_phrase equal to the path shown in the reply. |
| pikvm_snapshotA | Take a picture of what the target machine is showing on its screen. ocr: also read the text on the screen. max_width: shrink the picture (pixels). save: also keep the full size picture as a file on this computer. Needs one PiKVM (not "all"). |
| pikvm_typeB | Type on the target machine like a USB keyboard. text: text to type. shortcut: keys together, like ControlLeft,AltLeft,Delete. Give one of them. This changes what the machine does, so it needs confirm=true. |
| pikvm_msdA | The virtual USB drive (mass storage) that shows an ISO or disk image to the target. action: status (also lists images), select (pick an image), connect, disconnect, download (fetch an image from url into the PiKVM), remove (delete an image). select: image name, cdrom=true for ISO, read_write=true for a writable disk. download: url, plus image for the file name. remove needs confirm_phrase equal to the path. |
| pikvm_logC | Show the PiKVM (kvmd) log. Newest lines at the end. lines: how many lines from the end to keep. |
| pikvm_sshA | Run one command on the PiKVM over SSH (as root). Safe read-only commands run right away (cat of /etc/kvmd files, systemctl status, journalctl, df, uptime, ip a, vcgencmd measure_temp, kvmd -m, pacman -Q, ls, and pipes into head, tail, grep, wc). Anything else needs confirm=true after the user says yes. Risky ones (rm, reboot, pacman, pikvm-update, passwd, stopping services and similar) also need confirm_phrase equal to the first word of the command. Files with passwords or keys are blocked. The PiKVM disk is read-only. To change a config file use pikvm_config_write instead. |
| pikvm_system_infoB | A read-only health check over SSH: OS, kvmd version, uptime, disk, memory, temperature, throttling, USB gadget, network addresses, and the state of the main PiKVM services. |
| pikvm_config_readA | Read a PiKVM config file over SSH. Default is /etc/kvmd/override.yaml, the file where your own settings live. Allowed: text files in /etc/kvmd/, /boot/config.txt, /boot/cmdline.txt, /etc/hostname. Files with passwords, keys or 2FA secrets are blocked. |
| pikvm_config_writeA | Replace a PiKVM config file over SSH. Needs one PiKVM. path: same allowed files as pikvm_config_read. content: the WHOLE new file (read it first with pikvm_config_read, change it, send it all back). The first call shows a diff and does nothing. After the user says yes, call again with confirm=true. The tool makes the disk writable, saves a backup next to the file (.bak-date), writes the file, runs "kvmd -m" to check /etc/kvmd/*.yaml files (and puts the old file back if the check fails), then makes the disk read-only again. restart: optional service to restart after a good write, usually kvmd. A restart of kvmd, kvmd-nginx or kvmd-otg also needs confirm_phrase equal to the service name. |
| pikvm_serviceA | Check or control a service on the PiKVM over SSH. action: status, start, restart, reload, enable, disable, stop. unit: for example kvmd, kvmd-nginx, kvmd-vnc, kvmd-ipmi, kvmd-janus, kvmd-webterm. Status runs right away. Stop and disable, and any restart of kvmd, kvmd-nginx, kvmd-otg, ssh or networking, need confirm_phrase equal to the unit name. |
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 15 tools
Most tools target distinct resources (power, HID, MSD, config, services, logs). The main soft spots are pikvm_info vs pikvm_system_info vs pikvm_status, and pikvm_ssh vs pikvm_system_info, but descriptions clarify the API-vs-SSH vs target-state split, and pikvm_call is explicitly framed as an escape hatch rather than a competing tool.
Every tool shares the pikvm_ prefix with consistent snake_case, which makes the set very legible. The only deviation is mixing noun-oriented names (pikvm_info, pikvm_status, pikvm_servers) with verb-oriented ones (pikvm_call, pikvm_type, pikvm_power), but the pattern remains predictable.
15 tools is a reasonable, well-scoped surface for a device-control server spanning power, HID, storage, config, and services. A few tools (pikvm_info/pikvm_status, pikvm_system_info) feel slightly redundant, but each still covers a distinct slice.
Core lifecycle coverage is strong: read/write config, service control, power actions, HID input, MSD management, snapshots, logs, and a generic API passthrough that fills remaining gaps. Minor omissions like local image upload to MSD are workable via pikvm_call.