Arduino MCP Server
Control an Arduino board from your computer using AI commands.
Arduino MCP Server: Control Your Arduino with AI!
Welcome to the Arduino MCP Server project! This project lets you control an Arduino board from your computer using a special connection called MCP (Model Context Protocol). Think of it like giving instructions to your Arduino using a smart AI assistant!
What is this project for?
In this project, we're building a "server" that listens for commands from an AI (like Claude Desktop). When the AI tells it to, our Arduino will turn on or off some LEDs. This is a super cool way to see how AI can interact with the real world!
What you'll need
Before we start, make sure you have:
- An Arduino board: Any Arduino board like an Uno or Nano will work.
- Two LEDs: One white and one red.
- Two 1k Resistors: These are important to protect your LEDs.
- Jumper wires: To connect everything.
- USB cable: To connect your Arduino to your computer.
- Claude Desktop: This is the AI assistant we'll be using.
- Python 3.12 or higher: Our code is written in Python.
uv(Ultrafast Python package installer and resolver): We use this to manage our Python libraries.- Claude Desktop
How to set up your Arduino
-
Connect the LEDs:
- White LED: Connect the longer leg (positive) of the white LED to Digital Pin 12 on your Arduino through a 220 Ohm resistor. Connect the shorter leg (negative) to a GND (Ground) pin on your Arduino.
- Red LED: Connect the longer leg (positive) of the red LED to Digital Pin 11 on your Arduino through a 220 Ohm resistor. Connect the shorter leg (negative) to a GND (Ground) pin on your Arduino.
(Remember to always use a resistor with LEDs to prevent them from burning out!)
-
Upload the StandardFirmataPlus sketch:
- Open the Arduino IDE (Integrated Development Environment).
- Go to Library
Library Manager> Search and downloadFirmata - Go to
File>Examples>Firmata>StandardFirmata. - Select your Arduino board from
Tools>Board. - Select the correct Port from
Tools>Port. - Upload the
StandardFirmatasketch to your Arduino board. This program allows Python to control your Arduino.
Getting the Python code ready
-
Download the project: If you haven't already, download or clone this project to your computer.
-
Open your terminal/command prompt: Navigate to the folder where you saved this project.
-
Install Python dependencies: We'll use
uvto install everything our Python code needs.uv pip installThis command reads the
pyproject.tomlfile and installs thefastmcpandpyfirmata2libraries.
Understanding the Python Code (main.py)
Let's take a quick look at the main parts of our Python code:
from fastmcp import FastMCP: This line imports theFastMCPlibrary, which helps us create our MCP server.import pyfirmata2: This line importspyfirmata2, which is a library that lets Python talk to your Arduino.Arduino = pyfirmata2.Arduino('/dev/cu.usbmodem212201'): IMPORTANT! You need to change'/dev/cu.usbmodem212201'to the COM port that your Arduino is connected to. You can find this in the Arduino IDE underTools>Port. It might look something likeCOM3on Windows or/dev/ttyUSB0on Linux.@ArduinoMCP.tool: These special lines (@ArduinoMCP.tool) are called "decorators." They tellFastMCPthat the function right below them is a "tool" that the AI client can use.white_led_ON(),red_led_ON(),led_OFF(): These are our functions (mini-programs) that tell the Arduino to turn the white LED on, the red LED on, or both LEDs off.ArduinoMCP.run(): This line starts our MCP server, making it ready to receive commands!
Setting up Claude Desktop
Now, let's tell Claude Desktop how to connect to our Arduino server.
- Open your MCP Client in this case
Claude Desktop - Go to
Settings>Developer>Edit Config> and open the config fileclaude_desktop_config.json - Copy and paste what is below and update the path:
{ "mcpServers": { "arduino": { "command": "/Users/aiman/.local/bin/uv", # this too "args": [ "--directory", "/Users/aiman/Dev/Arduino_MCP", # update to the path "run", "main.py" ] } } }"command": This should be the full path to youruvexecutable. If you're on Windows, it might be something likeC:\Users\YourUser\AppData\Local\uv\uv.exe. On macOS/Linux, it's often in your user's local bin directory as shown."--directory": This should be the full path to theArduino_MCPfolder on your computer where yourmain.pyfile is located. Make sure this path is correct!"run", "main.py": These telluvto run yourmain.pyscript.
Running the Project!
-
Start Claude Desktop.
-
The MCP server should start automatically. Claude Desktop will use the
claude_desktop_config.jsonfile to launch your Arduino MCP server. -
Talk to Claude! Now you can ask Claude to control your Arduino. Try saying things like:
- "Turn on the white LED."
- "Turn on the red LED."
- "Turn off all LEDs."
Claude Desktop will understand your commands and send them to your Arduino MCP server, which will then tell your Arduino what to do!
Have fun controlling your Arduino with AI! This is just the beginning of what you can do!
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
NimCP
A powerful, macro-based library for creating Model Context Protocol (MCP) servers in the Nim programming language.
nUR MCP Server
An intelligent robot control middleware for natural language interaction with industrial robots, powered by LLMs. It integrates with Universal Robots and supports real-time, multi-robot control.
Volatility3 MCP Server
Perform advanced memory forensics analysis using Volatility3 via a conversational interface. Requires user-specified memory dump files.
Flowise
Integrate with the Flowise API to create predictions and manage chatflows and assistants.
mcp-nodejs
A Node.js MCP server example for the OpenWeather API, requiring an API key.
GDB
A GDB/MI protocol server based on the MCP protocol, providing remote application debugging capabilities with AI assistants.
Comet Opik
Query and analyze your Opik logs, traces, prompts and all other telemtry data from your LLMs in natural language.
vcpkg Package README MCP Server
Fetch comprehensive information about vcpkg packages, including READMEs, metadata, and search results.
CodeBase Optimizer
Analyzes, optimizes, and detects duplicates in codebases for Claude Code.
AgentOps MCP
An MCP server for AgentOps, providing observability and evaluation tools for AI agents.