🌦️ 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
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
- obtener_ultima_lectura() — Lectura más reciente del sensor
- obtener_ultimas_lecturas(limite) — Historial de lecturas recientes
- obtener_datos_grafico(limite) — Serie temporal para visualización
- obtener_resumen_estacion(limite) — Estadísticas (promedio, máx, mín)
- detectar_alertas() — Alertas según umbrales climáticos de Santiago
- datos_para_dashboard(limite) — Toda la información agregada
Recursos (Resources) disponibles
clima://config/bme280— Especificaciones técnicas del sensorclima://config/umbrales— Umbrales de alerta configurados
Prompts disponibles
- prompt_dashboard_tendencias(fecha_inicio, fecha_fin) — Genera HTML con análisis de tendencias entre fechas
- 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
- Subir este repositorio a GitHub
- Conectar en gofastmcp.com con tu cuenta de GitHub
- Configurar las variables de entorno (
SUPABASE_URL,SUPABASE_KEY,DEVICE_ID) - FastMCP Cloud genera una URL pública tipo
https://tu-proyecto.fastmcp.app/mcp
Conexión desde Claude Desktop
{
"mcpServers": {
"estacion-meteorologica": {
"url": "https://tu-proyecto.fastmcp.app/mcp"
}
}
}
---
Última actualización: Junio 2026











