esp-cyd-mcp
Control esp cyd with mcp
Documentation
ESP32 CYD MCP Server
A comprehensive Model Context Protocol (MCP) server implementation for the ESP32 CYD (Cheap Yellow Display) board. This project provides extensive remote control capabilities for the ESP32-2432S028R board through a WebSocket-based MCP interface.
Features
MCP Server Core
- WebSocket-based MCP protocol implementation
- JSON-RPC 2.0 compliant
- Real-time bidirectional communication
- Multiple client support
- Event notifications
Tool Categories
Display Tools (20+ tools)
- `display.clear` - Clear screen with color
- `display.text` - Draw text with positioning and styling
- `display.line` - Draw lines with thickness
- `display.rectangle` - Draw rectangle outlines
- `display.fillRectangle` - Draw filled rectangles
- `display.circle` - Draw circle outlines
- `display.fillCircle` - Draw filled circles
- `display.pixel` - Draw individual pixels
- `display.backlight` - Control backlight on/off
- `display.brightness` - Set display brightness (0-255)
- `display.rotation` - Set display rotation (0-3)
- `display.progressBar` - Draw progress bars
- `display.info` - Get display information
Touch Tools (10+ tools)
- `touch.getState` - Get current touch state
- `touch.enable` - Enable/disable touch input
- `touch.calibrate` - Calibrate touch screen
- `touch.getHistory` - Get recent touch events
- `touch.simulate` - Simulate touch events
- `touch.getCalibration` - Get calibration values
- `touch.saveCalibration` - Save calibration to file
- Gesture detection (swipe support)
GPIO Tools (15+ tools)
- `gpio.pinMode` - Set pin mode (input/output/PWM)
- `gpio.digitalWrite` - Write digital value
- `gpio.digitalRead` - Read digital value
- `gpio.analogWrite` - PWM output
- `gpio.analogRead` - Read analog value
- `gpio.attachInterrupt` - Attach interrupts
- `gpio.setPWM` - Configure PWM with frequency
- `gpio.tone` - Generate tones
- `gpio.pulseIn` - Measure pulse duration
Sensor Tools (10+ tools)
- `sensor.readTemperature` - Read temperature sensor
- `sensor.readLight` - Read light sensor
- `sensor.readInternalTemp` - ESP32 internal temperature
- `sensor.readHallSensor` - Built-in hall sensor
- `sensor.readBatteryVoltage` - Power supply voltage
- `sensor.readAll` - Read all sensors at once
- `sensor.calibrate` - Calibrate sensors
- `sensor.getEnvironment` - Environmental summary
Network Tools (15+ tools)
- `network.status` - Get network status
- `network.connect` - Connect to WiFi
- `network.scan` - Scan for networks
- `network.startAP` - Start access point
- `network.httpRequest` - Make HTTP requests
- `network.ping` - Ping hosts
- `network.getTime` - Get NTP time
- `network.setMDNS` - Configure mDNS
System Tools (20+ tools)
- `system.info` - Comprehensive system information
- `system.restart` - Restart ESP32
- `system.sleep` - Deep/light sleep modes
- `system.memory` - Memory statistics
- `system.tasks` - FreeRTOS task info
- `system.setCPUFrequency` - CPU speed control
- `system.performanceMode` - Performance optimization
- `system.factoryReset` - Factory reset
File Tools (15+ tools)
- `file.list` - List files/directories
- `file.read` - Read file contents
- `file.write` - Write to file
- `file.delete` - Delete files
- `file.mkdir` - Create directories
- `file.copy` - Copy files
- `file.storage` - Storage statistics
- Support for SPIFFS and SD card
Audio Tools (15+ tools)
- `audio.tone` - Play single tone
- `audio.playMelody` - Play melodies
- `audio.beep` - Simple beep sounds
- `audio.playPattern` - Custom tone patterns
- `audio.notification` - Notification sounds
- `audio.alarm` - Alarm patterns
- `audio.setVolume` - Volume control
- Predefined melodies (Mario, Star Wars, etc.)
Hardware Requirements
- ESP32-2432S028R (CYD) board
- 2.8" ILI9341 TFT display (240x320)
- XPT2046 resistive touch controller
- Optional: SD card for file storage
- Optional: External sensors (temperature, light)
Installation
1. Install PlatformIO or Arduino IDE
2. Clone this repository
3. Open the project in PlatformIO
4. Build and upload to your ESP32 CYD board
git clone https://github.com/yourusername/esp32-cyd-mcp
cd esp32-cyd-mcp
pio run -t uploadConfiguration
Edit `include/config.h` to customize:
- WiFi credentials
- Pin assignments
- Server ports
- Display settings
- Sensor calibration
Usage
Connecting to the MCP Server
1. Power on the ESP32 CYD board
2. Connect to WiFi or use the AP mode
3. Find the device IP address on the display
4. Connect via WebSocket to `ws://[IP]:3001`
Example MCP Request
{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/invoke",
"params": {
"name": "display.text",
"arguments": {
"text": "Hello MCP!",
"x": 50,
"y": 100,
"color": "white",
"size": 2
}
}
}Using with Claude Desktop
Add to your Claude Desktop configuration:
{
"mcpServers": {
"esp32-cyd": {
"command": "websocat",
"args": ["ws://192.168.1.100:3001"]
}
}
}API Documentation
Tool Invocation
All tools are invoked using the standard MCP `tools/invoke` method:
{
"method": "tools/invoke",
"params": {
"name": "tool.name",
"arguments": { ... }
}
}Event Notifications
The server sends notifications for various events:
- `touch.event` - Touch input events
- `sensor.update` - Periodic sensor updates
- `network.event` - Network state changes
- `gpio.interrupt` - GPIO interrupt events
Development
Adding New Tools
1. Create header file in `include/tools/`
2. Implement in `src/tools/`
3. Register tools in the `registerTools()` method
4. Add initialization in `main.cpp`
Project Structure
esp32-cyd-mcp/
├── include/
│ ├── config.h # Configuration
│ ├── mcp_server.h # MCP server core
│ └── tools/ # Tool headers
├── src/
│ ├── main.cpp # Main application
│ ├── mcp_server.cpp # MCP implementation
│ └── tools/ # Tool implementations
├── platformio.ini # PlatformIO config
└── README.mdTroubleshooting
- WiFi Connection Issues: Check credentials in config.h
- Touch Not Working: Run touch calibration tool
- Display Issues: Verify display rotation setting
- Memory Issues: Monitor free heap, reduce tool usage
License
This project is open source and available under the MIT License.
Contributing
Contributions are welcome! Please submit pull requests or open issues for bugs and feature requests.
Acknowledgments
- ESP32 community for hardware support
- TFT_eSPI library for display drivers
- MCP specification for protocol design
Frequently asked questions
What is esp-cyd-mcp?
esp-cyd-mcp is Control esp cyd with mcp
How do I install esp-cyd-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is esp-cyd-mcp open source?
Yes — it is hosted on GitHub at https://github.com/ofryl/esp-cyd-mcp and has 3 stars.
Related MCP tools
Connect an MCP Client that only supports local (stdio) servers to a Remote MCP Server, with auth support: TypeScript-based implementation.
Clojure MCP Trusted by 600+ developers. Trusted by 600+ developers. Trusted by 600+ developers.
5. Update .env file in the root directory with your mem0 API key: for the Model Context Protocol. Enhance AI assistants with powerful integrations.
- Discover available MCP servers from our curated registry TypeScript-based implementation.
Model Context Protocol integration for Python. Enhance AI assistants with powerful Python-based capabilities and integration support.
This repository contains Model Context Protocol (MCP) servers that enable MCP clients (like Claude Desktop or the cline.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP