Skip to main content

FastMCP server for ESP32/ESP8266 development with esptool integration

Project description

mcesptool

FastMCP server for ESP32/ESP8266 development workflows via Model Context Protocol.

Features

  • Chip Control: Advanced ESP device detection, connection, and control
  • Flash Operations: Comprehensive flash memory management with safety features
  • Security Management: ESP security features including secure boot and flash encryption
  • Production Tools: Factory programming and batch operations
  • Middleware System: Universal CLI tool integration with bidirectional MCP communication
  • ESP-IDF Integration: Host application support for hardware-free development
  • QEMU Emulation: Virtual ESP32 devices for testing without physical hardware

Quick Start

Installation

# Install with uvx (recommended)
uvx mcesptool

# Or install in project
uv add mcesptool

Claude Code Integration

# Add to Claude Code
claude mcp add mcesptool "uvx mcesptool"

Development Setup

# Clone and setup
git clone <repository>
cd mcp-esptool
make dev

# Run development server
make run-debug

# Run tests
make test

Architecture

The server implements a component-based architecture with middleware for CLI tool integration:

  • Components: Specialized modules for different ESP development workflows
  • Middleware: Universal pattern for intercepting and redirecting CLI tool output to MCP context
  • Configuration: Environment-based configuration with auto-detection
  • Production Ready: Docker support with development and production modes

Components

  • ChipControl: Device detection, connection management, reset operations
  • FlashManager: Flash operations with verification and backup
  • PartitionManager: Partition table management and OTA support
  • SecurityManager: Security features and eFuse management
  • FirmwareBuilder: ESP-IDF integration and binary operations
  • OTAManager: Over-the-air update workflows
  • ProductionTools: Factory programming and quality control
  • Diagnostics: Memory dumps and performance profiling
  • QemuManager: QEMU-based ESP32 emulation with download mode, efuse, and flash support

Flash Operations

Advanced flash management tools for efficient firmware deployment:

Tool Description
esp_flash_firmware Flash a single binary to device
esp_flash_multi Flash multiple binaries at different addresses in one operation
esp_verify_flash Verify flash contents match a file without re-flashing
esp_flash_read Read flash memory to a file
esp_flash_erase Erase flash regions
esp_flash_backup Create complete flash backup

Multi-File Flashing

Flash bootloader, partition table, and app in a single operation:

esp_flash_multi(
    files=[
        {"address": "0x0", "path": "bootloader.bin"},
        {"address": "0x8000", "path": "partitions.bin"},
        {"address": "0x10000", "path": "app.bin"}
    ],
    port="/dev/ttyUSB0",
    verify=True
)

RAM Loading (Development Iteration)

Test firmware changes without wearing out flash:

Tool Description
esp_elf_to_ram_binary Convert ELF to RAM-loadable binary
esp_load_ram Load and execute binary in RAM
esp_serial_monitor Capture serial output from device

Workflow

# 1. Build your ESP-IDF project
idf.py build

# 2. Convert ELF to RAM binary
esp_elf_to_ram_binary(elf_path="build/my_app.elf", chip="esp32s3")

# 3. Load to RAM and execute (no flash wear!)
esp_load_ram(binary_path="my_app-ram.bin", port="/dev/ttyUSB0")

# 4. Capture output
esp_serial_monitor(port="/dev/ttyUSB0", duration_seconds=10)

Note: RAM loading requires ELFs built without secure boot (CONFIG_SECURE_BOOT=n). Some PlatformIO defaults may be incompatible.

QEMU Emulation

Run virtual ESP32 devices without physical hardware. Requires Espressif's QEMU fork:

# Install via ESP-IDF tools
source /path/to/esp-idf/export.sh
python3 $IDF_PATH/tools/idf_tools.py install qemu-xtensa qemu-riscv32

The server auto-detects QEMU binaries from ~/.espressif/tools/. Once available, five tools are exposed:

Tool Description
esp_qemu_start Launch a virtual ESP device (supports esp32, esp32s3, esp32c3)
esp_qemu_stop Stop a running instance
esp_qemu_list List all running instances
esp_qemu_status Detailed instance info
esp_qemu_flash Write firmware to a virtual device's flash

Virtual devices appear in esp_scan_ports alongside physical hardware, connected via socket://localhost:<port>.

Configuration

Configure via environment variables or .env file:

ESPTOOL_PATH=esptool
ESP_DEFAULT_BAUD_RATE=460800
ESP_IDF_PATH=/path/to/esp-idf
MCP_ENABLE_PROGRESS=true
PRODUCTION_MODE=false

Docker

# Development with hot reload
make docker-up

# Production deployment
DOCKER_TARGET=production make docker-up

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcesptool-2026.2.25.tar.gz (84.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcesptool-2026.2.25-py3-none-any.whl (78.7 kB view details)

Uploaded Python 3

File details

Details for the file mcesptool-2026.2.25.tar.gz.

File metadata

  • Download URL: mcesptool-2026.2.25.tar.gz
  • Upload date:
  • Size: 84.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcesptool-2026.2.25.tar.gz
Algorithm Hash digest
SHA256 03cb3044791a3ec33431c5681f9f1c3d51032f8020b40f5acb5c0dc636d9dcf6
MD5 d341b8773e46fab8e37529ece4d1d836
BLAKE2b-256 dc634699fb195e6c808668db827217b36d8b22e7aa2806dbe2c71f2f35c6214a

See more details on using hashes here.

File details

Details for the file mcesptool-2026.2.25-py3-none-any.whl.

File metadata

  • Download URL: mcesptool-2026.2.25-py3-none-any.whl
  • Upload date:
  • Size: 78.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcesptool-2026.2.25-py3-none-any.whl
Algorithm Hash digest
SHA256 a86fe451e074ded8e29730a71af2cd56f0d19c2b567c7e20119113e49c6b327e
MD5 6793daf602c2aa92bcf7a65c050ccf31
BLAKE2b-256 02ef4e0eae04eada4c85c0b86fc6e3c9f684848e8b5474fc844d01e464d40f9f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page