mcserial/README.md
Ryan Malloy 1a26109fc1 Initial MCP serial server implementation
FastMCP server for serial port access via Model Context Protocol:
- 10 tools: list, open, close, read, write, configure, flush, status
- 4 dynamic resources: ports list, data, status, raw hex
- USB device filtering (hides phantom ttyS ports by default)
- Full pyserial support with configurable baudrate/parity/etc
2026-01-27 22:05:59 -07:00

1.9 KiB

MCP Serial Server

FastMCP server for serial port access via Model Context Protocol.

Features

  • Tools for serial port control (open, close, write, configure)
  • Dynamic Resources for reading data (serial://{port}/data)
  • Full pyserial support (baudrate, parity, stop bits, etc.)
  • Multiple concurrent port connections
  • Raw byte and text modes

Installation

# With uvx (recommended)
uvx mcserial

# Or install directly
uv pip install mcserial

Usage with Claude Code

# Add to Claude Code
claude mcp add mcserial "uvx mcserial"

Tools

Tool Description
list_serial_ports Discover available serial ports
open_serial_port Open a connection with config
close_serial_port Close a connection
write_serial Send text data
write_serial_bytes Send raw bytes
read_serial Read available data
read_serial_line Read until newline
configure_serial Change port settings
flush_serial Clear buffers
get_connection_status List open connections

Resources

URI Description
serial://ports List available ports
serial://{port}/data Read data from open port
serial://{port}/status Port configuration info
serial://{port}/raw Read as hex dump

Environment Variables

Variable Default Description
MCSERIAL_DEFAULT_BAUDRATE 9600 Default baud rate
MCSERIAL_DEFAULT_TIMEOUT 1.0 Read timeout (seconds)
MCSERIAL_MAX_CONNECTIONS 10 Max concurrent ports

Example Workflow

1. list_serial_ports → find /dev/ttyUSB0
2. open_serial_port(port="/dev/ttyUSB0", baudrate=115200)
3. write_serial(port="/dev/ttyUSB0", data="AT\r\n")
4. Read resource: serial:///dev/ttyUSB0/data
5. close_serial_port(port="/dev/ttyUSB0")

License

MIT