mcp-estacion-meteorologica-iot
by hh186011
README.md
# 🌦️ MCP Estación Meteorológica IoT — BIU
Servidor **Model Context Protocol (MCP)** basado en **FastMCP** que expone los datos
de la estación meteorológica IoT (ESP32-S3 + BME280 → AWS → Supabase) como herramientas
consultables en lenguaje natural desde cualquier cliente MCP compatible (Claude Desktop,
Claude.ai, Cursor, etc.).
Proyecto del caso de estudio **Estación Meteorológica IoT**, Maestría en Estructuras
Computacionales, asignatura CSE611 — Broward International University.
## Arquitectura completa del proyecto
```
ESP32-S3 + BME280 → WiFi → AWS API Gateway → AWS Lambda → Supabase PostgreSQL
↓
[Este servidor MCP en FastMCP Cloud]
↓
Cualquier cliente MCP (Claude, Cursor, etc.)
```
## Base de datos
Tabla `sensor_readings` en Supabase:
| Campo | Tipo | Descripción |
|---|---|---|
| id | UUID | Clave primaria |
| device_id | VARCHAR | Identificador del sensor (ESP32S3_SENSOR_01) |
| temperature | NUMERIC | Temperatura en °C |
| humidity | NUMERIC | Humedad relativa en % |
| pressure | NUMERIC | Presión atmosférica en hPa |
| created_at | TIMESTAMPTZ | Marca de tiempo UTC |
## Instalación local
```bash
pip install -r requirements.txt
cp .env.example .env
# Editar .env con tus credenciales reales de Supabase
python server.py
```
## Variables de entorno
| Variable | Descripción |
|---|---|
| `SUPABASE_URL` | URL del proyecto Supabase |
| `SUPABASE_KEY` | API Key de Supabase (anon o service_role) |
| `DEVICE_ID` | ID del dispositivo a consultar (default: ESP32S3_SENSOR_01) |
## Herramientas (Tools) disponibles
1. **obtener_ultima_lectura()** — Lectura más reciente del sensor
2. **obtener_ultimas_lecturas(limite)** — Historial de lecturas recientes
3. **obtener_datos_grafico(limite)** — Serie temporal para visualización
4. **obtener_resumen_estacion(limite)** — Estadísticas (promedio, máx, mín)
5. **detectar_alertas()** — Alertas según umbrales climáticos de Santiago
6. **datos_para_dashboard(limite)** — Toda la información agregada
## Recursos (Resources) disponibles
- `clima://config/bme280` — Especificaciones técnicas del sensor
- `clima://config/umbrales` — Umbrales de alerta configurados
## Prompts disponibles
1. **prompt_dashboard_tendencias(fecha_inicio, fecha_fin)** — Genera HTML con análisis de tendencias entre fechas
2. **prompt_dashboard_personalizado(tipo_dashboard, limite)** — Genera HTML de dashboard ejecutivo o técnico
## Umbrales de alerta (ajustados para Santiago, Chile)
| Condición | Umbral |
|---|---|
| Temperatura alta | ≥ 30°C |
| Temperatura baja / helada | ≤ 5°C |
| Humedad elevada | ≥ 85% |
| Presión baja (posible lluvia) | < 1000 hPa |
## Despliegue en FastMCP Cloud
1. Subir este repositorio a GitHub
2. Conectar en [gofastmcp.com](https://gofastmcp.com) con tu cuenta de GitHub
3. Configurar las variables de entorno (`SUPABASE_URL`, `SUPABASE_KEY`, `DEVICE_ID`)
4. FastMCP Cloud genera una URL pública tipo `https://tu-proyecto.fastmcp.app/mcp`
## Conexión desde Claude Desktop
```json
{
"mcpServers": {
"estacion-meteorologica": {
"url": "https://tu-proyecto.fastmcp.app/mcp"
}
}
}
```
---
**Última actualización:** Junio 2026
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues