Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,10 @@ Unzip and run `Arduino IDE` (`Arduino IDE.exe` on Windows). Older builds are on
| Category | Operations |
|----------|------------|
| **Sketches** | Create, open, and edit sketches; read/write code; browse and clone built-in examples |
| **Build** | Compile with live progress; capture real compiler output and structured errors |
| **Upload** | Flash firmware to a connected board (guarded as a destructive action) |
| **Boards** | Detect connected boards; query pin capabilities (PWM/I2C/SPI); install cores |
| **Serial** | Connect, read, and write the serial monitor — shared with the IDE's own monitor |
| **Build** | Compile with `wait:true` for one-call results; live progress; real compiler output with structured, explained errors |
| **Upload** | Compile + flash in one call; failures come back explained (bootloader mode, busy port, wrong FQBN, power) |
| **Boards** | Detect connected boards with USB vid/pid; identify unknown boards (`suggest_fqbn`); pin capabilities; install cores |
| **Serial** | Cursor-based lossless reads; `wait_for` a pattern; automatic crash/reset/watchdog/brownout detection |
| **Libraries** | Search the registry; install/remove; browse library examples |
| **Formatting** | Format Arduino/C++ with clang-format |
| **Config** | Sketchbook location, board-manager URLs, IDE settings |
Expand Down Expand Up @@ -213,18 +213,22 @@ Every step ran as an MCP call, with no manual work in the IDE. In one pass the
agent wrote a WiFi scanner, flashed it, and read 21 access points back off the
board.

That session is also where the current release's fixes came from — uploading a
never-compiled sketch, serial baud rates silently not applying, and boards
whose core isn't installed being invisible to the agent were all found by
driving a physical board, not by reading code.
Those sessions shaped the tooling itself. v0.6.0 turned every pain point they
surfaced into a feature: `wait:true` replaces polling loops, serial reads are
lossless and cursor-based, crashes/resets/watchdogs are detected and reported
as events, upload failures come back explained, and `suggest_fqbn` identifies
boards arduino-cli can't. The server also now teaches connected agents its own
workflow (instructions at connect, `/bringup`-style prompts, a Claude Code
skill).

Release builds for **Windows, macOS and Linux** are produced by CI and attached
to every tagged release.

**Known limits:** artifacts are unsigned. Boards whose USB VID/PID appear in no
`boards.txt` (many ESP32-S3 devkits) can't be auto-identified — pass an explicit
FQBN. Uploading over a board's *native* USB port can require manual bootloader
entry; a UART bridge port works without it.
`boards.txt` (many ESP32-S3 devkits) can't be auto-identified — use
`arduino_board suggest_fqbn`, then pass the FQBN explicitly. Uploading over a
board's *native* USB port can require manual bootloader entry; a UART bridge
port works without it.

Contributions and bug reports are welcome via
[Issues](https://github.com/mixelpixx/arduino-mcp/issues) and pull requests.
Expand Down
8 changes: 4 additions & 4 deletions arduino-mcp-extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ The extension provides 11 tools covering the entire Arduino development workflow
| Tool | Description |
|------|-------------|
| `arduino_sketch` | Create, open, edit sketches; browse and clone examples |
| `arduino_compile` | Asynchronous compilation with progress tracking |
| `arduino_upload` | Upload firmware to connected boards (destructive operation) |
| `arduino_board` | Board detection, selection, and hardware reference |
| `arduino_serial` | Serial monitor: connect, read, write, disconnect |
| `arduino_compile` | Compilation with `wait:true` one-call results, or async with progress tracking |
| `arduino_upload` | Compile + flash in one call (destructive); failures explained |
| `arduino_board` | Board detection with USB vid/pid, FQBN suggestion, selection, hardware reference |
| `arduino_serial` | Serial monitor: cursor-based reads, `wait_for`, crash/reset event detection |
| `arduino_library` | Search, install, and manage Arduino libraries |
| `arduino_context` | Query current IDE state |
| `arduino_task_status` | Monitor async operation progress |
Expand Down
7 changes: 6 additions & 1 deletion arduino-mcp-extension/bridge/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,15 @@ Example with auto-launch on Windows:

| Request | Response |
|---------|----------|
| `initialize` | Succeeds (answered locally), so the client connects |
| `initialize` | Succeeds (answered locally) with the server's workflow `instructions` and the `prompts` capability, so the client connects fully featured |
| `tools/list` | The tools seen last time this bridge talked to the IDE, or `[]` on a cold start |
| `tools/call` | A tool result with `isError: true` and the message above |
| `resources/list`, `prompts/list` | Empty lists |
| `prompts/get` | The launch-the-IDE error |

The instructions are loaded from the compiled extension when present (source
of truth) with an embedded fallback; the smoke test asserts bridge/server
parity so the copies cannot drift silently.

Session handling is automatic: if the IDE restarts and invalidates the session
(HTTP 404) or rotates the token (HTTP 401), the bridge re-runs the handshake and
Expand Down