8 Commits

Author SHA1 Message Date
44553ebcdb Delete orphaned test_middleware.py
Middleware layer was removed in 78dc7e1 but test file remained,
blocking full test suite collection.
2026-03-02 02:09:08 -07:00
edc1be4cc3 Fix idf_tools_check parser for ESP-IDF v5.x multi-line output
The v5.x check command uses multi-line blocks per tool instead of
single-line "tool version: found" format. Parser now tracks
"Checking tool <name>" headings and "version installed in tools
directory:" lines. Old single-line format still supported.
2026-03-01 23:30:09 -07:00
877fb273d0 Harden IDF integration against review findings
Restrict _build_idf_env to safe env var allowlist (_SAFE_ENV_KEYS)
instead of inheriting full os.environ. Add _resolve_project_path
to confine Tier 2 tool paths within configured project_roots.
Add 76 tests covering parsers, validators, subprocess runners,
tools.json caching, and tool/resource/prompt registration.
2026-03-01 23:26:10 -07:00
dab9c6848e Add Espressif product catalog integration
5 new MCP tools for chip/module discovery, comparison, and procurement
planning using Espressif's public product catalog API. Data is lazily
fetched and cached in-memory with a 24h TTL.

Tools: esp_product_search, esp_product_info, esp_chip_compare,
esp_product_recommend, esp_product_availability
Resource: esp://products/catalog
2026-02-24 13:33:34 -07:00
d5dc9c99c0 Rename package to mcesptool
- Rename mcp-esptool-server -> mcesptool
- Update all imports and references
- Single entry point: mcesptool command
- New home: git.supported.systems/MCP/mcesptool
2026-02-06 21:08:53 -07:00
740164f582 Add download mode, efuse emulation, and watchdog disable to QEMU manager
Smoke tested against real Espressif QEMU fork — esptool successfully
identifies, reads flash_id, and writes firmware to emulated ESP32 via
socket://localhost:5555. Enriched CHIP_MACHINES with per-chip efuse
data, GPIO strap values, and watchdog timer driver names derived from
ESP-IDF's qemu_ext.py.
2026-01-28 16:44:17 -07:00
0d684088a4 Fix esptool skip condition to use shutil.which
The test was hardcoded to check /usr/bin/esptool, but esptool lives
in ~/.local/bin/ on this system. Use shutil.which() to properly
search PATH.
2026-01-28 15:46:55 -07:00
64c1505a00 Add QEMU ESP32 emulation support
Integrate Espressif's QEMU fork for virtual ESP device management:

- QemuManager component with 5 MCP tools (start/stop/list/status/flash)
- Config auto-detects QEMU binaries from ~/.espressif/tools/
- Supports esp32, esp32s2, esp32s3, esp32c3 chip emulation
- Virtual serial over TCP (socket://localhost:PORT) transparent to esptool
- Scan integration: QEMU instances appear in esp_scan_ports results
- Blank flash images initialized to 0xFF (erased NOR flash state)
- 38 unit tests covering lifecycle, port allocation, flash writes
2026-01-28 15:35:22 -07:00