Skip to main content

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.

Metadata

Release files for mcesptool 2026.7.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcesptool 2026.7.5
File Size Uploaded Provenance
mcesptool-2026.7.5.tar.gz 204.4 kB Without provenance Details

Release files / mcesptool-2026.7.5.tar.gz

Download URL mcesptool-2026.7.5.tar.gz
Size 204.4 kB
Tags Source
SHA-256 checksum
How to use checksums
891cb034e098301dd0232e18b26a052ebfea31faa772f89c4e5d2b85fc2c497d
BLAKE2b-256 checksum
How to use checksums
37d78f04891b1d94d51548b66dab68712d25e2366b7d8af71ea02c4ba6349978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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}

Security for mcesptool 2026.7.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page