Model Context Protocol (MCP) Server for IoT Devices (Arduino)
MCP for IOT is a Go implementation of the Model Context Protocol (MCP) server that allows AI models like Claude to directly interact with IoT devices, specifically Arduino boards. This server acts as a bridge between Claude and your Arduino hardware, enabling AI-controlled hardware automation.
- 🔌 List available serial ports
- 📡 Read data from Arduino's serial port
- 🚦 Control digital pins (LEDs, relays, etc.)
- 🔊 Control buzzers with on/off and duration settings
- 🤖 Seamless integration with Claude AI
IOT_MCP.mp4
- Go (version 1.24 or later)
- Arduino hardware with USB connection
- Claude Desktop App or compatible MCP client
git clone https://github.com/sukeesh/mcp-iot-go.git
cd mcp-iot-go
go install
The binary will be installed to your GOBIN directory, which should be in your PATH.
- Connect your Arduino to your computer
- Upload the provided Arduino firmware:
arduino/firmware.ino
This firmware accepts commands via serial communication:
M,pin,mode
- Sets pin mode (e.g.,M,6,OUTPUT
)D,pin,value
- Controls digital pins (e.g.,D,6,HIGH
orD,6,LOW
)BZ,pin,state
- Controls buzzers (e.g.,BZ,8,ON
orBZ,8,OFF
)
Configure Claude Desktop:
- Open Claude Desktop → Settings → Developer → Edit Config
- Add the following to your
claude_desktop_config.json
:
{
"mcpServers": {
"iot": {
"command": "<path-to-mcp-iot-go-binary>",
"env": {}
}
}
}
- Restart Claude Desktop
Tool | Description |
---|---|
port_list |
Lists all available serial ports |
read_serial_line |
Reads a single line of data from a specified serial port |
write_digital |
Writes a digital value (HIGH/LOW) to a pin on a specified port |
buzzer_control |
Controls a buzzer connected to an Arduino pin with optional duration |
After setup, you can interact with your Arduino hardware directly through Claude:
- "List all available serial ports"
- "Read data from the Arduino on port /dev/cu.usbmodem12401"
- "Turn on the red LED on pin 6"
- "Activate the buzzer on pin 8 for 2 seconds"
main.go
- MCP server setup and tool definitionsinternal/tools.go
- Tool implementation for Arduino communicationarduino/firmware.ino
- Arduino firmware for processing commands
- mcp-go - Go library for MCP implementation
- go.bug.st/serial - Serial port communication library
Contributions are welcome! Please feel free to submit a Pull Request.