NanoKVM MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NANOKVM_HOST | Yes | NanoKVM IP address or hostname | |
| NANOKVM_PASS | No | Web UI password | admin |
| NANOKVM_USER | No | Web UI username | admin |
| NANOKVM_HTTPS | No | Use HTTPS instead of HTTP | false |
| NANOKVM_SCREEN_WIDTH | No | Target screen width in pixels | 1920 |
| NANOKVM_SCREEN_HEIGHT | No | Target screen height in pixels | 1080 |
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 |
|---|---|
| nanokvm_powerA | Control the target machine's power. Args: action: Power action to perform - "power": Short press power button (800ms) - normal on/off - "power_long": Long press power button (5000ms) - force off - "reset": Press reset button (DEPRECATED for Pi 5 - use power_cycle) Note: Raspberry Pi 5 has NO hardware reset button. The "reset" action will not work on Pi 5. Use nanokvm_power_cycle() instead. |
| nanokvm_power_cycleA | Power cycle the target machine (force off, wait, power on). This is the recommended way to "reset" a Raspberry Pi 5 since it has no hardware reset button. The sequence is:
Args: off_duration_ms: Time to wait after power off before powering on (ms). Default 3000ms (3 seconds) ensures clean power cycle. Use longer values (5000+) if you have slow storage. Returns: Status message indicating power cycle completion |
| nanokvm_led_statusA | Get the power and HDD LED status of the target machine. Returns: Dictionary with 'pwr' and 'hdd' boolean values indicating LED states. - pwr: True if power LED is on (machine is powered) - hdd: True if HDD LED is on (disk activity) |
| nanokvm_hdmi_statusA | Get HDMI connection status and resolution. Returns: Dictionary with HDMI state including: - connected: Whether HDMI signal is detected - width: Video width in pixels - height: Video height in pixels |
| nanokvm_hdmi_resetA | Reset the HDMI connection. Useful if video is not displaying correctly. |
| nanokvm_send_textA | Type text on the target machine via keyboard emulation. Uses the NanoKVM paste API which is faster than individual key presses. Maximum 1024 characters per call. Args: text: The text to type (max 1024 characters) language: Keyboard layout - "" for US QWERTY, "de" for German |
| nanokvm_send_keyA | Send a single key press to the target machine. Args: key: Key to press. Can be: - Named keys: enter, escape, tab, backspace, delete, space - Function keys: f1, f2, ..., f12 - Arrow keys: up, down, left, right - Navigation: home, end, pageup, pagedown, insert - Single characters: a, b, 1, 2, etc. ctrl: Hold Ctrl modifier shift: Hold Shift modifier alt: Hold Alt modifier meta: Hold Meta/Windows/Command modifier |
| nanokvm_tapA | Tap at a specific screen position (touchscreen/mouse emulation). Coordinates are in screen pixels based on NANOKVM_SCREEN_WIDTH and NANOKVM_SCREEN_HEIGHT environment variables. Args: x: X coordinate (0 = left edge, screen_width = right edge) y: Y coordinate (0 = top edge, screen_height = bottom edge) |
| nanokvm_clickA | Click a mouse button, optionally at a specific position. Args: button: Mouse button - "left", "right", or "middle" x: Optional X coordinate to move to before clicking y: Optional Y coordinate to move to before clicking |
| nanokvm_moveA | Move mouse cursor to absolute screen position. Args: x: X coordinate (0 = left edge) y: Y coordinate (0 = top edge) |
| nanokvm_move_relativeA | Move mouse cursor by a relative delta, rather than to an absolute position. Use this when nanokvm_move() has no visible effect. Targets running embedded firmware (NVRs, BIOS/UEFI setup, some appliances) implement a plain relative USB mouse and silently ignore the tablet-style absolute coordinates that nanokvm_move() sends. Deltas larger than one signed byte are split across multiple HID reports. Args: dx: Horizontal delta in pixels, negative is left dy: Vertical delta in pixels, negative is up |
| nanokvm_scrollA | Scroll the mouse wheel. Args: amount: Scroll amount. Positive = scroll down, negative = scroll up. |
| nanokvm_screenshotA | Capture a screenshot from the target machine's display. Returns the screenshot as a JPEG image that can be displayed or analyzed. By default, 4K images are resized to 1080p to keep the response size manageable. Args: max_width: Maximum width in pixels (default 1920, use 0 for no limit) max_height: Maximum height in pixels (default 1080, use 0 for no limit) quality: JPEG quality 1-100 (default 80) Returns: JPEG image of the current display |
| nanokvm_list_imagesA | List available ISO images on the NanoKVM device. Returns: List of available images with file paths and metadata |
| nanokvm_mount_isoA | Mount an ISO image for the target machine. The target machine will see this as an attached CD-ROM or USB disk. Args: file: Path to ISO file on the NanoKVM device as_cdrom: Mount as CD-ROM (True) or USB disk (False) |
| nanokvm_unmount_isoA | Unmount the currently mounted ISO image. |
| nanokvm_mounted_imageA | Get information about the currently mounted ISO image. Returns: Dictionary with mounted image info, or None if nothing mounted |
| nanokvm_reset_hidA | Reset the HID (keyboard/mouse) devices. Use this if keyboard or mouse input stops working. |
| nanokvm_infoA | Get NanoKVM device information. Returns: Dictionary with device info including IP, firmware version, etc. |
| nanokvm_hardwareB | Get NanoKVM hardware information. Returns: Dictionary with hardware details |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/raymatos/nanokvm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server