esp cyd mcp
Una implementación integral de servidor de Model Context Protocol (MCP) para la placa ESP32 CYD (Cheap Yellow Display). Este proyecto proporciona amplias capacidades de control remoto para la placa ESP32-2432S028R a través de una interfaz MCP basada en WebSocket.
Documentación
Servidor MCP ESP32 CYD
Una implementación integral de servidor de Protocolo de Contexto de Modelo (MCP) para la placa ESP32 CYD (Pantalla Amarilla Económica). Este proyecto proporciona amplias capacidades de control remoto para la placa ESP32-2432S028R a través de una interfaz MCP basada en WebSocket.
Características
Núcleo del Servidor MCP
- Implementación del protocolo MCP basada en WebSocket
- Compatible con JSON-RPC 2.0
- Comunicación bidireccional en tiempo real
- Soporte para múltiples clientes
- Notificaciones de eventos
Categorías de Herramientas
Herramientas de Pantalla (más de 20 herramientas)
display.clear- Limpiar pantalla con colordisplay.text- Dibujar texto con posicionamiento y estilodisplay.line- Dibujar líneas con grosordisplay.rectangle- Dibujar contornos de rectángulosdisplay.fillRectangle- Dibujar rectángulos rellenosdisplay.circle- Dibujar contornos de círculosdisplay.fillCircle- Dibujar círculos rellenosdisplay.pixel- Dibujar píxeles individualesdisplay.backlight- Controlar retroiluminación encendida/apagadadisplay.brightness- Establecer brillo de pantalla (0-255)display.rotation- Establecer rotación de pantalla (0-3)display.progressBar- Dibujar barras de progresodisplay.info- Obtener información de pantalla
Herramientas Táctiles (más de 10 herramientas)
touch.getState- Obtener estado táctil actualtouch.enable- Habilitar/deshabilitar entrada táctiltouch.calibrate- Calibrar pantalla táctiltouch.getHistory- Obtener eventos táctiles recientestouch.simulate- Simular eventos táctilestouch.getCalibration- Obtener valores de calibracióntouch.saveCalibration- Guardar calibración en archivo- Detección de gestos (soporte de deslizamiento)
Herramientas GPIO (más de 15 herramientas)
gpio.pinMode- Establecer modo de pin (entrada/salida/PWM)gpio.digitalWrite- Escribir valor digitalgpio.digitalRead- Leer valor digitalgpio.analogWrite- Salida PWMgpio.analogRead- Leer valor analógicogpio.attachInterrupt- Adjuntar interrupcionesgpio.setPWM- Configurar PWM con frecuenciagpio.tone- Generar tonosgpio.pulseIn- Medir duración de pulso
Herramientas de Sensores (más de 10 herramientas)
sensor.readTemperature- Leer sensor de temperaturasensor.readLight- Leer sensor de luzsensor.readInternalTemp- Temperatura interna del ESP32sensor.readHallSensor- Sensor Hall incorporadosensor.readBatteryVoltage- Voltaje de fuente de alimentaciónsensor.readAll- Leer todos los sensores a la vezsensor.calibrate- Calibrar sensoressensor.getEnvironment- Resumen ambiental
Herramientas de Red (más de 15 herramientas)
network.status- Obtener estado de rednetwork.connect- Conectar a WiFinetwork.scan- Escanear redesnetwork.startAP- Iniciar punto de accesonetwork.httpRequest- Realizar solicitudes HTTPnetwork.ping- Hacer ping a hostsnetwork.getTime- Obtener hora NTPnetwork.setMDNS- Configurar mDNS
Herramientas del Sistema (más de 20 herramientas)
system.info- Información integral del sistemasystem.restart- Reiniciar ESP32system.sleep- Modos de suspensión profunda/ligerasystem.memory- Estadísticas de memoriasystem.tasks- Información de tareas FreeRTOSsystem.setCPUFrequency- Control de velocidad de CPUsystem.performanceMode- Optimización de rendimientosystem.factoryReset- Restablecimiento de fábrica
Herramientas de Archivos (más de 15 herramientas)
file.list- Listar archivos/directoriosfile.read- Leer contenido de archivosfile.write- Escribir en archivofile.delete- Eliminar archivosfile.mkdir- Crear directoriosfile.copy- Copiar archivosfile.storage- Estadísticas de almacenamiento- Soporte para SPIFFS y tarjeta SD
Herramientas de Audio (más de 15 herramientas)
audio.tone- Reproducir tono únicoaudio.playMelody- Reproducir melodíasaudio.beep- Sonidos de pitido simplesaudio.playPattern- Patrones de tono personalizadosaudio.notification- Sonidos de notificaciónaudio.alarm- Patrones de alarmaaudio.setVolume- Control de volumen- Melodías predefinidas (Mario, Star Wars, etc.)
Requisitos de Hardware
- Placa ESP32-2432S028R (CYD)
- Pantalla TFT ILI9341 de 2.8" (240x320)
- Controlador táctil resistivo XPT2046
- Opcional: Tarjeta SD para almacenamiento de archivos
- Opcional: Sensores externos (temperatura, luz)
Instalación
- Instalar PlatformIO o Arduino IDE
- Clonar este repositorio
- Abrir el proyecto en PlatformIO
- Compilar y subir a su placa ESP32 CYD
git clone https://github.com/yourusername/esp32-cyd-mcp
cd esp32-cyd-mcp
pio run -t upload
Configuración
Editar include/config.h para personalizar:
- Credenciales WiFi
- Asignaciones de pines
- Puertos del servidor
- Configuración de pantalla
- Calibración de sensores
Uso
Conexión al Servidor MCP
- Encender la placa ESP32 CYD
- Conectar a WiFi o usar el modo AP
- Encontrar la dirección IP del dispositivo en la pantalla
- Conectar vía WebSocket a
ws://[IP]:3001
Ejemplo de Solicitud MCP
{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/invoke",
"params": {
"name": "display.text",
"arguments": {
"text": "Hello MCP!",
"x": 50,
"y": 100,
"color": "white",
"size": 2
}
}
}
Uso con Claude Desktop
Agregar a su configuración de Claude Desktop:
{
"mcpServers": {
"esp32-cyd": {
"command": "websocat",
"args": ["ws://192.168.1.100:3001"]
}
}
}
Documentación de la API
Invocación de Herramientas
Todas las herramientas se invocan usando el método estándar MCP tools/invoke:
{
"method": "tools/invoke",
"params": {
"name": "tool.name",
"arguments": { ... }
}
}
Notificaciones de Eventos
El servidor envía notificaciones para varios eventos:
touch.event- Eventos de entrada táctilsensor.update- Actualizaciones periódicas de sensoresnetwork.event- Cambios de estado de redgpio.interrupt- Eventos de interrupción GPIO
Desarrollo
Agregar Nuevas Herramientas
- Crear archivo de encabezado en
include/tools/ - Implementar en
src/tools/ - Registrar herramientas en el método
registerTools() - Agregar inicialización en
main.cpp
Estructura del Proyecto
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.md
Solución de Problemas
- Problemas de Conexión WiFi: Verificar credenciales en config.h
- Táctil No Funciona: Ejecutar herramienta de calibración táctil
- Problemas de Pantalla: Verificar configuración de rotación de pantalla
- Problemas de Memoria: Monitorear heap libre, reducir uso de herramientas
Licencia
Este proyecto es de código abierto y está disponible bajo la Licencia MIT.
Contribuciones
¡Las contribuciones son bienvenidas! Por favor, envíe solicitudes de extracción o abra problemas para errores y solicitudes de funciones.
Agradecimientos
- Comunidad ESP32 por el soporte de hardware
- Biblioteca TFT_eSPI para controladores de pantalla
- Especificación MCP para el diseño del protocolo