About ESP32 Control
ESP32 Control is a Python MCP server that reads status and controls devices through the ESP32 REST API. It is for developers who want AI agents to operate ESP32 devices, locally or remotely.
Key features
- 01Read device status
- 02Set and read GPIO pins
- 03Read ADC voltage
- 04Send raw device commands
- 05Reboot the device
Use cases
- 01Check whether an ESP32 is online
- 02Toggle GPIO outputs
- 03Read analog sensor voltage
- 04Reboot a device through an agent
MCP support
The MCP server exposes ESP32 status, GPIO, ADC, command, and reboot operations as tools for MCP clients, communicating with the device through its REST API over HTTP.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEESP32 MCP Server
Control and read ESP32 IoT devices directly from AI agents (Claude, Cursor, any MCP client).
esp32.status— online / chip / free heap / uptimeesp32.gpio_set— set a GPIO high/lowesp32.gpio_read— read a digital pinesp32.adc_read— read analog voltage (mV)esp32.send_command— raw AT/application commandesp32.reboot— reboot the device
Architecture
AI agent (Claude/Cursor) → this MCP server (Python) → ESP32 REST API → device
The ESP32 runs a tiny MicroPython firmware (esp32_firmware/main.py) exposing a
lightweight REST API on port 80. The MCP server talks to it over HTTP — works
locally and remotely.
Quick start
1. Flash the ESP32 firmware
- Install MicroPython on your ESP32.
- Upload
esp32_firmware/main.pyasmain.py(Thonny ormpremote). - Power on — the device opens a WiFi AP named
ESP32-MCP(password12345678) or you can set STA mode inside the firmware to join your network.
2. Run the MCP server
pip install esp32-mcp
export ESP32_HOST=http://192.168.4.1 # device address (AP default)
esp32-mcp # stdio transport (local MCP client)
For remote agents, run with HTTP transport:
uv run esp32-mcp --transport http --port 8000
3. Add to your AI client
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"esp32": {
"command": "esp32-mcp",
"env": { "ESP32_HOST": "http://192.168.4.1" }
}
}
}
Cursor: Settings → MCP → Add server → esp32-mcp with env ESP32_HOST.
Then just ask: "turn GPIO 2 on", "what's the ADC reading on pin 34?", "reboot the device".
Configuration
| Env var | Default | Meaning |
|---|---|---|
ESP32_HOST | http://192.168.4.1 | ESP32 REST endpoint |
ESP32_TIMEOUT | 8 | request timeout (s) |
Safety
- GPIO outputs are limited to pins
2, 4, 5, 18, 19by default (editGPIO_OUTin the firmware to change). - The firmware only listens on its own network; change the AP password before exposing to the internet.
Pricing
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | All 6 core tools, single device |
| Pro | $9/mo or $90/yr | Multi-device, history, batch control, OTA, webhooks |
Free is not a trial — core tools work forever. Upgrade when you need scale.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.