Skip to content
Agentmart
Submit a tool

PIO Agent

Build, inspect, flash, and monitor PlatformIO firmware projects with policy-controlled tools.

Connector by jl-codes · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 53
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/jl-codes-platformio-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Build, inspect, flash, and monitor PlatformIO firmware projects with policy-controlled tools.

Use cases: debugging, testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Runs code on install

Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.

Tools
42 read · 26 write · 10 delete
Secrets
None asked for
Install scripts
Runs code on install
Runs as
Node.js package

Tools by what they do 78

Read from the source code; the running server may list different tools.

Read 42 · Look things up without changing anything.

  • agent_get_last_report
  • agent_resolve_target
  • agent_validate_project
  • check_project
  • check_task_status
  • coredump
  • decode_backtrace
  • deps_check
  • get_approval_request
  • get_board_info
  • get_dashboard_url
  • get_lock_status
Show 30 more tools
  • get_monitor_status
  • get_policy_status
  • get_project_config
  • get_project_context
  • list_boards
  • list_devices
  • list_installed_libraries
  • list_pending_approvals
  • list_targets
  • list_task_history
  • open_pio_agent_panel
  • partition_table
  • pio_check
  • pio_coredump
  • pio_decode_backtrace
  • pio_deps_check
  • pio_list_devices
  • pio_memory_watch
  • pio_monitor_capture
  • pio_monitor_read
  • pio_partition_table
  • pio_port_diagnose
  • pio_size_report
  • pio_system_info
  • pkg_list
  • pkg_search
  • project_envs
  • query_logs
  • search_libraries
  • system_info

Write 26 · Create, change, send or run things.

  • acquire_lock
  • agent_build_diagnose
  • agent_flash_monitor_verify
  • agent_generate_board_report
  • agent_monitor_health
  • agent_safe_pin_audit
  • build_project
  • capture_serial_window
  • init_project
  • install_library
  • pio_build
  • pio_monitor_start
Show 14 more tools
  • pio_monitor_write
  • pio_project_init
  • pio_run_target
  • pio_test
  • pio_upload
  • pkg_install
  • pkg_update
  • release_lock
  • run_target
  • run_tests
  • start_monitor
  • update_library
  • upload_filesystem
  • upload_firmware

Delete 10 · Delete, drop, revoke or wipe things.

  • cancel_task
  • clean_project
  • pio_clean
  • pkg_outdated
  • pkg_uninstall
  • project_metadata
  • reset_server_state
  • size_report
  • stop_monitor
  • uninstall_library

Network hosts it talks to 9

  • api.nuget.org · found in code
  • bit.ly · found in code
  • docker.io · found in code
  • docs.platformio.org · found in code
  • ghcr.io · found in code
  • github.com · found in code
  • gitlab.com · found in code
  • pioagent.dev · found in code
  • platformio.org · found in code

Files it touches

  • /dev
  • /dev/cu.usbserial-1410
  • /etc/alpine-release
  • /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/hal/esp32s3/include/hal/cpu_ll.h
  • /opt/homebrew/bin/pio
  • /opt/pio/bin/pio-agent
  • /proc/sys/kernel/random/boot_id
  • /sys/bus/usb/devices
  • /tmp/policy.yaml
  • /usr/sbin/lsof
  • /usr/sbin/system_profiler
  • Your home directory (~)
  • ~/.gemini/antigravity/mcp.json
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\.platformio-mcp\\isolated-host-acceptance\\plugin-final\\plugins\\cache\\platformio-mcp\\platformio-mcp\\3.1.0
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\.platformio-mcp\\ppk2-api-092-acceptance\\Scripts\\python.exe
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio-mcp-workspace\\logs\\upload\\upload-2026-09-25T17-13-19-713Z-93eece21.log
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio-mcp-workspace\\logs\\upload\\upload-2026-09-25T17-17-30-035Z-7c53d3c0.log
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio-mcp-workspace\\ota-private\\firmware-updated.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3-native\\bootloader.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3-native\\firmware.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3-native\\firmware.elf
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3-native\\partitions.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3-ota\\spiffs.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3\\firmware.elf
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\.pio\\build\\hil-esp32s3\\partitions.bin
  • C:\\Users\\proto\\.codex\\worktrees\\platformio-parity\\platformio-mcp\\tests\\fixtures\\hardware\\esp32s3\\partitions-hil.csv
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\elf\\734a830867a13aba43ed46bf4f8960aea875c761456b1e5f1999e042a3c5f1c8\\29f15c4809965d38772b96cda405c8e4788d7f938dddd749dd4cdc875b69b0f8.elf
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\elf\\e8524ba98c28f0f56fced44ba0c4e36e51ed25e17e12735bd2fa6ecd9f4fc237\\6073f2aa7277aaaa183b9bc466a80c8305cdc3ef2ab1ad02dfa953c8fb24d2ad.elf
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\ota\\0b0b45fc0831667405eba2566b77f7890678e386f6bd223384e43dfa131b15f8\\9f982e4c1de1d4cac097ab2a31ce5dfa87f716febab570a41e4d321d94938b6e.bin
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\ota\\5cabbcd2bbceb67fe3e1a76c2ef700b49123b566914395b471f75c9dc9d12134\\2dfc609366ca382f4bd85aff642336763bae95e43e8f0a8a74f05250b9f9f973.bin
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\upload\\images\\145dcf289b58bc7ff7461fe120367bf2336145016f7c68270bd6e8e897ce023b\\f94c5d786a7a8fab06ac5d10e33bf37711a6697636dc037559ea19cc410a17f0.bin
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\upload\\images\\14d2032117adbec1c0256d7cf7b217b919cec313b329b4ade6e09f534a767630\\1776e4dd896a69d0a5c2e79957b0e2a88aa4129b1381d6478683515a1f6af343.bin
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\upload\\images\\3e143ea6af48adb65cd5d57a951c0bc7f6fd4374afb54bc9b7e495a30b5a8147\\0e9c3868da97ff3f97c2178f643458ed45d27a17565eaf7d633b4a8d9540d02d.bin
  • C:\\Users\\proto\\.platformio-mcp\\artifacts\\upload\\images\\793ecf2e3cf01296c0e2e2e02e448f08fed617d5332bf068967e9eafc757e290\\99327f62da7421140192de4e3ffcb4dd7140e9d54cdb319bd41fd717a58e73b3.bin
  • C:\\Users\\proto\\.platformio\\packages\\framework-arduinoespressif32\\cores\\esp32\\main.cpp
  • C:\\Users\\proto\\.platformio\\packages\\framework-arduinoespressif32\\tools\\partitions\\boot_app0.bin
  • C:\\Users\\proto\\.platformio\\packages\\toolchain-xtensa-esp32s3\\bin\\xtensa-esp32s3-elf-gdb.exe

Tools (78)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • acquire_lock

    Explicitly claim the hardware queue lock for multi-step tasks. Throws if already held.

  • agent_build_diagnose

    Runs build_project and returns rich structured diagnostics with error taxonomy, evidence, severity, retry-safety, and resource usage (RAM/Flash).

  • agent_flash_monitor_verify

    Builds (optionally), flashes firmware with monitor restart, then verifies runtime serial output against expected/rejected patterns and stability criteria.

  • agent_generate_board_report

    Generates a compact board intelligence report and caches it in .pio-mcp-workspace/boardReport.json.

  • agent_get_last_report

    Returns the last persisted agent report from .pio-mcp-workspace/lastAgentReport.json.

  • agent_monitor_healthEvaluate Serial Health

    Resolves one device, performs a bounded serial capture, evaluates health markers, and persists change-only automation state when automationKey is provided.

  • agent_resolve_targetResolve PlatformIO Targetread-only

    Resolves exactly one PlatformIO environment, board, and attached physical device. Returns ambiguity instead of guessing and issues a short-lived binding for write workflows.

  • agent_safe_pin_audit

    Heuristic static pin audit for board-specific GPIO risks (ESP32 strapping/input-only/flash pins).

  • agent_validate_project

    Agent-oriented pre-flight validation for a PlatformIO project. Reports environments, board IDs, source-file presence, config gaps, connected devices, and recommended next actions.

  • build_project

    Compiles the project and generates the firmware binary via PlatformIO. PREFERRED over running `pio run` directly in a shell — this tool integrates with the hardware lock, the content-hash build cache (skips toolchain work when src/ is unchanged), and a structured-error parser that returns `structuredErrors` + `nextSteps` alongside the raw log. Returns immediately on a cache hit (no compilation). Set `verbose=true` only when you need the full log; otherwise the response stays compact. Use `background=true` for very long first-time builds to avoid MCP timeouts and poll with `check_task_status`.

  • cancel_taskCancel PlatformIO Taskcan change or delete data

    Idempotently cancels one known background task and releases only resources proven to be owned by that task.

  • capture_serial_windowCapture Serial Window

    Acquires a bounded serial-monitor lease, captures redacted incremental output, and restores or releases resources on every exit path.

  • check_project

    Static analysis validation.

  • check_task_status

    Polls the status of an ongoing background task. Returns a JSON object where `status` indicates the success of the polling operation itself, and `targetStatus` (running, failed, completed) indicates the state of the actual background task.

  • clean_project

    Removes build artifacts and compiled files from the project.

Show 63 more tools
  • coredump

    Inspect an ESP core dump from a file or explicitly authorized device partition read, optionally analyzing it against an explicit ELF. Device reads can reset hardware and require separate device and host-command grants.

  • decode_backtrace

    Decode crash addresses against the selected current or retained ELF. Requires build permission for metadata; does not prove flashed-device identity.

  • deps_check

    Audit declared and installed project dependencies, with optional separately authorized build and LDF graph evidence.

  • get_approval_requestInspect Approval Requestread-only

    Reads one approval request and expiry without exposing approve or deny mutations to the agent.

  • get_board_info

    Gets detailed information about a specific board including MCU, frequency, flash, RAM, and supported frameworks.

  • get_dashboard_url

    Retrieves a short-lived authenticated launch URL for the browser dashboard. Automatically starts the local web server on demand if offline.

  • get_lock_status

    Reveals who currently owns the hardware queue lock.

  • get_monitor_statusInspect Serial Monitorread-only

    Reports active, inactive, or stale serial monitor state with a bounded incremental cursor.

  • get_policy_status

    Returns the active policy profile and allowed/approval-required/denied operations.

  • get_project_config

    Dumps platformio.ini JSON.

  • get_project_context

    Returns a compact pre-flight snapshot of a PlatformIO project: declared environments, source files under src/, `lib_deps`, build-cache state, firmware artifact path, connected serial devices, and a `nextSteps` checklist. Call this FIRST when starting work on a project instead of issuing several read_file/list_devices/cat-log calls — it collapses that ritual into a single deterministic response. Pure I/O, no toolchain invocation; safe to call repeatedly.

  • init_project

    Initializes a new PlatformIO project with the specified board and optional framework. Creates project structure with src/, include/, lib/, and test/ directories.

  • install_library

    Installs a library from the PlatformIO registry either globally or to a specific project. Supports version specification.

  • list_boards

    Lists all available PlatformIO boards with optional filtering by platform, framework, or MCU. Supports 1000+ boards across 30+ platforms.

  • list_devices

    Lists all connected serial devices that can be used for firmware upload and monitoring.

  • list_installed_libraries

    Lists all installed libraries either globally or for a specific project.

  • list_pending_approvalsList Pending Approvalsread-only

    Lists pending project-scoped approval requests without exposing any approval mutation.

  • list_targets

    List structured target metadata for selected or all environments. Requires build permission; does not execute the listed targets.

  • list_task_historyList PlatformIO Tasksread-only

    Returns compact project-scoped task history after reconciling stale tracked processes.

  • open_pio_agent_panelOpen PIO Agent Panelread-only

    Opens the PIO Agent project, device, and task panel in a Codex host that supports MCP Apps. The headless result identifies the selected project without starting the browser dashboard.

  • partition_table

    Inspect ESP partition artifacts and firmware fit. Optional buildMetadata requires build permission and can execute project scripts. Optional readDevice resets/reads an explicitly selected serial device with separate permissions.

  • pio_build

    Run a fresh PlatformIO build with optional parallel jobs and compact diagnostics. Canonical build permissions apply.

  • pio_check

    Run static analysis with structured defects, source locations and CWE. Canonical check permissions apply.

  • pio_clean

    Clean selected build artifacts, optionally including dependencies. Canonical destructive cleanup permission applies.

  • pio_coredump

    Capture and save the selected ESP core-dump partition, optionally analyzing it against the matching project ELF. Configuration, metadata, device, export and analysis permissions remain separate.

  • pio_decode_backtrace

    Decode supplied crash text or an owned monitor session against a verified ELF snapshot. Build metadata collection and serial reads retain separate canonical permissions.

  • pio_deps_check

    Compatibility dependency audit using canonical permissions and optional authorized build evidence.

  • pio_list_devices

    List serial device hints and caller-owned monitor sessions under canonical permissions.

  • pio_memory_watch

    Collect bounded heap/stack telemetry from an owned session or an authorized temporary monitor. Reports sample-window trends, explicit unknown units and incomplete collection; does not prove a memory leak.

  • pio_monitor_capture

    Open, read and close an owned serial monitor. Both opening and reading must be authorized before startup; unconfirmed closure retains device ownership.

  • pio_monitor_read

    Read an owned monitor with cursors and bounded Python-compatible regex matching on completed lines. Maximum wait 120 seconds; response and storage byte limits apply.

  • pio_monitor_start

    Start an owned serial monitor using explicit arguments, resolved project settings, or an unambiguous device candidate. Opening requires hardware authorization and exclusive device ownership.

  • pio_monitor_write

    Write UTF-8 text to an owned serial session after payload-bound hardware authorization. Limited to 64 KiB including the optional newline.

  • pio_partition_table

    Inspect the effective ESP partition layout and optionally compare a serial device. Build metadata and hardware access retain separate canonical permissions.

  • pio_port_diagnose

    Inspect serial-port presence, permissions and observed holders without opening or closing the device. Missing holder evidence does not prove availability.

  • pio_project_init

    Initialize a PlatformIO project with ordered options. Canonical initialization and configuration-read permissions apply before filesystem changes.

  • pio_run_target

    Run a named target through the canonical effect permissions and caller-owned serial lifecycle.

  • pio_size_report

    Report ELF sections, largest symbols/files and partition-aware PlatformIO accounting under canonical build permissions. Static RAM excludes runtime heap and stack.

  • pio_system_info

    Inspect PlatformIO Core, effective server policy and caller-owned monitors through canonical permissions.

  • pio_test

    Run PlatformIO tests with per-case results. Embedded tests can upload and open hardware; canonical high-risk test permission applies. Build-only policy disables upload and test execution.

  • pio_upload

    Build and upload firmware through shared upload permissions and caller-owned serial cleanup.

  • pkg_install

    Install a library, platform or tool in a project and save dependencies through PlatformIO.

  • pkg_list

    List project packages and environments. Requires build permission because PlatformIO loads platform code.

  • pkg_outdated

    Report outdated project packages. Requires build permission because PlatformIO loads platform code.

  • pkg_search

    Search PlatformIO library, platform or tool registry packages by type and page.

  • pkg_uninstall

    Remove a library, platform or tool from a project and its declared dependencies.

  • pkg_update

    Update project dependencies within declared version constraints, with retained output and configuration change hashes.

  • project_envs

    List resolved project environments, inherited board/framework/port settings and configured defaults without running build scripts.

  • project_metadata

    Generate bounded build metadata for selected or all environments. Requires build permission; may execute project scripts or install dependencies.

  • query_logs

    Scans the latest active background serial trace spool, returning a filtered string block.

  • release_lock

    Release the explicit queue lock matching your session ID.

  • reset_server_state

    Forcefully cleans all server locks and terminates any tracked daemon or compilation PIDs globally or locally.

  • run_target

    Run a named PlatformIO target with effect-based permissions. Serial upload targets coordinate owned monitors and endpoint custody; network/probe destinations require their dedicated workflow.

  • run_tests

    Validates unit tests locally/remote.

  • search_libraries

    Searches the PlatformIO library registry for available libraries by name, keywords, or description.

  • size_report

    Report GNU symbols and PlatformIO memory accounting for one environment. Metadata and size checks require build permission and may execute project scripts.

  • start_monitor

    Manually start or restart the background serial-to-disk spooler for a specific device.

  • stop_monitor

    Kills the active background serial listener and unlocks the UART.

  • system_info

    Gets sys diagnostic path output.

  • uninstall_library

    Removes target library.

  • update_library

    Upgrades library versions.

  • upload_filesystem

    Builds and uploads a SPIFFS/LittleFS filesystem image to the connected device. PREFERRED over `pio run --target uploadfs` in a shell — same hardware-lock and port-auto-detect benefits as `upload_firmware`. Supports `start_monitor=true` to re-attach serial after upload.

  • upload_firmware

    Uploads compiled firmware to a connected device. PREFERRED over `pio run --target upload` in a shell — this tool routes through the hardware lock to serialize port access, auto-detects the port, and (with `start_monitor=true`) re-attaches the serial monitor after the device re-enumerates. Automatically rebuilds via `build_project` semantics if the cache is cold.

Signals

Stars
53
Forks
19
Open issues
9
Contributors
8
Last commit
Oct 5, 2026 (25 days ago)
Last release
Sep 25, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.jl-codes/platformio-mcp
Version
3.1.0
Auth
No auth
Packages
npm platformio-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from jl-codes

Cite this page

PIO Agent MCP server. Agent Mart. https://agentmart.dev/connectors/jl-codes-platformio-mcp (last updated 2026-10-24)