A professional Model Context Protocol (MCP) server for serial port communication. Provides AI assistants with comprehensive serial communication capabilities for embedded systems, IoT devices, and hardware debugging with real hardware integration.
- π Production Ready: Real hardware integration with 5 comprehensive serial communication tools
 - π Cross-Platform Support: Windows, Linux, macOS with automatic port detection
 - π‘ Complete Serial Control: List ports, connect, send/receive data with full configuration
 - π Multiple Data Formats: UTF-8, Hex, Binary encoding support with timeout handling
 - π οΈ Hardware Integration: Tested with STM32, Arduino, ESP32 and other embedded systems
 - π€ AI Integration: Perfect compatibility with Claude and other AI assistants
 - π§ͺ Comprehensive Testing: All 5 tools validated with real hardware
 - β‘ High Performance: Built on Tokio async runtime with concurrent connection support
 
βββββββββββββββββββ    ββββββββββββββββββββ    βββββββββββββββββββ
β   MCP Client    βββββΊβ  Serial MCP      βββββΊβ  Serial Device  β
β   (Claude/AI)   β    β  Server          β    β  Hardware       β
βββββββββββββββββββ    ββββββββββββββββββββ    βββββββββββββββββββ
                              β
                              βΌ
                       ββββββββββββββββββββ
                       β  Target Device   β
                       β  (STM32/Arduino) β
                       ββββββββββββββββββββ
Hardware Requirements:
- Serial Device: STM32, Arduino, ESP32, or any UART-compatible device
 - Connection: USB-to-Serial converter or built-in USB-UART
 - USB Cables: For connecting device to PC
 
Software Requirements:
- Rust 1.70+
 - Serial device drivers (automatically detected on most systems)
 
# Clone and build from source
git clone https://github.com/adancurusul/serial-mcp-server.git
cd serial-mcp-server
cargo build --releaseConfigure MCP Clients
Add to Claude Desktop configuration file:
Windows Example:
{
  "mcpServers": {
    "serial": {
      "command": "C:\\path\\to\\serial-mcp-server\\target\\release\\serial-mcp-server.exe",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}macOS/Linux Example:
{
  "mcpServers": {
    "serial": {
      "command": "/path/to/serial-mcp-server/target/release/serial-mcp-server",
      "args": [],
      "env": {
        "RUST_LOG": "info"
      }
    }
  }
}Other examples for other tools like cursor, claude code etc. please refer to the corresponding tool documentation
We provide a comprehensive STM32 Serial Communication Demo that showcases all capabilities:
# Navigate to the example
cd examples/STM32_demo
# Build and run the firmware  
cargo run --release
# Use with MCP server for complete serial communication experienceWhat the demo shows:
- β Interactive Serial Commands: Send commands and get real-time responses
 - β All 5 MCP Tools: Complete validation with real STM32 hardware
 - β Hardware Control: LED toggle, counter system, blink patterns
 - β Command Interface: Help system with interactive command processing
 
π View STM32 Demo Documentation β
Please list available serial ports on the system
Connect to COM19 with baud rate 115200 for my STM32 device
Send 'H' command to get help menu, then send 'L' to toggle the LED
Read the response from the serial device with 2 second timeout
Please help me test all 5 MCP serial tools with my STM32 board on COM19. Start by listing ports, then connect, send some commands, read responses, and finally close the connection.
All tools tested and validated with real STM32 hardware:
| Tool | Description | Status | 
|---|---|---|
list_ports | 
Discover available serial ports on system | β Production Ready | 
open | 
Open serial connection with configuration | β Production Ready | 
write | 
Send data to connected serial device | β Production Ready | 
read | 
Read data from serial device with timeout | β Production Ready | 
close | 
Close serial connection cleanly | β Production Ready | 
β 5/5 Tools - 100% Success Rate with Real Hardware
- STM32: All STM32 series with UART capability
 - Arduino: Uno, Nano, ESP32, ESP8266
 - Embedded Systems: Any device with UART/USB-Serial interface
 - Industrial: Modbus, RS485 converters
 - IoT Devices: Sensors, actuators with serial communication
 - Other: Any device with UART/USB-Serial interface
 
- USB-to-Serial: CH340, CH343, FTDI, CP2102
 - Built-in USB: STM32 with USB-CDC, Arduino Leonardo
 - Hardware UART: Direct UART connections
 
| Platform | Port Format | Examples | 
|---|---|---|
| Windows | COMx | 
COM1, COM3, COM19 | 
| Linux | /dev/ttyXXX | 
/dev/ttyUSB0, /dev/ttyACM0 | 
| macOS | /dev/tty.xxx | 
/dev/tty.usbserial-1234 | 
Current Status: PRODUCTION READY
- β Complete Serial Integration: Real hardware communication with all 5 tools
 - β Hardware Validation: Tested with STM32 + CH343 USB-Serial on COM19
 - β Interactive Communication: Full bidirectional command/response system
 - β Multi-Platform: Windows, Linux, macOS support with automatic detection
 - β Connection Management: Robust connection handling with proper cleanup
 - β AI Integration: Perfect MCP protocol compatibility
 
- Cross-Platform: Automatic port detection and configuration
 - Multiple Encodings: UTF-8, Hex, Binary data support
 - Timeout Handling: Configurable read/write timeouts
 - Connection Pooling: Multiple concurrent serial connections
 
- Port Discovery: Fast enumeration of available ports
 - Connection Speed: Rapid connection establishment
 - Data Throughput: Efficient data transfer with minimal latency
 - Session Stability: Tested for extended operation periods
 
Thanks to the following open source projects:
- serialport-rs - Serial port communication library
 - rmcp - Rust MCP SDK
 - tokio - Async runtime
 
This project is licensed under the MIT License. See the LICENSE file for details.
β If this project helps you, please give us a Star!