Digvijay Singh
IA y CrecimientoMadrid --:--
Trabaja conmigo EN

Spain Open Data

Pregunta a Claude dónde abrir un negocio en España y obtén respuestas con datos públicos, con fuente, hasta el nivel de barrio.

15–17 de octubre de 2026Código abiertoConstruido en público

Pruébalo en Claude
  1. En Claude, abre Ajustes y luego Conectores.
  2. Elige “Añadir conector personalizado” y pega esta URL:https://spain-open-data-mcp-165703905656.europe-west1.run.app/mcp
  3. Haz una pregunta, por ejemplo: “Dirijo la expansión de una cadena de gimnasios mediana. Queremos nuestras 3 próximas sedes en Madrid.”

O ejecútalo en local: uvx spain-open-data-mcp

Código Mapa
Rol
Definido, dirigido, revisado y probado por mí; construido con Claude Code como compañero de ingeniería
Año
Oct 2026
Hecho con
  • Python · MCP SDK
  • INE · OpenStreetMap
  • datos.gob.es
  • Google Cloud Run
  • GitHub Actions
Enlaces

Resumen

Un servidor MCP de código abierto que permite a Claude responder preguntas de negocio sobre España con datos públicos: tamaño de mercado, renta, competencia, alquileres y delincuencia, hasta el nivel de barrio, con cada cifra con fuente, fecha y comprobación. Yo lo definí, dirigí, revisé y probé. Se construyó con Claude Code como compañero de ingeniería, en público, en tres días.

El problema

Los datos públicos españoles pueden responder “¿dónde abro X y cuánto mercado hay?”. El censo, la renta de los hogares, el directorio de empresas y OpenStreetMap tienen cada uno una parte de la respuesta.

Pero están repartidos entre el INE, OpenStreetMap y el catálogo nacional de datos abiertos, y están codificados: el INE numera los distritos, no los nombra. Además, están llenos de trampas: celdas suprimidas, mapas incompletos y años desfasados.

Lo construí para un estratega o fundador que dimensiona un mercado o elige una ubicación en España y necesita una cifra que pueda defender.

Claude respondiendo a una cadena de gimnasios sobre Madrid a través del conector alojado: un gráfico del mercado anual de gimnasios en euros (bajo, base y alto) para diez distritos, y una lista corta con Ciudad Lineal, Hortaleza y Salamanca.
Una pregunta real en Claude a través del conector alojado (18 de octubre de 2026): una cadena de gimnasios elige sus tres próximas sedes en Madrid. Cada cifra coincide con la salida del servidor.

Qué hace

13 herramientas y 3 prompts listos para usar. Las más importantes:

  • Resolución de lugares: convierte “Parquesol, Valladolid” en los códigos correctos del INE.
  • Demografía, renta, negocios y cadenas para cualquier municipio, distrito o sección censal.
  • Tamaño de mercado en euros, con rangos bajo, base y alto.
  • Comparar zonas, área a pie alrededor de una dirección, banda de precios, alquileres y delincuencia registrada.
  • Gráficos, y búsqueda y lectura de datos.gob.es.

Fuentes

  • INE: censo, Padrón, atlas de renta de los hogares, encuesta de presupuestos familiares, directorio de empresas, índice de alquileres y turismo.
  • OpenStreetMap, a partir de una copia mensual.
  • Estadísticas de criminalidad del Ministerio del Interior.
  • datos.gob.es, el catálogo nacional de datos abiertos.

Cada cifra se puede comprobar.

  1. Con fuente y fecha.

    Cada respuesta lleva sus fuentes, el año de los datos y un nivel de confianza, y termina con “Fuentes y advertencias”.

  2. Comprobado antes de decirlo.

    El servidor marca valores suprimidos, muestras pequeñas, datos desfasados, estimaciones y huecos del mapa, para que Claude los diga en lugar de ocultarlos.

  3. Privado desde el diseño.

    Solo datos agregados, y se rechazan las peticiones sobre personas. Las direcciones solo van al geocodificador oficial de España, sin piso ni puerta, y nunca se guardan. Los conjuntos de datos se sirven sin columnas de datos personales.

  4. Barrios, no códigos.

    63.674 nombres de OpenStreetMap situados en secciones censales del INE, así que 3.351 distritos y unas 26.000 secciones tienen nombre: “Valladolid distrito 10 (Parquesol, Girón, La Victoria)”. “Parquesol, Valladolid” funciona como búsqueda.

  5. Ingeniería de datos a medida.

    El archivo del censo del INE de 1,6 GB (14,9 millones de filas) reducido a una descarga de 2,6 MB con el perfil por edad y sexo de cada sección.

Pruebas

El conjunto de prueba tiene 38 preguntas con respuestas comprobadas a mano. Poblaciones y rentas se contrastaron con la API original del INE, de forma independiente al código del servidor.

La capa 1 prueba el servidor contra datos en vivo: superan 36 de 36 preguntas que usan herramientas, y se ejecuta cada semana. La capa 2 prueba a Claude respondiendo a través del servidor:

Claude Sonnet 5.5 respondiendo a través del servidor, 17-10-2026. Entre paréntesis, intervalos de Wilson al 95 %.
MedidaResultado
Cifras requeridas presentes100 % (26/26; 87–100 %)
Criterios de la rúbrica cumplidos96 % (81/84; 90–99 %)
Fuentes citadas100 % (35/35; 90–100 %)
Rangos y advertencias indicados100 % (16/16; 81–100 %)
Peticiones de datos personales rechazadas100 % (9/9; 70–100 %)

El evaluador automático es el mismo modelo que responde. Por eso leí yo mismo 10 de las respuestas, una o dos de cada tipo, elegidas al azar, y puntué cada una sobre 10. Todas sacaron 8,5 o más, incluidas dos de las tres respuestas que el evaluador automático penalizó. Las cifras se volvieron a puntuar una vez tras un error del comprobador que leía 3,6 como 36; las respuestas y la rúbrica son las de la ejecución original. Sus límites: un solo evaluador (yo, el autor), puntuaciones por respuesta, y una comprobación de sentido común, no una tasa de acuerdo medida.

Un resultado en contra de mi propio modelo

Contrasté la puntuación de oportunidad (mercado por negocio competidor, frente a la región) con las aperturas de empresas del INE del primer semestre de 2026. Ordenar las provincias solo por población funcionó mejor en 15 de 19 categorías. La puntuación solo fue mejor en guarderías, gimnasios, colegios privados y veterinarios.

Es un ensayo con trimestres publicados antes de registrar la puntuación, así que prueba el sistema, no la puntuación. Además, las provincias son una unidad gruesa, y el comercio minorista es una sola categoría del INE. La prueba prerregistrada con datos futuros informará a mediados de 2027. La herramienta ahora dice en cada respuesta que la puntuación no es una previsión.

Publiqué un resultado en contra de mi propio modelo y cambié el producto por ello.

Una decisión de expansión de empresa.

Una cadena de gimnasios en Madrid, 18 de octubre de 2026, a través del conector alojado. La pregunta: “Dirijo la expansión de una cadena de gimnasios mediana. Queremos nuestras 3 próximas sedes en Madrid.”

  1. Dimensionó el mercado

    Qué hizo Claude

    Ordenó los 21 distritos por mercado anual de gimnasios (de 7,8 M€ a 37,9 M€), gimnasios en el mapa por cada 10.000 residentes, renta y población.

  2. Eligió tres, con sus pros y contras

    Qué hizo Claude

    Ciudad Lineal: el mayor mercado con poca oferta, 36 M€ al año, 0,62 gimnasios por cada 10.000. Hortaleza: rentas por encima de la media de la ciudad, muchas familias. Salamanca: rentas altas, 0,76 gimnasios por cada 10.000 frente a 1,3 a 1,4 en los distritos vecinos.

    Un error, dicho abiertamente

    Dijo que el porcentaje de niños de Hortaleza (19,2 %) era el más alto de los distritos grandes; Villa de Vallecas (19,7 %) es mayor.

  3. Dijo lo que no podía saber

    Qué hizo Claude

    Se negó a puntuar Usera, cuyo único gimnasio en el mapa para 143.000 residentes es casi seguro un hueco del mapa, no del mercado. Enumeró lo que los datos no muestran: tamaño y gama de precio de los gimnasios, trabajadores de oficina, alquileres, tráfico peatonal.

Conversaciones anteriores en Valladolid mezclaron cifras de distrito y de área a pie en una misma comparación; las instrucciones del servidor se cambiaron para impedirlo (versión 0.1.4).

Ingeniería y publicación

  • Python y el SDK oficial de MCP: stdio en local, Streamable HTTP cuando está alojado.
  • Google Cloud Run en la UE: escala a cero, como máximo 2 instancias, en el nivel gratuito con alerta de presupuesto. Comprobación de cabecera Host y límites por dirección. Una imagen Docker con todos los datos dentro.
  • Integración continua en GitHub Actions: pruebas en Python 3.11 a 3.13, comprobación de tipos, lint, escaneo de secretos con gitleaks y una prueba de humo de la imagen.
  • Tareas programadas actualizan la copia de OpenStreetMap y el atlas cada mes, y abren una incidencia cuando salen nuevos datos de criminalidad.
  • Publicado en PyPI y en el registro oficial de MCP (io.github.digvijaysingh-ai/spain-open-data-mcp) mediante publicación de confianza sin tokens.
  • Construido en público con incidencias y pull requests pequeños, del 15 al 17 de octubre de 2026.

Siguientes pasos

  • Hacer la validación registrada en 2027 y publicarla, salga como salga.
  • Añadir la renta del País Vasco y Navarra, que se publica por separado.
  • Una muestra de evaluaciones más grande y evaluada de forma independiente, y la solicitud al directorio de conectores de Anthropic.

Data: Fuente: INE. Elaboración propia con datos extraídos del sitio web del INE (CC BY 4.0). © OpenStreetMap contributors (ODbL 1.0). Datos a 2026-10-16. Contorno: Natural Earth (dominio público).
Funciona con Claude. Proyecto independiente: sin respaldo, patrocinio ni colaboración de INE, OpenStreetMap ni Anthropic. Código con licencia MIT. Construido con Claude Code como compañero de ingeniería; la definición, la revisión y las pruebas son mías.

Código en GitHub