MCP2Serial

# MCP2Serial: Bridge between AI Models and Physical World Connect AI Large Language Models to hardware devices through the Model Context Protocol (MCP). [GitHub Repository](https://github.com/mcp2everything/mcp2serial) | [Documentation](https://github.com/mcp2everything/mcp2serial/tree/main/docs) ## Features - **Intelligent Serial Communication** - Automatic port detection and configuration - Multiple baud rate support (default 115200) - Real-time status monitoring and error handling - **MCP Protocol Integration** - Full Model Context Protocol support - Resource management and tool invocation - Flexible prompt system ## Supported Clients MCP2Serial supports all clients implementing the MCP protocol, including: - Claude Desktop (Test ok) - Continue (Should work) - Cline (Test ok) ## Quick Start make sure you have installed uv ``` ```bash windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" MacOS curl -LsSf https://astral.sh/uv/install.sh | sh ``` ## Basic Configuration Add the following to your MCP client configuration: ```json { "mcpServers": { "mcp2serial": { "command": "uvx", "args": ["mcp2serial"] } } } ``` ## Serial Port Configuration Create or modify `config.yaml` to configure serial port parameters: ```yaml serial: port: COM11 # Windows example, on Linux might be /dev/ttyUSB0 baud_rate: 115200 # Baud rate timeout: 1.0 # Serial timeout (seconds) read_timeout: 0.5 # Read timeout (seconds) ``` If `port` is not specified, the program will automatically search for available serial ports. ## Configuration File Location The configuration file (`config.yaml`) can be placed in different locations depending on your needs. The program searches for the configuration file in the following order: ### 1. Current Working Directory (For Development) - Path: `./config.yaml` - Example: If you run the program from `C:\Projects`, it will look for `C:\Projects\config.yaml` - Best for: Development and testing - No special permissions required ### 2. User's Home Directory (Recommended for Personal Use) - Windows: `C:\Users\YourName\.mcp2serial\config.yaml` - macOS: `/Users/YourName/.mcp2serial/config.yaml` - Linux: `/home/username/.mcp2serial/config.yaml` - Best for: Personal configuration - Create the `.mcp2serial` directory if it doesn't exist - No special permissions required ### 3. System-wide Configuration (For Multi-user Setup) - Windows: `C:\ProgramData\mcp2serial\config.yaml` (requires admin rights) - macOS/Linux: `/etc/mcp2serial/config.yaml` (requires sudo/root) - Best for: Shared configuration in multi-user environments - Create the directory with appropriate permissions The program will use the first valid configuration file it finds in this order. Choose the location based on your needs: - For testing: use current directory - For personal use: use home directory (recommended) - For system-wide settings: use ProgramData or /etc ## Serial Port Configuration Create your `config.yaml` in one of the above locations with the following structure: ```yaml serial: port: COM11 # or /dev/ttyUSB0 for Linux baud_rate: 115200 timeout: 1.0 read_timeout: 0.5 commands: # Add your commands here # See the Command Configuration section for examples ``` ## Command Configuration Add or remove custom commands in `config.yaml`: ```yaml commands: # PWM control command example set_pwm: command: "PWM {frequency}\n" # Actual command format to send need_parse: false # No need to parse response prompts: # Prompt list - "Set PWM to {value}" - "Turn off PWM" # LED control command example led_control: command: "LED {state}\n" # state can be on/off or other values need_parse: false prompts: - "Turn on LED" - "Turn off LED" - "Set LED state to {state}" # Command example with response parsing get_sensor: command: "GET_SENSOR\n" need_parse: true # Need to parse response prompts: - "Read sensor data" ``` ### Response Parsing 1. Simple Response (`need_parse: false`): - Device returns message starting with "OK" indicates success - Other responses will be treated as errors 2. Parsed Response (`need_parse: true`): - Complete response will be returned in the `result.raw` field ## Documentation For detailed documentation, please visit our [GitHub repository](https://github.com/mcp2everything/mcp2serial). ## Support If you encounter any issues or have questions: 1. Check our [Issues](https://github.com/mcp2everything/mcp2serial/issues) page 2. Read our [Wiki](https://github.com/mcp2everything/mcp2serial/wiki) 3. Create a new issue if needed ## License This project is licensed under the MIT License.