Arduino Cli Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Arduino Cli Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Arduino CLI MCP is a server that provides Arduino CLI integration for VSCode and Claude, allowing you to compile and upload Arduino sketches through the Arduino CLI.
Arduino CLI MCP provides a wrapper for Arduino CLI that simplifies workflows through features such as auto-approval of repetitive operations. This tool is particularly useful for developers and educators who frequently work with Arduino projects.
Model Context Protocol (MCP) is an open protocol specifically designed to enable Large Language Models (LLMs) to seamlessly integrate with external data sources and tools. Whether you're developing an AI IDE, enhancing chat interfaces, or building automated AI workflows, MCP provides a standardized way to connect LLMs with the context they need. Through MCP, the Arduino CLI MCP server can interact with various AI models, handling Arduino-related operations and commands.
pip install arduino-cli-mcpAfter installation, you can run it with the following command:
python -m arduino_cli_mcpThe tool can be configured using JSON format as follows:
"github.com/arduino-cli-mcp": {
"command": "python",
"args": [
"/Users/oliver/code/mcp/arduino-cli-mcp/main.py",
"--workdir",
"/Users/oliver/Documents/Cline/MCP/arduino-cli-mcp"
],
"disabled": false,
"autoApprove": [
"upload",
"compile",
"install_board"
]
}command: The command to execute (Python in this case)args: List of arguments passed to the command--workdir specifies the working directory for Arduino CLI operationsdisabled: Enable/disable the tool (set to false to enable)autoApprove: List of Arduino CLI operations that can be auto-approved without user confirmationupload, compile, install_boardAdd the following to your Claude settings:
"mcpServers": {
"arduino": {
"command": "python",
"args": ["-m", "arduino_cli_mcp"]
}
}Add the following to your Zed settings.json file:
"context_servers": {
"arduino-cli-mcp": {
"command": "python",
"args": ["-m", "arduino_cli_mcp"]
}
},By default, the server looks for Arduino CLI in the system PATH. You can specify a custom path by adding the --arduino-cli-path parameter to the args list in your configuration.
Example:
{
"command": "python",
"args": ["-m", "arduino_cli_mcp", "--arduino-cli-path=/path/to/arduino-cli"]
}Start the MCP server:
arduino-cli-mcp --workdir /path/to/your/arduino/projectsOnce configured, the tool will automatically handle Arduino CLI commands, with special handling for operations listed in the autoApprove section.
This is a Model Context Protocol server that provides Arduino CLI functionality. The server enables large language models to interact with Arduino boards through natural language commands, compile sketches, upload firmware, and manage libraries.
compile: Compile an Arduino sketch / 編譯 Arduino 草圖sketch_path (string, required): Path to the .ino file / .ino 文件的路徑fqbn (string, required, default: 'arduino:avr:uno'): Fully Qualified Board Name (e.g. 'arduino:avr:uno') / 完整開發板名稱upload: Upload an Arduino sketch or hex file to a board / 上傳 Arduino 草圖或 hex 檔案到開發板sketch_path (string): Path to the .ino file / .ino 文件的路徑hex_path (string): Path to the hex file (optional, if provided will upload directly) / hex 檔案的絕對路徑(可選)port (string, required): Serial port of the board / 開發板的串口fqbn (string, required, default: 'arduino:avr:uno'): Fully Qualified Board Name / 完整開發板名稱install_board: Install a board platform / 安裝開發板平台platform_id (string, required): Platform ID (e.g. arduino:avr, esp32:esp32) / 平台 ID(如 arduino:avr, esp32:esp32)check: Check Arduino CLI version / 檢查 Arduino CLI 版本list: List all available boards and platforms / 列出所有可用的開發板和平台install_library: Install an Arduino library / 安裝 Arduino 函式庫library_name (string, required): Name of the library to install / 要安裝的函式庫名稱search_library: Search for Arduino libraries / 搜尋 Arduino 函式庫query (string, required): Search query / 搜尋關鍵字list_libraries: List all installed Arduino libraries / 列出所有已安裝的 Arduino 函式庫uninstall_library: Uninstall an Arduino library / 移除 Arduino 函式庫library_name (string, required): Name of the library to uninstall / 要移除的函式庫名稱library_examples: Get examples from an installed library / 獲取已安裝函式庫的範例library_name (string, required): Name of the library / 函式庫名稱load_example: Load a library example to the workspace / 載入函式庫範例到工作區library_name (string, required): Name of the library / 函式庫名稱example_name (string, required): Name of the example / 範例名稱diagnose_error: Diagnose compilation errors / 診斷編譯錯誤error_output (string, required): Compilation error output / 編譯錯誤輸出auto_install_libs: Automatically install libraries used in a sketch / 自動安裝草圖中使用的函式庫sketch_path (string, required): Path to the .ino file / .ino 文件的路徑monitor: Start serial monitor / 啟動串行監視器port (string, required): Serial port / 串行端口baud_rate (integer, default: 9600): Baud rate / 波特率board_options: Configure board options / 設定開發板選項fqbn (string, required): Fully Qualified Board Name / 完整開發板名稱options (object, required): Board options as key-value pairs / 開發板選項{
"name": "list",
"arguments": {}
}Response (example):
{
"connected": [
{
"port": "/dev/ttyACM0",
"fqbn": "arduino:avr:uno",
"board_name": "Arduino Uno"
}
],
"platforms": ["arduino:avr", "esp32:esp32"],
"all_boards": "Board Name FQBN Core \nArduino Uno arduino:avr:uno arduino:avr \nArduino Mega or Mega 2560 arduino:avr:mega arduino:avr \n..."
}{
"name": "compile",
"arguments": {
"sketch_path": "/path/to/Blink/Blink.ino",
"fqbn": "arduino:avr:uno"
}
}Response (example):
{
"success": true,
"build_dir": "/path/to/Blink/build",
"hex_path": "/path/to/Blink/build/Blink.ino.hex",
"error": "",
"error_code": 0
}{
"name": "upload",
"arguments": {
"sketch_path": "/path/to/Blink/Blink.ino",
"port": "/dev/ttyACM0",
"fqbn": "arduino:avr:uno"
}
}Response (example):
{
"success": true,
"command": "arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno /path/to/Blink",
"error": ""
}{
"name": "install_library",
"arguments": {
"library_name": "Servo"
}
}Response (example):
{
"success": true,
"message": "Successfully installed [email protected]",
"command": "arduino-cli lib install \"Servo\""
}{
"success": false,
"build_dir": "/path/to/ErrorSketch/build",
"hex_path": "",
"error": "Compilation failed: exit status 1\n/path/to/ErrorSketch/ErrorSketch.ino:5:1: error: expected ';' before '}' token\n }",
"error_code": 1
}You can use the MCP inspector tool to debug the server:
npx @modelcontextprotocol/inspector python -m arduino_cli_mcpWe encourage you to contribute to arduino-cli-mcp to help expand and improve it. Whether you want to add new Arduino-related tools, enhance existing functionality, or improve documentation, your input is valuable.
For examples of other MCP servers and implementation patterns, see: https://github.com/modelcontextprotocol/servers
Pull requests are welcome! Feel free to contribute new ideas, bug fixes, or improvements to make arduino-cli-mcp more powerful and useful.
For maintainers: the release / PyPI publish flow is documented in RELEASING.md.
This project is licensed under the MIT License - see the LICENSE file for details.
_For the Chinese version, please refer to README.zh-tw.md_
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.