Vibe Coding #2 - API de Datos + Agente IA | Precios Electricidad OMIE con MCP
Construimos desde cero una API de datos con FastAPI a partir de información del mercado OMIE, integrada con herramientas MCP para que un agente IA pueda consultar precios de electricidad mediante lenguaje natural.
Recibe actualizaciones semanales
Sesiones de live coding, librerías Python para datos energéticos y tutoriales prácticos. Un email por semana, sin relleno.
Resultado
Pregunta “¿Cuál fue el precio de electricidad hoy?” → tabla de precios cuartohorarios y resumen del día en segundos, directamente desde Claude Code vía MCP.

El problema
- Los datos del mercado eléctrico de OMIE están disponibles, pero acceder a ellos requiere descargar ficheros CSV manualmente
- Los formatos son crípticos: columnas separadas por punto y coma, códigos de mercado, ficheros por día
- Para cada pregunta hay que repetir el proceso: descargar, parsear, calcular
- No existe una forma directa de hacer consultas en lenguaje natural sobre estos datos
La solución
Partimos de la web de OMIE, el operador del mercado ibérico de electricidad, que publica datos públicos de precios day-ahead para España y Portugal.

Arquitectura
Diseñamos un sistema de tres capas: los datos brutos de OMIE se procesan a Parquet, una API REST con FastAPI expone los endpoints de consulta, y un servidor MCP conecta esa API al agente IA.

Desarrollo con Claude Code
Claude Code generó la estructura completa del proyecto — descargador de datos, parser de ficheros OMIE, servicio con Pandas para agregaciones, API REST y servidor MCP. Trabajamos con múltiples agentes: uno en Visual Studio Code para el scaffolding inicial y otro en NeoVim para continuar el desarrollo con contexto compartido a través de los ficheros.

La decisión clave: API First
El momento “aha” fue cuando el servidor MCP estaba duplicando toda la lógica de la API. La solución: aplicar el patrón API First — desarrollar primero la API con FastAPI y después montarla automáticamente como servidor MCP con una sola línea:
# mcp_server.py - sin duplicación de código
mcp = FastMCP.from_fastapi(app=api_app, name="OMIE Energy Prices") Cualquier cambio en la API se refleja automáticamente en el servidor MCP.
Probando el sistema
Con la API funcionando, probamos consultas de precios desde un proyecto completamente independiente — sin acceso al código fuente, solo a través del servidor MCP:

Después conectamos el servidor a Cloud.ai como conector público, junto a integraciones como Asana, Slack o Figma:

Dashboard interactivo en el chat
El paso final fue crear una MCP App en TypeScript que renderiza gráficas interactivas directamente dentro de Cloud.ai — sin necesidad de una aplicación web separada:

Referencia
Endpoints API
| Endpoint | Descripción | Ejemplo |
|---|---|---|
GET /api/prices | Precios por rango de fechas | ?start_date=2026-01-20&end_date=2026-01-27 |
GET /api/prices/aggregate | Agregación (mean, min, max, median) | ?operation=mean&column=price_spain |
GET /api/prices/aggregate/grouped | Agregación agrupada por fecha u hora | ?group_by=date&operation=mean |
GET /api/dates | Fechas disponibles | ?market_type=daily |
POST /api/download | Descargar datos de OMIE | ?start_date=2026-01-01&end_date=2026-01-31 |
Estructura del proyecto
Stack
- Python 3.12 / FastAPI / FastMCP / Claude Code / Pandas / UV / Cloudflare Tunnel
Recursos
- Documentación MCP - el protocolo estándar para conectar IA a sistemas externos
- OMIE - Operador del Mercado Ibérico - fuente de datos de precios de electricidad
- OMIE Data - Acceso a ficheros - ficheros CSV descargables
- FastAPI - framework para la API REST
- FastMCP - librería para crear servidores MCP desde FastAPI