Build, inspect, flash, and monitor PlatformIO firmware projects with policy-controlled tools.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y platformio-mcp
MCP client config
{
"mcpServers": {
"pio-agent": {
"command": "npx",
"args": [
"-y",
"platformio-mcp"
]
}
}
}
PIO Agent is the open-source, agent-first hardware execution layer for embedded development, built on the PlatformIO MCP runtime.
The canonical 3.1.0 runtime is published. The 3.2.0 candidate makes the
pio-agent CLI the primary adapter (nothing stays running unless asked), and
adds a native Codex panel and public plugin listing metadata. See the
changelog, compatibility guide,
and distribution readiness for implemented
behavior and the publication status of each package name.
PIO Agent is the product and Codex Plugin name. PlatformIO MCP is the underlying MCP runtime and the compatibility identity used by existing installations. The Codex plugin ID, marketplace ID, configuration keys, and skill namespace remain platformio-mcp. On npm, platformio-mcp is the canonical package while pio-mcp and pio-agent are thin compatibility packages that delegate to it. The canonical package also installs both platformio-mcp and pio-agent executable names. This lets existing consumers upgrade without migration while new users see PIO Agent throughout the interface.
It exposes PlatformIO workflows for board discovery, project setup, build, flash, monitor, diagnostics, and task orchestration through:
platformio-mcp / pio-agent)MCP is one adapter. PlatformIO is the first backend.
npm install -g platformio-mcp
pio-agent devices
pio-agent build --project-dir . --json
No server, no client configuration, nothing left running between commands.
Install the skills and point your agent at the pio-agent binary. The
pio-manager skill documents every command.
MCP remains fully supported for clients that prefer it:
claude mcp add platformio -- node /path/to/platformio-mcp/build/index.js
Note that each session that connects this way runs its own server process. The CLI above avoids that. See Manual MCP Config below for other hosts.
agent_validate_project)agent_build_diagnose)agent_safe_pin_audit)agent_flash_monitor_verify).pio-mcp-workspace/ (lastAgentReport.json, boardReport.json)agent_generate_board_report)get_policy_status)agent_resolve_target)agent_monitor_health)cancel_task, list_task_history)All risky operations still honor policy and approval rules.
npx platformio-mcp dashboard --serve
All three npm names are supported. platformio-mcp is canonical; pio-mcp and pio-agent install the same CLI through thin dependency-only aliases:
npx platformio-mcp --help
npx pio-mcp --help
npx pio-agent --help
npx --package platformio-mcp pio-agent devices
npx --package platformio-mcp pio-agent boards --filter esp32
npx platformio-mcp init --board esp32dev --framework arduino --project-dir ./firmware
npx platformio-mcp build --project-dir ./firmware
npx platformio-mcp flash --project-dir ./firmware --port auto
npx platformio-mcp monitor --project-dir ./firmware --port auto --expect BOOT_OK --timeout 30
npx platformio-mcp agent-validate --project-dir ./firmware
npx platformio-mcp agent-build-diagnose --project-dir ./firmware
npx platformio-mcp agent-safe-pin-audit --project-dir ./firmware --board esp32dev
npx platformio-mcp agent-flash-monitor-verify --project-dir ./firmware --expect-all BOOT_OK --reject-patterns "Guru Meditation,Brownout detector,WDT reset" --timeout 45
npx platformio-mcp agent-last-report --project-dir ./firmware
npx platformio-mcp policy-status --project-dir ./firmware
npx platformio-mcp task-status <task-id>
Use --json for machine-readable output:
npx platformio-mcp build --project-dir ./firmware --json
npx platformio-mcp install --cline
npx platformio-mcp install --claude
npx platformio-mcp install --vscode
npx platformio-mcp install --antigravity
npx platformio-mcp install --codex
The PIO Agent Codex Plugin adds the bundled MCP runtime, focused embedded skills, secure in-app dashboard flow, and monitoring-automation guidance. Codex requires one stable plugin identifier, so install selectors and skill namespaces remain platformio-mcp; the installed product is shown as PIO Agent. From a clone:
npm install
npm --prefix web install
npm run plugin:build
node build/cli.js install --codex-plugin
From npm:
npx -y platformio-mcp install --codex-plugin
Start a new Codex task after installation. The legacy install --codex command remains available for MCP-only configuration. See the full Codex Plugin guide for update, uninstall, browser fallback, policy, automation, and rollback details.
The plugin release gates run on Windows, macOS, and Linux, exercise the authenticated dashboard in Chromium, validate the bundled runtime and public tool registry, and keep physical-board evidence in a separate manual workflow. That workflow uploads only bounded, sanitized evidence; raw hardware logs stay on the self-hosted runner. See the release and validation guide.
For headless verification and status inspection, the same CLI also provides plugin validate, target-resolve, monitor-status, monitor-health, task-history, approval-status, and pending-approvals. Run platformio-mcp --help for bounded options and JSON output support.
{
"mcpServers": {
"platformio": {
"command": "npx",
"args": ["-y", "platformio-mcp", "serve"]
}
}
}
On Windows, use npx.cmd if your host requires explicit shim resolution.
PIO Agent enforces policy decisions across CLI and MCP flows.
allow, deny, or requires_approvalPolicy profiles can be selected per-project via .pio-mcp-policy.json:
{
"profile": "flash_requires_approval"
}
Supported profiles:
read_onlybuild_onlymonitor_onlyflash_requires_approvallab_runner (explicit, expiring unattended-lab policy required)lab_adminCLI approval workflows:
npx platformio-mcp approvals --status pending --json
npx platformio-mcp approve <approval-id> --json
npx platformio-mcp deny <approval-id> --json
Codex-facing docs and prompt cookbook:
Getting started:
Guides and references:
Specifications:
Prerequisites:
Local setup:
git clone https://github.com/jl-codes/platformio-mcp.git
cd platformio-mcp
npm install
npm run build
npm run test
npm run smoke-test
CI/CD test tiers:
npm run test:ci:unit runs unit/component coverage used in cross-platform CI.npm run test:e2e:ci runs CI-safe end-to-end tests for agent workflows and CLI wiring..github/workflows/ci.yml runs typecheck, tests, and package smoke checks on pull requests/pushes..github/workflows/hardware-e2e.yml is a manual self-hosted-runner workflow for one explicitly confirmed physical-board write, bundled-plugin protocol checks, post-flash identity/serial assertions, cleanup proof, and sanitized evidence.Contributions are welcome.
MIT. See LICENSE.
The MCP tools decode_backtrace and size_report analyze an explicitly selected project/environment using its registered GNU toolchain. Metadata and memory checks require build permission because they can execute project scripts. Reports identify the exact ELF, retain unresolved crash addresses, and distinguish PlatformIO memory usage from GNU estimates. They do not prove which firmware is on a device. See firmware analysis for inputs, approval behavior, evidence and current limits.