Provides tools for managing Arduino sketches, boards, and libraries through arduino-cli, including code verification, sketch uploading, serial monitor control, and circuit diagram generation via WireViz.
Used for AI-powered generation of WireViz circuit diagrams from natural language descriptions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Arduino Servercreate a new sketch called 'temperature_sensor'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Arduino Server (mcp-arduino-server)
A FastMCP-powered bridge exposing arduino-cli functionality via the Model Context Protocol (MCP). Manage sketches, boards, libraries, files, plus generate WireViz schematics from YAML or natural language.
Requirements
Python ≥3.10
arduino-cli in
PATHMCP SDK (
mcp[cli])WireViz (optional; for diagram generation)
OPENAI_API_KEY (for AI‑powered WireViz)
thefuzz[speedup] (optional; enables fuzzy local library search)
Installation
From PyPI:
pip install mcp-arduino-serverFrom source:
git clone https://github.com/Volt23/mcp-arduino-server.git
cd mcp-arduino-server
pip install .Configuration
Environment variables override defaults:
Variable | Default / Description |
ARDUINO_CLI_PATH | auto-detected |
WIREVIZ_PATH | auto-detected |
MCP_SKETCH_DIR |
|
LOG_LEVEL |
|
OPENAI_API_KEY | your OpenAI API key (required for AI‑powered WireViz) |
OPENROUTER_API_KEY | optional alternative to |
ARDUINO_SERIAL_LOG_MAX_BYTES | max size per serial log file (bytes; 0 disables) |
ARDUINO_SERIAL_LOG_ROTATE_COUNT | number of rotated serial logs to keep |
Quick Start
mcp-arduino-serverServer listens on STDIO for JSON-RPC MCP calls. Key methods:
Sketches
create_new_sketch(name)list_sketches()read_file(path)write_file(path, content[, board_fqbn])(auto-compiles & opens
Build & Deploy
verify_code(sketch, board_fqbn)upload_sketch(sketch, port, board_fqbn)
Libraries
lib_search(name[, limit])lib_install(name)list_library_examples(name)
Boards
list_boards()board_search(query)
Serial Monitor
serial_monitor_start(port, baud, buffer_lines, log_to_file, ...)serial_monitor_read(monitor_id, lines)serial_monitor_list()serial_monitor_stop(monitor_id)
File Ops
rename_file(src, dest)remove_file(path)(destructive; operations sandboxed to home & sketch directories)
WireViz Diagrams
generate_circuit_diagram_from_description(desc, sketch="", output_base="circuit")(AI‑powered; requires
MCP Client Configuration
To integrate with MCP clients (e.g., Claude Desktop), set your OpenAI API key in the environment (or alternatively OPENROUTER_API_KEY for OpenRouter):
{
"mcpServers": {
"arduino": {
"command": "/path/to/mcp-arduino-server",
"args": [],
"env": {
"WIREVIZ_PATH": "/path/to/wireviz",
"OPENAI_API_KEY": "<your-openai-api-key>"
}
}
}
}Troubleshooting
Set
LOG_LEVEL=DEBUGfor verbose logs.Verify file and serial-port permissions.
Install missing cores:
arduino-cli core install <spec>.Run
arduino-clicommands manually to debug.
License
MIT
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.