Skip to content

RFingAdam/mcp-remote-access

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCP Remote Access

SSH & Serial port access for MCP-compatible clients

InstallationFeaturesUsage


An MCP server providing SSH and UART/serial port access for MCP-compatible clients (for example, Codex CLI or Claude Code). Enables direct control of remote devices like Raspberry Pi, embedded systems, and IoT devices.

Features

SSH Tools

  • ssh_connect - Connect to remote hosts via SSH (password or key auth)
  • ssh_execute - Run commands on connected hosts
  • ssh_upload - Upload files via SFTP
  • ssh_download - Download files via SFTP
  • ssh_disconnect - Close connections
  • ssh_list_connections - Show active connections

UART/Serial Tools

  • serial_list_ports - List available serial ports
  • serial_connect - Connect to a serial port
  • serial_connect_match - Connect by matching VID/PID/serial/description
  • serial_send - Send data (with optional response reading and configurable line ending)
  • serial_read - Read data from port
  • serial_wait_for - Wait for a specific pattern in output
  • serial_expect - Wait/send sequences for prompts and AT flows
  • serial_send_break - Send a break signal
  • serial_set_dtr - Set DTR line state
  • serial_set_rts - Set RTS line state
  • serial_reset_device - Reset devices via DTR/RTS sequences
  • serial_flush - Flush serial buffers
  • serial_disconnect - Close connections
  • serial_list_connections - Show active connections

Installation

1. Clone and install

git clone https://github.com/RFingAdam/mcp-remote-access.git
cd mcp-remote-access
uv pip install -e .

2. Add to your MCP client

Codex CLI example:

codex mcp add remote-access -- uv run --directory /path/to/mcp-remote-access mcp-remote-access

Claude Code example:

claude mcp add remote-access -- uv run --directory /path/to/mcp-remote-access mcp-remote-access

If your client uses a config file, set the MCP server command to:

{
  "command": "uv",
  "args": ["run", "--directory", "/path/to/mcp-remote-access", "mcp-remote-access"]
}

3. Start your client

For example:

codex
claude

Usage Examples

SSH to a Raspberry Pi

Connect to my Pi at vpn-ap.local with username pi and password raspberry

The client will use:

  1. ssh_connect to establish connection
  2. ssh_execute to run commands
  3. ssh_upload/download for file transfers

Serial Connection to Embedded Device

List available serial ports and connect to /dev/ttyUSB0 at 115200 baud

The client will use:

  1. serial_list_ports to show available ports
  2. serial_connect to establish connection
  3. serial_send / serial_read for communication
Connect to the USB serial device with VID 0x10c4 and PID 0xea60 at 115200 baud

The client will use:

  1. serial_connect_match to select the port
  2. serial_send / serial_read for communication

Serial Prompt Automation

Connect to the UART and log in as root (password summit), then wait for a shell prompt

The client will use:

  1. serial_connect or serial_connect_match to open the port
  2. serial_expect to wait for prompts and send responses

Security Notes

  • SSH passwords are passed in memory only, never stored
  • Connections are session-based and cleared on server restart
  • Use SSH keys when possible for better security
  • The server only accepts connections from the local MCP client (stdio transport)

Troubleshooting

SSH Connection Issues

  • Verify the host is reachable: ping vpn-ap.local
  • Check SSH is running on target: ssh pi@vpn-ap.local
  • Ensure credentials are correct

Serial Port Issues

  • Check port permissions: ls -la /dev/ttyUSB*
  • Add user to dialout group: sudo usermod -a -G dialout $USER
  • Verify device is connected: dmesg | tail

License

MIT

About

MCP server for SSH and Serial port remote access

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages