esp cyd mcp

Uma implementação abrangente de servidor Model Context Protocol (MCP) para a placa ESP32 CYD (Cheap Yellow Display). Este projeto fornece amplos recursos de controle remoto para a placa ESP32-2432S028R por meio de uma interface MCP baseada em WebSocket.

Documentação

ESP32 CYD MCP Server

Uma implementação abrangente de servidor Model Context Protocol (MCP) para a placa ESP32 CYD (Cheap Yellow Display). Este projeto fornece amplos recursos de controle remoto para a placa ESP32-2432S028R por meio de uma interface MCP baseada em WebSocket.

Recursos

Núcleo do Servidor MCP

  • Implementação do protocolo MCP baseada em WebSocket
  • Compatível com JSON-RPC 2.0
  • Comunicação bidirecional em tempo real
  • Suporte a múltiplos clientes
  • Notificações de eventos

Categorias de Ferramentas

Ferramentas de Display (20+ ferramentas)

  • display.clear - Limpar a tela com cor
  • display.text - Desenhar texto com posicionamento e estilo
  • display.line - Desenhar linhas com espessura
  • display.rectangle - Desenhar contornos de retângulos
  • display.fillRectangle - Desenhar retângulos preenchidos
  • display.circle - Desenhar contornos de círculos
  • display.fillCircle - Desenhar círculos preenchidos
  • display.pixel - Desenhar pixels individuais
  • display.backlight - Controlar luz de fundo (ligar/desligar)
  • display.brightness - Definir brilho do display (0-255)
  • display.rotation - Definir rotação do display (0-3)
  • display.progressBar - Desenhar barras de progresso
  • display.info - Obter informações do display

Ferramentas de Toque (10+ ferramentas)

  • touch.getState - Obter estado atual do toque
  • touch.enable - Ativar/desativar entrada de toque
  • touch.calibrate - Calibrar tela de toque
  • touch.getHistory - Obter eventos de toque recentes
  • touch.simulate - Simular eventos de toque
  • touch.getCalibration - Obter valores de calibração
  • touch.saveCalibration - Salvar calibração em arquivo
  • Detecção de gestos (suporte a deslizar/swipe)

Ferramentas GPIO (15+ ferramentas)

  • gpio.pinMode - Definir modo do pino (entrada/saída/PWM)
  • gpio.digitalWrite - Escrever valor digital
  • gpio.digitalRead - Ler valor digital
  • gpio.analogWrite - Saída PWM
  • gpio.analogRead - Ler valor analógico
  • gpio.attachInterrupt - Anexar interrupções
  • gpio.setPWM - Configurar PWM com frequência
  • gpio.tone - Gerar tons
  • gpio.pulseIn - Medir duração de pulso

Ferramentas de Sensor (10+ ferramentas)

  • sensor.readTemperature - Ler sensor de temperatura
  • sensor.readLight - Ler sensor de luz
  • sensor.readInternalTemp - Temperatura interna do ESP32
  • sensor.readHallSensor - Sensor Hall integrado
  • sensor.readBatteryVoltage - Tensão da fonte de alimentação
  • sensor.readAll - Ler todos os sensores de uma vez
  • sensor.calibrate - Calibrar sensores
  • sensor.getEnvironment - Resumo ambiental

Ferramentas de Rede (15+ ferramentas)

  • network.status - Obter status da rede
  • network.connect - Conectar ao WiFi
  • network.scan - Escanear redes
  • network.startAP - Iniciar ponto de acesso
  • network.httpRequest - Fazer requisições HTTP
  • network.ping - Pingar hosts
  • network.getTime - Obter hora NTP
  • network.setMDNS - Configurar mDNS

Ferramentas de Sistema (20+ ferramentas)

  • system.info - Informações abrangentes do sistema
  • system.restart - Reiniciar ESP32
  • system.sleep - Modos de suspensão profunda/leve
  • system.memory - Estatísticas de memória
  • system.tasks - Informações de tarefas FreeRTOS
  • system.setCPUFrequency - Controle de velocidade da CPU
  • system.performanceMode - Otimização de desempenho
  • system.factoryReset - Restauração de fábrica

Ferramentas de Arquivo (15+ ferramentas)

  • file.list - Listar arquivos/diretórios
  • file.read - Ler conteúdo de arquivos
  • file.write - Escrever em arquivo
  • file.delete - Excluir arquivos
  • file.mkdir - Criar diretórios
  • file.copy - Copiar arquivos
  • file.storage - Estatísticas de armazenamento
  • Suporte a SPIFFS e cartão SD

Ferramentas de Áudio (15+ ferramentas)

  • audio.tone - Reproduzir tom único
  • audio.playMelody - Reproduzir melodias
  • audio.beep - Sons de bipe simples
  • audio.playPattern - Padrões de tons personalizados
  • audio.notification - Sons de notificação
  • audio.alarm - Padrões de alarme
  • audio.setVolume - Controle de volume
  • Melodias predefinidas (Mario, Star Wars, etc.)

Requisitos de Hardware

  • Placa ESP32-2432S028R (CYD)
  • Display TFT ILI9341 de 2,8 polegadas (240x320)
  • Controlador de toque resistivo XPT2046
  • Opcional: cartão SD para armazenamento de arquivos
  • Opcional: Sensores externos (temperatura, luz)

Instalação

  1. Instale PlatformIO ou Arduino IDE
  2. Clone este repositório
  3. Abra o projeto no PlatformIO
  4. Compile e envie para sua placa ESP32 CYD
git clone https://github.com/yourusername/esp32-cyd-mcp
cd esp32-cyd-mcp
pio run -t upload

Configuração

Edite include/config.h para personalizar:

  • Credenciais WiFi
  • Atribuições de pinos
  • Portas do servidor
  • Configurações do display
  • Calibração de sensores

Uso

Conectando ao Servidor MCP

  1. Ligue a placa ESP32 CYD
  2. Conecte-se ao WiFi ou use o modo AP
  3. Encontre o endereço IP do dispositivo no display
  4. Conecte via WebSocket em ws://[IP]:3001

Exemplo de Requisição 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
    }
  }
}

Usando com Claude Desktop

Adicione à sua configuração do Claude Desktop:

{
  "mcpServers": {
    "esp32-cyd": {
      "command": "websocat",
      "args": ["ws://192.168.1.100:3001"]
    }
  }
}

Documentação da API

Invocação de Ferramentas

Todas as ferramentas são invocadas usando o método MCP padrão tools/invoke:

{
  "method": "tools/invoke",
  "params": {
    "name": "tool.name",
    "arguments": { ... }
  }
}

Notificações de Eventos

O servidor envia notificações para vários eventos:

  • touch.event - Eventos de entrada de toque
  • sensor.update - Atualizações periódicas de sensores
  • network.event - Mudanças de estado da rede
  • gpio.interrupt - Eventos de interrupção GPIO

Desenvolvimento

Adicionando Novas Ferramentas

  1. Crie arquivo de cabeçalho em include/tools/
  2. Implemente em src/tools/
  3. Registre as ferramentas no método registerTools()
  4. Adicione a inicialização em main.cpp

Estrutura do Projeto

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

Solução de Problemas

  • Problemas de Conexão WiFi: Verifique as credenciais no config.h
  • Toque Não Funcionando: Execute a ferramenta de calibração de toque
  • Problemas de Display: Verifique a configuração de rotação do display
  • Problemas de Memória: Monitore o heap livre, reduza o uso de ferramentas

Licença

Este projeto é open source e está disponível sob a Licença MIT.

Contribuição

Contribuições são bem-vindas! Envie pull requests ou abra issues para bugs e solicitações de recursos.

Agradecimentos

  • Comunidade ESP32 pelo suporte de hardware
  • Biblioteca TFT_eSPI pelos drivers de display
  • Especificação MCP pelo design do protocolo