
ESP32 Simulator
io.github.stramanu由 GitHub 帳號 stramanu 發布v0.2.6更新於 Oct 26, 2026
Boot and test ESP32 firmware in a local emulator: UART asserts, buttons, virtual WiFi, screenshots.
概覽
在本機模擬器中啟動並測試 ESP32 韌體,把序列埠日誌、當機資訊、斷言結果與螢幕截圖回傳給助理。
- 可以做什麼
- 啟動韌體並回傳主控台日誌、停止原因、模擬時間與當機資訊
- 斷言指定字串或正規表示式依序出現在主控台,並給出通過/失敗與缺少的那一行
- 依模擬時間戳驅動硬體:按鍵按下與放開、GPIO 電位、旋鈕轉動、UART 輸入、觸控
- 在指定模擬時間擷取開發板顯示器的 PNG 截圖
- 列出支援的晶片、開發板、顯示器與輸入方式,並檢查模擬器與 ROM 是否就緒
- 適用情境
- 適合助理撰寫 ESP-IDF 韌體後需要驗證行為的情況:沒有實體開發板時啟動建置產物、檢查開機日誌、以腳本模擬輸入與顯示輸出,或在 CI 中執行相同檢查。
- 執行需求
- 透過 npx 以 stdio 在本機執行;需要 Node.js 22+,以及 ESP-IDF 或 Docker 來建置韌體,並需執行一次安裝步驟取得模擬器與 mask ROM。預先編譯的模擬器支援 macOS arm64 與 Linux x64/arm64,其他平台需以 Cargo 自行建置。可選環境變數 ESP32SIM_PATH 與 ESP32SIM_ROM_DIR 用來指定模擬器與 ROM 目錄。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ESP32 Simulator,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
esp32sim-mcp
Your agent writes ESP32 firmware, boots it and tests it. No board, no account.
[npm] [CI] [License: MIT] [MCP]
[Claude Code adds a counter to an ESP-IDF project, builds it and verifies it in the emulator]A real Claude Code session, recorded live (only the idle tail is trimmed): it edits ESP-IDF's hello_world, builds it in Docker because ESP-IDF isn't installed, and checks the console in the emulator.
Coding agents are good at writing embedded C. They are blind when it comes to running it: without a board on the desk, "it compiles" is where the feedback loop ends.
esp32sim-mcp closes that loop. It gives Claude Code, Codex, Cursor or any MCP client a set of tools that boot the firmware the agent just built inside esp32sim, a local instruction-level ESP32 emulator, and hand back what the chip printed, whether it crashed, and what was on the display. The agent reads the result, fixes the code and tries again, the way you would with a board on the bench.
- 🔌 No hardware, no cloud. Everything runs on your machine. No account, no token, no board.
- 🧬 Real boot chain. Espressif's mask ROM, the ESP-IDF bootloader and your unmodified app, on ESP32-S3, C3, C6 and the classic ESP32.
- 📡 More than a console. Virtual WiFi access point with DHCP, DNS and NAT, buttons, rotary encoder, GPIO, UART input, touch, and display screenshots.
- 🧪 Assertions, not vibes.
sim_expectreturns pass/fail and the exact line that is missing, so the agent knows what to fix. - ⚡ Fast. Emulation usually runs ahead of real time: on Apple silicon, 8 emulated seconds of a WiFi station joining a network take about 0.6 s.
- 🤖 Comes with a skill.
initinstalls an agent skill that teaches the write → build → simulate → fix loop, including building in Docker when ESP-IDF is not installed.
Quickstart
Then ask your agent for something you can see on the serial console:
Add a counter that prints once a second, build it, and check in the simulator that it reaches 5.
Requirements: Node.js 22+, and ESP-IDF or Docker to build firmware. Prebuilt emulator binaries cover macOS (Apple silicon) and Linux (x64, arm64); see other platforms.
What the agent sees
From a real session, the agent calls:
and gets back:
When something goes wrong, it gets the panic instead (Guru Meditation Error, stack overflow, failed assert, heap corruption) with the log leading up to it, and the missing pattern spelled out.
Tools
All tools take a projectDir (the ESP-IDF build is found through build/flasher_args.json) or explicit appBin/bootloaderBin/ptableBin paths, plus chip, board and wifi (e.g. ssid=demo,psk=secret). Both UART0 and the USB-Serial/JTAG console are captured, so output shows up whichever one the project logs to.
How it works
esp32sim-mcp is a thin, tested layer: it finds the build, translates tool calls into esp32sim's command line, separates and de-duplicates the two consoles, detects panics, and shapes the result for an agent. The emulation itself is esp32sim's work.
Use it in CI
The same checks run without an agent, with exit code 0 on pass and 1 on fail. A GitHub Actions job that builds your firmware and asserts its boot log:
This is what this repository's own CI does with examples/hello-esp32, including a scripted button press.
All CLI commands
Supported chips and boards
Use none for stock ESP-IDF projects. The virtual WiFi access point works on all four chips.
Agent setup
init detects the agents you have and configures each one. It runs in your firmware project by default; --global writes user-level settings instead.
Existing entries are kept, reruns are no-ops, and a config file that does not parse is left untouched.
Claude Code plugin. Instead of init, install the server and skill together as a plugin, for every project:
MCP registry. The server is published to the official MCP registry as io.github.stramanu/esp32sim-mcp. For any other MCP client:
Other platforms
setup installs prebuilt binaries on macOS arm64 and Linux x64/arm64. They are built from source by this repository's emulator workflow with signed build provenance (gh attestation verify <archive> -R stramanu/esp32sim-mcp). Elsewhere, build esp32sim with Cargo (rustup), pinned to the commit this release is tested against:
ESP32SIM_PATH points at an emulator binary elsewhere and ESP32SIM_ROM_DIR at another ROM directory; ROMs inside an ESP-IDF install are found automatically.
How it compares
esparagus is the natural next step: simulate first with esp32sim-mcp, then confirm on a real board.
Limitations
- An emulator is not silicon. Peripherals esp32sim does not model, RF timing and Bluetooth are out of reach here; confirm on hardware before you ship.
- The agent builds the firmware itself (
idf.py, locally or in Docker); the MCP server does not compile. - Windows is untested.
Contributing
Issues and pull requests are welcome. See CONTRIBUTING.md for the development setup and how the end-to-end tests run against the real emulator, and CHANGELOG.md for what changed.
Credits
- esp32sim by Joakim Eriksson, Alice and Mattia Fiumara: the emulator that does the real work (MIT).
- Espressif: ESP-IDF and the mask ROM ELFs (Apache-2.0).
- Model Context Protocol.
License
MIT © Emanuele Strazzullo
來源:README.md,提交 46f0fe2
工具
0版本歷史
1- v0.2.6最新Oct 19, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分