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.
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:
From source:
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
Server 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):
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