# ESP32 Control [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/contentforge-press/esp32-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/esp32-control

## Description
Control ESP32 IoT devices from AI agents: status, GPIO, ADC, reboot.

## Claude Desktop Quick Installation
No confirmed install details yet, so no config is published. Follow the setup steps in the repository above.

## Documentation

## What ESP32 Control MCP server does

ESP32 Control MCP server exposes operations for an ESP32 device to an MCP-compatible AI client. The device reports whether it is online, its chip information, available heap, and uptime. Agents can also set supported GPIO outputs high or low, read digital pin states, measure analog voltage in millivolts, send a raw AT or application command, and reboot the device.

The repository includes MicroPython firmware for the ESP32 and a Python MCP server. The firmware provides the HTTP endpoint that the server calls. The design supports a device connected locally through its access point or remotely through a configured network address.

## How it works

The request path is AI client to MCP server, then to the ESP32 REST API. The server communicates with the device over HTTP, while the AI client communicates with the server through MCP. Local clients can launch the command with stdio transport. A separate HTTP transport is available when an agent needs to reach the MCP server remotely.

The included firmware starts an ESP32 Wi-Fi access point named `ESP32-MCP` with password `12345678`, unless it is configured for station mode in the firmware. The default device endpoint is `http://192.168.4.1`.

## Setup and configuration

Install MicroPython on the ESP32, then upload `esp32_firmware/main.py` as `main.py` using a tool such as Thonny or `mpremote`. After powering the board, configure the device’s network mode as needed.

Install the server with `pip install esp32-mcp`. Set `ESP32_HOST` to the ESP32 REST endpoint before running `esp32-mcp`. `ESP32_TIMEOUT` controls the request timeout in seconds and defaults to 8. Run without extra transport options for stdio, or use `uv run esp32-mcp --transport http --port 8000` for HTTP transport.

Claude Desktop can add the server through its MCP configuration using the `esp32-mcp` command and `ESP32_HOST`. Cursor can add it from Settings, MCP, and Add server.

## Tools and capabilities

- Check online state, chip details, free heap, and uptime with `esp32.status`.
- Set a GPIO output high or low with `esp32.gpio_set`.
- Read a digital pin with `esp32.gpio_read`.
- Read analog voltage in millivolts with `esp32.adc_read`.
- Send an AT or application command with `esp32.send_command`.
- Restart the board with `esp32.reboot`.

## Limitations and notes

By default, GPIO outputs are restricted to pins 2, 4, 5, 18, and 19. Changing the `GPIO_OUT` setting in the firmware changes that list. The firmware listens on the device’s network, so change the default access-point password before exposing the device beyond a controlled network.

The free offering supports one device and includes the six core tools. Multi-device operation, history, batch control, OTA, and webhooks are listed under the paid Pro plan. The project is licensed under MIT.

The ESP32 Control MCP server requires the ESP32 firmware to be installed and reachable at the configured HTTP address; it does not operate as a standalone simulator.

_Full upstream README: https://allmcps.com/mcp/esp32-control/readme_

