MCP Remote Access
This server provides SSH and serial/UART remote access to embedded devices, exposing 24 tools for AI agents, IDEs, and terminals to control lab equipment programmatically.
SSH Capabilities
Connect to remote hosts using password or private key authentication
Execute commands synchronously (stdout, stderr, exit codes) or asynchronously in the background
Poll background job status/output via job IDs; list all active background tasks
Upload and download files via SFTP
List and disconnect active SSH connections
Serial/UART Capabilities
List available serial ports with VID/PID, serial number, and description metadata
Connect by port name (e.g.,
/dev/ttyUSB0,COM3) or by matching VID/PID/serial/description to avoid hardcoded pathsESP32-aware connection with automatic BOOT/RESET sequencing and auto-baud handling
Send data with configurable line endings; read incoming data with configurable timeout and byte limits
Wait for specific patterns in the serial output stream (
serial_wait_for)Run expect/send sequences for login prompts, AT command flows, and bootloader handshakes (
serial_expect)Set DTR/RTS line states; reset devices using ESP32, STM32, or generic DTR/RTS pulse methods
Send break signals (e.g., to interrupt U-Boot) and flush serial buffers
List and disconnect active serial connections
Security & Integration
SSH credentials held in memory only — no persistent on-disk session store
Communicates via stdio, accepting connections from the local MCP client only
Designed for lab-automation and embedded-bringup workflows (bootloader interaction, image flashing, device bring-up)
Enables SSH connections to Raspberry Pi devices for remote command execution and file transfers via SFTP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Remote Accessconnect to my Raspberry Pi at 192.168.1.100 with username pi"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SSH and serial-port control for embedded devices, exposed as MCP tools. Log into a Raspberry Pi, talk to a UART, drive a USB-CDC console from your assistant.
Quick start · Tools · Workflows · Documentation
What is mcp-remote-access?
mcp-remote-access is an MCP server that exposes SSH (over paramiko)
and serial / UART (over pyserial) as MCP tools. Once it's running,
an agent can log into a host over SSH, run commands, transfer files,
open a serial console, send AT-style command sequences, and reset a
device over DTR/RTS.
It's deliberately thin: 26 tools, two transports, no orchestration language. Higher-level workflow logic lives in the agent's prompts, not in this server.
A few things it handles that are easy to get wrong by hand:
Connect to a serial port by VID/PID/serial number/description instead of guessing
/dev/ttyUSB0vs/dev/ttyUSB1(serial_connect_match).Long-running SSH commands (builds,
tcpdump, test runs) don't block the MCP channel —ssh_execute_backgroundreturns a task ID,ssh_check_backgroundpolls it.serial_expect/serial_wait_forwait for a real pattern in the stream instead of a fixedsleep(), which avoids the usual "sent before the prompt was ready" race on login prompts and AT flows.DTR/RTS control for hard-resetting MCUs over USB-serial, plus break-signal support.
SSH passwords are held in memory only and cleared on disconnect; no on-disk session store.
Related MCP server: MCP SSH Server with Streamable HTTP
Quick start
Install
git clone https://github.com/RFingAdam/mcp-remote-access.git
cd mcp-remote-access
uv pip install -e .Run it
The server speaks MCP over stdio:
uv run --directory /path/to/mcp-remote-access mcp-remote-accessAdd it to an MCP client
Codex CLI:
codex mcp add remote-access -- \
uv run --directory /path/to/mcp-remote-access mcp-remote-accessClaude Code:
claude mcp add remote-access -- \
uv run --directory /path/to/mcp-remote-access mcp-remote-accessOr add it to a client config file directly:
{
"mcpServers": {
"remote-access": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-remote-access", "mcp-remote-access"]
}
}
}Then, from the assistant:
"Connect to my Pi at vpn-ap.local as
pi(passwordraspberry), rununame -a, thendmesg | tail -20."
That's ssh_connect followed by two ssh_execute calls.
Tools
26 MCP tools across two transports. Full reference in docs/tools.md.
SSH (9)
Tool | Purpose |
| Connect to a host via SSH (password or key auth) |
| Run a command on a connected host (sync) |
| Run a long-running command async, returns |
| Check status / collect output of a background command |
| List all active background commands |
| Upload a file via SFTP |
| Download a file via SFTP |
| Close an SSH connection |
| Show active SSH connections |
Serial / UART (17)
Tool | Purpose |
| List available serial ports (with VID/PID, description, serial #) |
| Connect by port name |
| Connect by VID / PID / serial / description match |
| ESP32-aware connect (BOOT/RESET sequence, auto-baud) |
| Send text data (with optional response read + configurable line ending) |
| Send raw bytes as hex (binary protocols — Nordic DTM, HCI, etc.) |
| Read available data |
| Read raw bytes back as hex |
| Wait for a pattern in the incoming stream |
| Wait/send step sequences (login prompts, AT flows) |
| Send a break signal |
| Set DTR line state |
| Set RTS line state |
| Reset device via DTR/RTS sequence |
| Flush serial buffers |
| Close a serial connection |
| Show active serial connections |
Workflows
mcp-remote-access fits in the following eng-mcp-suite
workflow bundles:
lab-automation— pair withmcp-rs-spectrum-analyzer,mcp-rs-siggen,copper-mountain-vna-mcpto fully script a bench (DUT login over SSH or UART, lab gear over SCPI).embedded-bringup—serial_connect_match+serial_expect+ssh_uploadfor boot-loader interaction and image flashing.
Part of eng-mcp-suite.
Use in the lab-automation workflow bundle.
See the suite manifest for the full list of sibling MCPs and bundle definitions.
Documentation
Quick Start — install through first call.
Tool reference — every MCP tool, every argument.
Usage examples — practical end-to-end walkthroughs.
Architecture — how this MCP fits in eng-mcp-suite.
Part of eng-mcp-suite
This server is one piece of eng-mcp-suite, an umbrella of engineering MCP servers covering RF, EMC, PCB, signal integrity, EM simulation, and lab test. See the full catalog or jump to a sibling:
Domain | Sibling MCPs |
RF / Transmission lines | |
EMC regulatory | |
PCB / SI | mcp-pcb-emcopilot (private — public soon) |
EM simulation | mcp-openems, mcp-nec2-antenna (private — public soon) |
Diagrams | |
3D / rendering | |
Remote access | mcp-remote-access (this repo) |
Lab gear | copper-mountain-vna-mcp, mcp-rs-spectrum-analyzer, mcp-rs-siggen, mcp-rs-cmw500 |
Security notes
SSH passwords are kept in memory only and cleared on server restart.
Connections are session-scoped; the server does not persist a session store on disk.
Use SSH keys where possible.
The MCP server runs over stdio — it only accepts connections from the local MCP client, never from the network.
Troubleshooting
SSH connection issues — verify the host is reachable
(ping vpn-ap.local), that SSH is listening on the target
(ssh pi@vpn-ap.local from the same shell), and that credentials are
correct.
Serial port issues — check port permissions
(ls -la /dev/ttyUSB*), add your user to the dialout group
(sudo usermod -a -G dialout $USER and re-login), and confirm the
device is present (dmesg | tail).
VID/PID match selects wrong device — serial_connect_match returns
the first hit; pair the match on description or serial_number to
disambiguate.
Contributing
Contributions are welcome.
Pick a GitHub issue.
Fork + branch (
feature/your-thingorfix/your-bug).Run tests (
uv run pytest) if present.Open a PR — link the issue, request review.
License
AGPL-3.0-or-later. Relicensed from Apache-2.0 in v0.2.0 to align with the eng-mcp-suite toolkit-wide AGPL move.
Acknowledgments
paramiko — SSH transport.
pyserial — serial / UART transport.
The MCP working group — for the Model Context Protocol specification.
Part of eng-mcp-suite.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/RFingAdam/mcp-remote-access'
If you have feedback or need assistance with the MCP directory API, please join our Discord server