Drop-in replacement for esp-idf/tools/idf_py_actions/mcp_ext.py that adds IDF monitor support to idf.py mcp-server.
{
"mcpServers": {
"esp-idf-monitor-mcp": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Drop-in replacement for esp-idf/tools/idf_py_actions/mcp_ext.py that adds IDF monitor support to idf.py mcp-server.
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
Apache-2.0. View license →
Is it maintained?
Last commit 15 days ago. 8 stars.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Persistent memory using a knowledge graph
Privacy-first. MCP is the protocol for tool access. We're the virtualization layer for context.
Pre-build reality check. Scans GitHub, HN, npm, PyPI, Product Hunt — returns 0-100 signal.
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
MCP Security Weekly
Get CVE alerts and security updates for Esp Idf Monitor Mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Serial monitor tools for the ESP-IDF MCP server. Drop-in replacement for tools/idf_py_actions/mcp_ext.py that adds interactive monitor support to idf.py mcp-server.
Upstream PR: espressif/esp-idf#18385
ESP-IDF v6.0 introduced an MCP server (idf.py mcp-server) with tools for build, flash, set-target, and clean. But there's no way for an AI agent to read serial output from the device — no boot logs, no error messages, no runtime diagnostics.
The agent can push firmware to the board but can't see what happens next.
Two technical barriers prevent simply wrapping idf.py monitor:
idf_monitor.py checks sys.stdin.isatty() and refuses to start without a real terminalidf.py spawns idf_monitor.py as a child; killing only the parent leaves the child holding the serial port openFive new MCP tools, all using PTY-wrapped idf.py monitor:
| Tool | Purpose |
|---|---|
| monitor_boot | One-shot: reset board, capture boot log, return it. Supports wait_for to stop early on a pattern match. |
| monitor_start | Start a persistent background monitor session with board reset. |
| monitor_send | Send a command to the device (write-only). |
| monitor_read | Poll buffered output. Supports timeout and wait_for for waiting on responses. |
| monitor_stop | Kill the session and clean up. |
Existing tools (build_project, set_target, flash_project, clean_project) are unchanged.
_idf_cmd() helper eliminates repeated command construction and validates IDF_PATHtermios to prevent command reflection in captured outputos.killpg) to prevent zombie idf_monitor.py processespty/select/termios imports — existing tools still work on WindowsCopy the file over the original:
cp mcp_ext.py $IDF_PATH/tools/idf_py_actions/mcp_ext.py
The five monitor tools will appear alongside the existing ones when the MCP server starts.
First-time setup:
claude mcp add --transport stdio esp-idf -- idf.py mcp-server
Already connected but need to reload (e.g. after updating the file):
In Claude Code, type /mcp → select esp-idf → reconnect.
monitor_boot(capture_duration=20)
Resets the board, captures 20 seconds of output, returns everything.
monitor_boot(wait_for="Sensor scan:", capture_duration=30)
Returns as soon as "Sensor scan:" appears instead of waiting the full 30 seconds. Useful for unit test results, crash detection, or specific init markers.
monitor_start()
monitor_read(timeout=5) # read boot log
monitor_send("STATUS")
monitor_read(wait_for="OK", timeout=3) # wait for response
monitor_stop()
Read My Blog: I Gave My Claude Access to ESP-IDF Monitor — And It Debugged My PCB
Apache-2.0 (same as ESP-IDF)