{"name":"io.github.jl-codes/platformio-mcp","slug":"jl-codes-platformio-mcp","title":"PIO Agent","description":"Build, inspect, flash, and monitor PlatformIO firmware projects with policy-controlled tools.","url":"https://mcp.market/server/jl-codes-platformio-mcp","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":42,"stars":51,"forks":19,"downloads_week":131,"last_push_at":"2026-09-25T21:13:51.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/jl-codes/platformio-mcp","website":null,"version":"3.1.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"platformio-mcp","version":"3.1.0","transport":{"type":"stdio"}}],"tools":[{"name":"acquire_lock","description":"Explicitly claim the hardware queue lock for multi-step tasks. Throws if already held.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_build_diagnose","description":"Runs build_project and returns rich structured diagnostics with error taxonomy, evidence, severity, retry-safety, and resource usage (RAM/Flash).","write_action":true,"price_micros":0,"input_schema":null},{"name":"agent_flash_monitor_verify","description":"Builds (optionally), flashes firmware with monitor restart, then verifies runtime serial output against expected/rejected patterns and stability criteria.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_generate_board_report","description":"Generates a compact board intelligence report and caches it in .pio-mcp-workspace/boardReport.json.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_get_last_report","description":"Returns the last persisted agent report from .pio-mcp-workspace/lastAgentReport.json.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_monitor_health","description":"Resolves one device, performs a bounded serial capture, evaluates health markers, and persists change-only automation state when automationKey is provided.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_resolve_target","description":"Resolves exactly one PlatformIO environment, board, and attached physical device. Returns ambiguity instead of guessing and issues a short-lived binding for write workflows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_safe_pin_audit","description":"Heuristic static pin audit for board-specific GPIO risks (ESP32 strapping/input-only/flash pins).","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_validate_project","description":"Agent-oriented pre-flight validation for a PlatformIO project. Reports environments, board IDs, source-file presence, config gaps, connected devices, and recommended next actions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"build_project","description":"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). S","write_action":false,"price_micros":0,"input_schema":null},{"name":"cancel_task","description":"Idempotently cancels one known background task and releases only resources proven to be owned by that task.","write_action":true,"price_micros":0,"input_schema":null},{"name":"capture_serial_window","description":"Acquires a bounded serial-monitor lease, captures redacted incremental output, and restores or releases resources on every exit path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_project","description":"Static analysis validation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_task_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clean_project","description":"Removes build artifacts and compiled files from the project.","write_action":true,"price_micros":0,"input_schema":null},{"name":"coredump","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"decode_backtrace","description":"Decode crash addresses against the selected current or retained ELF. Requires build permission for metadata; does not prove flashed-device identity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"deps_check","description":"Audit declared and installed project dependencies, with optional separately authorized build and LDF graph evidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_approval_request","description":"Reads one approval request and expiry without exposing approve or deny mutations to the agent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_board_info","description":"Gets detailed information about a specific board including MCU, frequency, flash, RAM, and supported frameworks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dashboard_url","description":"Retrieves the address and auth token for the MCP Web Dashboard. Automatically starts the web server on demand if offline.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_lock_status","description":"Reveals who currently owns the hardware queue lock.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_monitor_status","description":"Reports active, inactive, or stale serial monitor state with a bounded incremental cursor.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_policy_status","description":"Returns the active policy profile and allowed/approval-required/denied operations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_config","description":"Dumps platformio.ini JSON.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_context","description":"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. Pu","write_action":false,"price_micros":0,"input_schema":null},{"name":"init_project","description":"Initializes a new PlatformIO project with the specified board and optional framework. Creates project structure with src/, include/, lib/, and test/ directories.","write_action":false,"price_micros":0,"input_schema":null},{"name":"install_library","description":"Installs a library from the PlatformIO registry either globally or to a specific project. Supports version specification.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_boards","description":"Lists all available PlatformIO boards with optional filtering by platform, framework, or MCU. Supports 1000+ boards across 30+ platforms.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_devices","description":"Lists all connected serial devices that can be used for firmware upload and monitoring.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_installed_libraries","description":"Lists all installed libraries either globally or for a specific project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_pending_approvals","description":"Lists pending project-scoped approval requests without exposing any approval mutation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_targets","description":"List structured target metadata for selected or all environments. Requires build permission; does not execute the listed targets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_task_history","description":"Returns compact project-scoped task history after reconciling stale tracked processes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"partition_table","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_build","description":"Run a fresh PlatformIO build with optional parallel jobs and compact diagnostics. Canonical build permissions apply.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_check","description":"Run static analysis with structured defects, source locations and CWE. Canonical check permissions apply.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_clean","description":"Clean selected build artifacts, optionally including dependencies. Canonical destructive cleanup permission applies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_coredump","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_debug_cmd","description":"Send a classified GDB/MI or console command to this connection's session. Inspection, target mutation and privileged host commands are authorized separately. Timeout does not halt a running target.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_debug_list","description":"List this connection's debugger sessions, observed target state and pending cleanup. Does not enumerate another connection's sessions or contact hardware.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_debug_stop","description":"Run the configured reset/run hook with host and target permissions, then close owned GDB/backend process groups and release probe custody. Set process_only for recovery without target commands; failed cleanup retains the session for retry.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_decode_backtrace","description":"Decode supplied crash text or an owned monitor session against a verified ELF snapshot. Build metadata collection and serial reads retain separate canonical permissions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_deps_check","description":"Compatibility dependency audit using canonical permissions and optional authorized build evidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_list_devices","description":"List serial device hints and caller-owned monitor sessions under canonical permissions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_partition_table","description":"Inspect the effective ESP partition layout and optionally compare a serial device. Build metadata and hardware access retain separate canonical permissions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_port_diagnose","description":"Inspect serial-port presence, permissions and observed holders without opening or closing the device. Missing holder evidence does not prove availability.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_project_init","description":"Initialize a PlatformIO project with ordered options. Canonical initialization and configuration-read permissions apply before filesystem changes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_run_target","description":"Run a named target through the canonical effect permissions and caller-owned serial lifecycle.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_size_report","description":"Report ELF sections, largest symbols/files and partition-aware PlatformIO accounting under canonical build permissions. Static RAM excludes runtime heap and stack.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_system_info","description":"Inspect PlatformIO Core, effective server policy and caller-owned monitors through canonical permissions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pio_test","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pio_upload","description":"Build and upload firmware through shared upload permissions and caller-owned serial cleanup.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pkg_install","description":"Install a library, platform or tool in a project and save dependencies through PlatformIO.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pkg_list","description":"List project packages and environments. Requires build permission because PlatformIO loads platform code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pkg_outdated","description":"Report outdated project packages. Requires build permission because PlatformIO loads platform code.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pkg_search","description":"Search PlatformIO library, platform or tool registry packages by type and page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pkg_uninstall","description":"Remove a library, platform or tool from a project and its declared dependencies.","write_action":true,"price_micros":0,"input_schema":null},{"name":"pkg_update","description":"Update project dependencies within declared version constraints, with retained output and configuration change hashes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_envs","description":"List resolved project environments, inherited board/framework/port settings and configured defaults without running build scripts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_metadata","description":"Generate bounded build metadata for selected or all environments. Requires build permission; may execute project scripts or install dependencies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_logs","description":"Scans the latest active background serial trace spool, returning a filtered string block.","write_action":false,"price_micros":0,"input_schema":null},{"name":"release_lock","description":"Release the explicit queue lock matching your session ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reset_server_state","description":"Forcefully cleans all server locks and terminates any tracked daemon or compilation PIDs globally or locally.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_target","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_tests","description":"Validates unit tests locally/remote.","write_action":true,"price_micros":0,"input_schema":null},{"name":"search_libraries","description":"Searches the PlatformIO library registry for available libraries by name, keywords, or description.","write_action":false,"price_micros":0,"input_schema":null},{"name":"size_report","description":"Report GNU symbols and PlatformIO memory accounting for one environment. Metadata and size checks require build permission and may execute project scripts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_monitor","description":"Manually start or restart the background serial-to-disk spooler for a specific device.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_monitor","description":"Kills the active background serial listener and unlocks the UART.","write_action":true,"price_micros":0,"input_schema":null},{"name":"system_info","description":"Gets sys diagnostic path output.","write_action":false,"price_micros":0,"input_schema":null},{"name":"uninstall_library","description":"Removes target library.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_library","description":"Upgrades library versions.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_filesystem","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_firmware","description":"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.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":74,"grade":"B","scanned_at":"2026-09-26T05:10:16.589Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T05:10:16.620Z","components":{"code":{"score":13,"max":25,"notes":["556 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"build/api/folder-picker.js: …edPath } else { '' }\"; result = execSync(`powershell -NoProfile -Command \"${script}\"`, { timeout: 60_000…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"platformio-mcp","version":"3.1.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":11,"publishedAt":"2026-09-25T21:34:36.937Z","repositoryUrl":"git+https://github.com/jl-codes/platformio-mcp.git","weeklyDownloads":131}],"repo":{"found":true,"owner":"jl-codes","repo":"platformio-mcp","archived":false,"pushedAt":"2026-09-25T21:13:51Z","stars":51,"forks":19,"openIssues":6,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/19557526?v=4","ownerCreatedAt":"2016-05-24T18:01:38Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/19557526?v=4&s=128","source":"github"},"presence":{"stars":51,"forks":19,"downloadsWeek":131,"license":"MIT","lastPushAt":"2026-09-25T21:13:51.000Z","score":42}}}},"grade_history":[],"reviews":[]}