Overview
mcp-remote-access gives an MCP-compatible AI client hands-on access to remote machines
and embedded targets over SSH and serial. It’s the “give the agent root on the
bench” MCP — once it’s running, your assistant can log into a Pi, run commands, transfer
files, open a serial console, drive AT-style command flows, and hard-reset a device over
DTR/RTS.
Why I built it
A lot of bench and homelab work happens over SSH sessions and serial consoles — flashing firmware, reading boot logs, poking at a device under test. Wrapping those transports as MCP tools means the same assistant that reasons about a problem can also act on the hardware, without me copy-pasting between a terminal and a chat window.
How it works
It’s deliberately thin: 24 tools, two transports, no orchestration language — the higher-level workflow logic lives in the agent’s prompts. The details that make it pleasant on an embedded bench:
- Match serial ports by identity — connect by VID / PID / serial number /
description instead of guessing
/dev/ttyUSB0vsttyUSB1. - Background SSH — long jobs (
make,pytest,tcpdump) run async viassh_execute_background; poll withssh_check_background. - Prompt-aware UART —
serial_expect/serial_wait_forhandle login prompts, AT-style flows, and bootloader handshakes without race conditions. - DTR / RTS control — hard-reset MCUs over USB-serial, send break signals, hold a boot pin low — the usual embedded tricks.
Credentials are memory-only — there’s no on-disk session store.
You: "Flash the firmware over the Pi's UART, then watch the boot log."
Agent: serial_connect(vid=0x10c4) → serial_send(...) → serial_wait_for("booting…")
→ ssh_execute_background("journalctl -f")
Tech
Python over paramiko (SSH) and pyserial (UART), exposed through the MCP server SDK. AGPL-3.0, and a member of my eng-mcp-suite.
Get it
Setup and the full tool list are on GitHub.