原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

PlatformIO

作者:powerdragonfire版本 0.1.0i★ –i在你的电脑上运行
注册名称io.github.powerdragonfire/platformio.mcp

安装

概览

作者提供的说明(英文原文)

PlatformIO for AI agents: build, flash, serial monitor, tests, crash decoding, size reports.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: PLATFORMIO_MCP_POLICY, PLATFORMIO_MCP_PROJECT_DIR, PLATFORMIO_MCP_PIO

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "platformio": {
      "command": "uvx",
      "args": [
        "platformio.mcp"
      ],
      "env": {
        "PLATFORMIO_MCP_POLICY": "your-value",
        "PLATFORMIO_MCP_PROJECT_DIR": "your-value",
        "PLATFORMIO_MCP_PIO": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add platformio --env PLATFORMIO_MCP_POLICY=your-value --env PLATFORMIO_MCP_PROJECT_DIR=your-value --env PLATFORMIO_MCP_PIO=your-value -- uvx platformio.mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "platformio": {
      "command": "uvx",
      "args": [
        "platformio.mcp"
      ],
      "env": {
        "PLATFORMIO_MCP_POLICY": "your-value",
        "PLATFORMIO_MCP_PROJECT_DIR": "your-value",
        "PLATFORMIO_MCP_PIO": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "platformio": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "platformio.mcp"
      ],
      "env": {
        "PLATFORMIO_MCP_POLICY": "your-value",
        "PLATFORMIO_MCP_PROJECT_DIR": "your-value",
        "PLATFORMIO_MCP_PIO": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • PLATFORMIO_MCP_POLICY env
    full (default), build_only, or read_only
  • PLATFORMIO_MCP_PROJECT_DIR env
    Default project directory when a tool is called without project_dir
  • PLATFORMIO_MCP_PIO env
    Explicit path to the pio executable (auto-detected otherwise)

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 powerdragonfire 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32680 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32680 个服务器的 43% 更新
  • 基础检查结果等于或优于此分类中其他 32680 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

PlatformIO 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.0)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

EmbeddedCI BenchPod

作者:embeddedci-com

Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

platformio.mcp

Give your AI coding agent hands on real hardware.

An MCP server for PlatformIO : build, flash (serial or OTA), watch serial, run tests, decode crashes and core dumps, check partition tables, watch heap and power, debug over GDB, shrink firmware.

Python native · no Node · one line to install · works with Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Cline


⚡ 60-second install

You need uv (curl -LsSf https://astral.sh/uv/install.sh | sh). Then:

uvx platformio.mcp install --claude-code      # or --cursor  --claude-desktop  --codex  --windsurf

No PlatformIO on this machine? Add --with-platformio and the server brings PlatformIO Core along. Optional extras: platformio.mcp[coredump] adds the ESP32 core-dump analyzer, platformio.mcp[power] adds the Nordic PPK2 driver.

Any other MCP client (Cline, Zed, Continue, ...)

uvx platformio.mcp install --print
{ "mcpServers": { "platformio": { "command": "uvx", "args": ["platformio.mcp"] } } }

Use "args": ["platformio.mcp[platformio]"] to bundle PlatformIO Core.

As a plugin (Claude Code, Cursor: server + a skill that teaches the loop)

The repo follows the Open Plugins layout: .mcp.json, skills/platformio/SKILL.md, rules/platformio.mdc, plugin.json.

claude plugin marketplace add powerdragonfire/platformio.mcp   # Claude Code

claude plugin install platformio@platformio.mcp

</details>

Already have PlatformIO?

The server finds platformio / pio on your PATH or in ~/.platformio/penv. Override with PLATFORMIO_MCP_PIO=/path/to/pio. Run uvx platformio.mcp doctor to see what the agent will see.

🎬 What it looks like

You: flash the view env and make sure it boots.

Agent → pio_flash_and_verify(env="view", expect="setup done")

`

FAIL: firmware flashed but the boot log matched the failure pattern:

'Guru Meditation Error: Core 1 panic'ed (LoadProhibited)'.

Cause: LoadProhibited. 3/3 addresses resolved:

DisplayTask::run() (display_task.cpp:22) <- DisplayTask::run() (display_task.cpp:23) <- vPortTaskWrapper (port.c:143)

`

Agent: null pointer on line 22 of display_task.cpp, tft_ is used before begin(). Fixing, rebuilding, flashing again.

`

PASS: flashed env view in 14.2s and saw 'setup done' on /dev/cu.usbserial-0001 after 2.1s of boot output.

`

No 40 KB build logs in the context window. No human reading the serial monitor. The agent gets a verdict, a file and a line.

🔁 The loop the agent runs

flowchart LR

A[pio_project_envs] --> B[edit code] B --> C[pio_build] C -- errors with file:line --> B C -- ok --> D[pio_flash_and_verify] D -- PASS --> E([done]) D -- FAIL: decoded backtrace --> B D -- TIMEOUT --> F[pio_monitor_capture] F --> B

🧰 The 40 tools

Group Tools What the agent gets back

🔍 Discover pio_system_info · pio_list_boards · pio_board_info · pio_list_devices PlatformIO version and policy; ~1,700 boards with MCU, clock, RAM and flash sizes; serial ports with the likely dev boards flagged

📁 Project pio_project_init · pio_project_envs · pio_project_metadata A real pio project init (never a hand-written ini); every env with board, framework, monitor and upload settings; defines and include paths

🔨 Build & flash pio_build · pio_upload · pio_upload_ota · pio_clean · pio_list_targets · pio_run_target Status, parsed errors and warnings (file, line, column), RAM/Flash %, last 40 lines, full log path. Extra targets like buildfs , erase . OTA over Wi-Fi to ArduinoOTA boards. Port failures come back classified (busy, permission, missing, no response) with the fix

📟 Serial pio_monitor_start / read / write / stop / list · pio_monitor_capture · pio_port_diagnose Background sessions with a ring buffer, cursor reads, and wait_for regex; or a one-shot capture with nothing to manage. Port diagnosis: who holds it (our session, another process), permissions, the fix

✅ Verify pio_test · pio_check Unity tests with per-case pass/fail and messages; cppcheck / clang-tidy defects by severity with CWE ids

📦 Packages pio_pkg_search / install / uninstall / list / outdated / update · pio_deps_check Registry search and dependency changes that keep platformio.ini in sync; an audit for name collisions, unpinned specs, leftovers, and circular dependencies

🧠 Analyse pio_flash_and_verify · pio_decode_backtrace · pio_size_report Hardware-in-the-loop pass/fail; crash dumps resolved to file:line; where every byte of flash and RAM goes

💾 Flash layout pio_partition_table · pio_coredump ESP32 partition CSV checks (alignment, overlap, fit, OTA slots) and a diff against the table actually on the chip; core dump pulled from flash and decoded

📈 Runtime pio_memory_watch · pio_power_profile Heap and stack telemetry parsed from serial with a leak verdict and per-task headroom; current draw from a serial meter or a Nordic PPK2 with sleep/active split and battery estimate

🐞 Debug pio_debug_start / cmd / stop / list A live GDB session over pio debug : breakpoints, step, backtrace, variables, with MI records parsed into structured results

Every tool returns ok, a one-paragraph summary written for the model, structured fields, and a log_path to the full output. Long output stays on disk under ~/.platformio-mcp/logs (newest 200 files kept).

The tools that go beyond the CLI
What it doesUnder the hood
🚀 `pio_flash_and_verify`Flash, open the port, read until expect matches (pass), a crash signature matches (fail, auto-decoded), or the timeout passes (timeout)pio run -t upload + pyserial; fail_on defaults to Guru Meditation, HardFault, abort(), assert failed, watchdog, brownout, heap corruption
🔁 **pio_test_plan_***Run a declarative hardware test plan for N iterations with cancellation, per-iteration verdicts (pass/fail/timeout/infra_error), and evidence logsReuses upload + serial monitor tools, continues observing for a post-success window, and writes machine-readable reports with source+firmware identity
🩺 `pio_decode_backtrace`Turn an ESP32 Backtrace: 0x400d... dump or a Cortex-M pc/lr dump into function, file, line, inlined frames, cause, reset reasonToolchain located from pio project metadata, then -addr2line -pfiaC on firmware.elf; fixes Xtensa A0 window bits
📊 `pio_size_report`Why is the firmware this big? Flash/RAM %, loaded sections, biggest symbols with file:line, per-file totals, regex filterpio run -t checkprogsize (partition-aware) + GNU size -A + nm -S -C -l --size-sort
💾 `pio_partition_table`Catch the silent ESP32 corruption where an app-only flash leaves an old partition table on the chip; alignment, overlap, OTA slot, and app-fit checksParses the env's partition CSV; read_device=true reads 0x8000 with esptool read_flash and diffs
🧯 `pio_coredump`Pull the core dump from the coredump partition after a crash and decode task, registers, and backtraceesptool read_flash + optional esp-coredump info_corefile (platformio.mcp[coredump])
📈 `pio_memory_watch`Leak, fragmentation, and stack-headroom verdicts from what the firmware already printsParses Free heap:, heap_caps_print_heap_info, vTaskList, uxTaskGetStackHighWaterMark lines; least-squares slope
🔋 `pio_power_profile`Average/min/max/p95 current, sleep vs active split, energy, battery-life estimateA serial meter (INA219 sketch, USB meter log) or a Nordic PPK2 (platformio.mcp[power])
🐞 **pio_debug_***Breakpoints, step, backtrace, and variable inspection through the debug probepio debug --interface=gdb driven over GDB/MI with parsed *stopped events
🌐 `pio_upload_ota`Flash over Wi-Fi with failures mapped to the fix (wrong password, no ArduinoOTA.handle(), firewall, no OTA slot)pio run -t upload --upload-port (espota auto-switch) or espota.py directly
🔌 `pio_port_diagnose`Why the upload cannot open the port: our session, another process, permissions, or a board not in bootloader modelsof/fuser + pio device list; never kills anything
📚 `pio_deps_check`Library name collisions where lib_deps order silently picks the winner, unpinned specs, leftovers, cyclesManifests in .pio/libdeps and lib/, plus the LDF dependency graph with build=true

🔁 Repeatable hardware test plans

Use declarative JSON plans when you need reproducible board validation over many iterations.

{

"plan_version": 1, "name": "SPI loopback", "project_dir": "/abs/project", "environment": "ch32h4_loopback", "device_identity": "bench-ch32h4-01", "board": { "platformio_env": "ch32h4_loopback", "board_id": "genericCH32H4" }, "peripherals": ["SPI loopback"], "pin_mapping": { "SPI_MOSI": "PB15", "SPI_MISO": "PB14" }, "fixture": { "required_wiring": ["PB15 to PB14"] }, "run": { "iterations": 100, "upload_each_iteration": true, "stop_open_sessions": true }, "serial_assertion": { "success_pattern": "SPI_LOOPBACK_OK", "failure_pattern": "panic|HardFault|assert failed|test-failure", "timeout_s": 20, "observation_window_s": 5, "reconnect_attempts": 1 } }

Workflow:

  1. pio_test_plan_validate(plan_path=...)
  2. pio_test_plan_start(plan_path=...)
  3. poll pio_test_plan_status(run_id=...)
  4. optional cancel: pio_test_plan_cancel(run_id=...)

Reports include source revision + dirty state, firmware hash, selected env, and detected device identity. Every non-pass iteration stores evidence logs with references in the JSON report.

An end-to-end CH32H4 fixture + firmware example is in examples/ch32h4-spi-loopback.

🔒 Safety policy

Set PLATFORMIO_MCP_POLICY in the server's env, or pass --policy t

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx