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.

28 de enero de 2026 16:00 CET 2:00:35
pythonmcpai-agentsenergyapisfastapi

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.

Claude Code consultando precios cuartohorarios OMIE vía MCP: tabla con precios España €/MWh y resumen del día

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.

Curva de casación del mercado eléctrico OMIE mostrando oferta y demanda

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.

Arquitectura del sistema: Usuario → Agente IA → Servidor MCP → FastAPI → Datos OMIE

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.

Claude Code construyendo el servicio OMIE en terminal NeoVim

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:

Primera consulta MCP devolviendo precios OMIE desde una carpeta independiente

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

Conector de datos OMIE añadido a Cloud.ai junto a Asana, Slack, 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:

Dashboard interactivo de precios OMIE renderizado directamente en el chat de Cloud.ai

Referencia

Endpoints API

EndpointDescripciónEjemplo
GET /api/pricesPrecios por rango de fechas?start_date=2026-01-20&end_date=2026-01-27
GET /api/prices/aggregateAgregación (mean, min, max, median)?operation=mean&column=price_spain
GET /api/prices/aggregate/groupedAgregación agrupada por fecha u hora?group_by=date&operation=mean
GET /api/datesFechas disponibles?market_type=daily
POST /api/downloadDescargar datos de OMIE?start_date=2026-01-01&end_date=2026-01-31

Estructura del proyecto

main.pyCLI: download, process, server, mcp
src
omie_service.pyLógica de negocio: descarga, parsing, agregaciones
api.pyAPI REST con FastAPI (/api/*)
mcp_server.pyServidor MCP generado desde FastAPI
app.pyServidor combinado: /api/* + /mcp/*
mcp-appDashboard interactivo (TypeScript)
server.tsServidor MCP con herramientas de visualización
srcUI renderizada en Cloud.ai
data
rawFicheros CSV de OMIE
processedFicheros Parquet optimizados

Stack

  • Python 3.12 / FastAPI / FastMCP / Claude Code / Pandas / UV / Cloudflare Tunnel

Recursos

Índice
Buscar sección

Suscríbete a nuestro newsletter

Recibe insights semanales sobre datos, automatización e IA.

© 2026 Datons. All rights reserved.