NodeMCU MCP
Um serviço MCP para gerenciar dispositivos IoT NodeMCU (ESP8266).
Documentação
Serviço NodeMCU MCP (Model Context Protocol)
Um serviço Model Context Protocol (MCP) para gerenciar dispositivos NodeMCU. Este serviço fornece tanto uma interface RESTful API/WebSocket padrão quanto implementa o Model Context Protocol para integração com ferramentas de IA como o Claude Desktop.
Visão Geral
O NodeMCU MCP fornece uma solução de gerenciamento para dispositivos IoT ESP8266/NodeMCU com estas capacidades principais:
- Monitorar status e telemetria dos dispositivos
- Enviar comandos para dispositivos remotamente
- Atualizar configurações dos dispositivos
- Integração com assistentes de IA através do protocolo MCP
Visualizações
Visão Geral da Arquitetura do Sistema
Fluxo de Dados Entre Componentes
Como o Claude Desktop Interage com Dispositivos NodeMCU
Recursos
- 🔌 Gerenciamento de Dispositivos: Registrar, monitorar e controlar dispositivos NodeMCU
- 📊 Comunicação em Tempo Real: Interface WebSocket para atualizações em tempo real
- ⚙️ Gerenciamento de Configuração: Atualizar configurações dos dispositivos remotamente
- 🔄 Execução de Comandos: Enviar comandos de reinicialização, atualização e status remotamente
- 📡 Coleta de Telemetria: Coletar dados de sensores e métricas dos dispositivos
- 🔐 Autenticação: Acesso seguro à API com autenticação JWT
- 🧠 Integração com IA: Trabalhe com Claude Desktop e outras ferramentas de IA compatíveis com MCP
Início Rápido
Pré-requisitos
- Node.js 16.x ou superior
- npm ou yarn
- Para o cliente NodeMCU: Arduino IDE com suporte para ESP8266
Instalação
Instalando via Smithery
Para instalar o NodeMCU Manager para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @amanasmuei/nodemcu-mcp --client claude
Via npm (quando publicado)
# Global installation (recommended for MCP integration)
npm install -g nodemcu-mcp
# Local installation
npm install nodemcu-mcp
A partir do código-fonte
# Clone the repository
git clone https://github.com/amanasmuei/nodemcu-mcp.git
cd nodemcu-mcp
# Install dependencies
npm install
# Optional: Install globally for MCP integration
npm install -g .
Configuração
-
Crie um arquivo
.envbaseado no exemplo:cp .env.example .env -
Atualize o arquivo
.envcom suas configurações:# Server Configuration PORT=3000 HOST=localhost # Security JWT_SECRET=your_strong_random_secret_key # Log Level (error, warn, info, debug) LOG_LEVEL=info
Uso
Executando como Servidor de API
Modo de desenvolvimento com reinicialização automática:
npm run dev
Modo de produção:
npm start
Executando como Servidor MCP
Para integração com Claude Desktop ou outros clientes MCP:
npm run mcp
Se instalado globalmente:
nodemcu-mcp --mode=mcp
Opções de Linha de Comando
Usage: nodemcu-mcp [options]
Options:
-m, --mode Run mode (mcp, api, both) [string] [default: "both"]
-p, --port Port for API server [number] [default: 3000]
-h, --help Show help [boolean]
--version Show version number [boolean]
Integração MCP
Este projeto agora usa o SDK oficial TypeScript do Model Context Protocol (MCP) para fornecer integração com Claude para Desktop e outros clientes MCP.
Ferramentas MCP
As seguintes ferramentas estão disponíveis através da interface MCP:
- list-devices: Listar todos os dispositivos NodeMCU registrados e seu status
- get-device: Obter informações detalhadas sobre um dispositivo NodeMCU específico
- send-command: Enviar um comando para um dispositivo NodeMCU
- update-config: Atualizar a configuração de um dispositivo NodeMCU
Usando com Claude para Desktop
Para usar este servidor com Claude para Desktop:
- Instale o Claude para Desktop em https://claude.ai/desktop
- Configure o Claude para Desktop editando
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"nodemcu": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/YOUR/PROJECT/mcp_server_sdk.js"
]
}
}
}
- Reinicie o Claude para Desktop
- Agora você deve ver as ferramentas NodeMCU na interface do Claude para Desktop
Executando o Servidor MCP de Forma Independente
Para executar o servidor MCP diretamente:
npm run mcp
Ou usando a CLI:
./bin/cli.js --mode=mcp
Documentação da API
Autenticação
-
POST /api/auth/login - Login e obtenção de token JWT
{ "username": "admin", "password": "admin123" }Resposta:
{ "message": "Login successful", "token": "your.jwt.token", "user": { "id": 1, "username": "admin", "role": "admin" } } -
POST /api/auth/validate - Validar token JWT
{ "token": "your.jwt.token" }
API de Dispositivos
Todos os endpoints de dispositivos exigem autenticação com token JWT:
Authorization: Bearer your.jwt.token
Listar Dispositivos
GET /api/devices
Resposta:
{
"count": 1,
"devices": [
{
"id": "nodemcu-001",
"name": "Living Room Sensor",
"type": "ESP8266",
"status": "online",
"ip": "192.168.1.100",
"firmware": "1.0.0",
"lastSeen": "2023-05-15T14:30:45.123Z"
}
]
}
Obter Detalhes do Dispositivo
GET /api/devices/:id
Resposta:
{
"id": "nodemcu-001",
"name": "Living Room Sensor",
"type": "ESP8266",
"status": "online",
"ip": "192.168.1.100",
"firmware": "1.0.0",
"lastSeen": "2023-05-15T14:30:45.123Z",
"config": {
"reportInterval": 30,
"debugMode": false,
"ledEnabled": true
},
"lastTelemetry": {
"temperature": 23.5,
"humidity": 48.2,
"uptime": 3600,
"heap": 35280,
"rssi": -68
}
}
Enviar Comando para o Dispositivo
POST /api/devices/:id/command
Solicitação:
{
"command": "restart",
"params": {}
}
Resposta:
{
"message": "Command sent to device",
"command": "restart",
"params": {},
"response": {
"success": true,
"message": "Device restarting"
}
}
Protocolo WebSocket
O servidor WebSocket está disponível no caminho raiz: ws://your-server:3000/
Para detalhes sobre as mensagens do protocolo WebSocket, consulte o código ou o diretório de exemplos.
Configuração do Cliente NodeMCU
Consulte o sketch Arduino no diretório examples para uma implementação completa do cliente.
Etapas Principais
-
Instale as bibliotecas necessárias no Arduino IDE:
- ESP8266WiFi
- WebSocketsClient
- ArduinoJson
-
Configure o sketch com suas configurações de WiFi e servidor:
// WiFi credentials const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // MCP Server settings const char* mcpHost = "your-server-ip"; const int mcpPort = 3000; -
Envie o sketch para o seu dispositivo NodeMCU
Desenvolvimento
Estrutura do Projeto
nodemcu-mcp/
├── assets/ # Logo and other static assets
├── bin/ # CLI scripts
├── examples/ # Example client code
├── middleware/ # Express middleware
├── routes/ # API routes
├── services/ # Business logic
├── .env.example # Environment variables example
├── index.js # API server entry point
├── mcp_server.js # MCP protocol implementation
├── mcp-manifest.json # MCP manifest
└── package.json # Project configuration
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
- Faça um fork do repositório
- Crie sua branch de recurso (
git checkout -b feature/amazing-feature) - Faça commit das suas alterações (
git commit -m 'Add some amazing feature') - Envie para a branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
A Licença MIT é uma licença permissiva que permite que você:
- Use o software comercialmente
- Modifique o software
- Distribua o software
- Use e modifique o software privadamente
O único requisito é que a licença e o aviso de direitos autorais devem ser incluídos com o software.
Agradecimentos
- Model Context Protocol pela especificação de integração
- NodeMCU pela incrível plataforma IoT
- Anthropic pelo Claude Desktop
