MCP server: One MCP server.

Catálogo de fuentes públicas de España

@bquantfinanceMCP server · External

Fuentes de datos públicos de España verificadas: endpoints, trampas, recetas, identificadores

Government open datav0.10.0CC0-1.0Python
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

MCP Bundlehttps://github.com/BquantFinance/Administracion-fuentes-publicas/releases/download/v0.10.0/catalogo-fuentes-publicas.mcpb

Distributed as an MCP bundle (`https://github.com/BquantFinance/Administracion-fuentes-publicas/releases/download/v0.10.0/catalogo-fuentes-publicas.mcpb`) — download it and import the bundle in your MCP client.

README12 min read

fuentes públicas: datos públicos de España para agentes y devs

Administración fuentes públicas

CI Licencia CC0 Apoya en Ko-fi

Spanish public data, ready to build products on: where each dataset lives, how to call it, what it returns and the traps that change the numbers, verified with real calls; plus code that fetches it already solved. Start at llms-min.txt or the MCP server.

Datos públicos de España listos para construir productos. Para cada fuente: dónde está, cómo pedirla, qué devuelve y qué falla, comprobado con llamadas reales, y código que ya trae el dato resuelto. Pensado para startups, desarrolladores y agentes de IA.

Empieza aquí

  • Con un agente (MCP): uvx --from git+https://github.com/BquantFinance/Administracion-fuentes-publicas mcp-catalogo, Instalar en Cursor, o en Claude Code /plugin marketplace add BquantFinance/Administracion-fuentes-publicas y /plugin install fuentes-publicas@fuentes-publicas. buscar encuentra la fuente, ficha da endpoints y trampas, y perfil_municipio, coyuntura, empresa_nif y el resto traen el dato (herramientas).
  • Con código: pip install "fuentes-publicas-mcp @ git+https://github.com/BquantFinance/Administracion-fuentes-publicas". Clientes que ya resuelven certificados, codificaciones y paginación (scripts/clientes), un almacén local en Parquet para lo que las APIs no dejan consultar (guía) y ejemplos que funcionan.
  • Leyendo: llms-min.txt para orientarse y la ficha de cada fuente en sources/.

Qué puedes construir hoy

Cada producto con piezas que ya funcionan; frescura, volumen medido, licencia y la trampa que más cuesta en indices/productos.yaml. Antes de vender: licencias, cita y datos personales.

productopara quiénfichaspiezas
radar-licitaciones · Avisos de licitaciones nuevas por CPV, provincia u órgano de contrataciónpymes y consultoras que licitan con la Administraciónplacsp-datos-abiertos, dir3-directoriofuentes-radar con ejemplos/radar/ (aviso diario en GitHub Actions: issue, RSS y JSON; CPV, NUTS, importe y palabras); almacen.py sync --fuentes placsp para histórico y búsquedas
inteligencia-competidores · Quién gana los contratos de un sector u órgano, a qué importe y contra cuántas ofertasempresas que licitan, analistas de contratación pública, periodistasplacsp-datos-abiertosalmacen.py (tabla placsp_adjudicaciones y vista adjudicaciones_ultimo); ejemplos/adjudicaciones.py; herramienta almacen_sql
radar-ayudas · Convocatorias de subvenciones nuevas que encajan con el perfil de una empresa (sector, región, tipo de beneficiario)pymes, gestorías y consultoras de financiación públicabdns-api, boe-api-sumariofuentes-radar con ejemplos/radar/ (convocatorias nuevas por palabras y nivel, aviso diario); scripts/clientes/bdns.py (convocatorias y concesiones paginadas, altas por fecha de alta)
kyb-proveedores · Ficha de riesgo de un proveedor o cliente por NIF (ayudas, contratos, actos mercantiles, prohibiciones de contratar)departamentos de compras, fintech de crédito, compliancebdns-api, placsp-datos-abiertos, borme-api-sumario, hacienda-registro-licitadoresherramienta empresa_nif (por NIF o por nombre, que resuelve el NIF con el directorio de la BDNS) y ejemplos/empresa_nif.py; con almacén local añade contratos adjudicados y actos del BORME
leads-sociedades-nuevas · Sociedades recién constituidas por provincia y objeto social, con capital y domicilioproveedores B2B (asesorías, bancos, software de gestión, seguros)borme-api-sumariofuentes-radar con ejemplos/radar/ (constituciones por provincia, objeto social y capital, aviso diario); almacen.py sync --fuentes borme para el histórico; empresa_nif con la denominación para el NIF
informe-ubicacion · Informe de una localización (población, renta, paro, vivienda, criminalidad y colegios, salud y recarga a 1 km) para inmobiliarias, retail y franquiciasinmobiliarias, cadenas de retail y franquicias, proptechine-api-tempus, sepe-estadisticas, interior-criminalidad, mivau-precios-vivienda-alquiler, catastro-ovc, centros-docentes-ccaa, centros-sanitarios-ccaa, dgt-datex-traficoherramienta perfil_municipio con el municipio, una dirección o «lat,lon» (CP, referencia catastral del portal y, con dirección, el bloque cerca) y ejemplos/mi_municipio.py; datos/municipios.csv para pasar entre códigos
comparador-carburantes · Gasolineras más baratas cerca y evolución de precios por estación para conductores y flotasapps de movilidad, gestores de flotas, comparadoresminetur-precios-carburantesejemplos/carburante_cerca.py; almacen.py sync --fuentes carburantes para la serie diaria por estación
monitor-regulatorio · Avisos de normas nuevas o modificadas por materia y del texto vigente de un artículodespachos, compliance, legaltechboe-api-sumario, boe-api-legislacion-consolidada, boe-elifuentes-radar con ejemplos/radar/ (BOE por sección, departamento y palabras, aviso diario); scripts/clientes/boe.py (normas actualizadas ayer y versión vigente de un bloque)
panel-macro · Panel de coyuntura (IPC, paro, PIB, Euríbor, prima de riesgo) para fintech, medios y asesoresfintech, medios, asesores financierosine-api-tempus, bde-estadisticasherramienta coyuntura (consulta.coyuntura); los 90 ZIP del Banco de España con descarga condicional para series completas
precio-electricidad · Precio de la electricidad por cuarto de hora para apps de ahorro, domótica y recarga de vehículosapps de consumo, domótica, puntos de recargaomie-mercadoficha omie-mercado (ficheros marginalpdbc por día y ZIP anual)
buscador-medicamentos · Buscador de medicamentos con presentaciones, prospecto y problemas de suministrofarmacias, healthtech, apps de pacientesaemps-cima-apificha aemps-cima-api (API REST JSON sin clave)
agritech-parcelas · Información de una parcela agrícola por coordenadas (uso, superficie, Red Natura, zonas vulnerables a nitratos)agritech, cooperativas, aseguradoras agrariasmapa-sigpac, catastro-ovcperfil_municipio con «lat,lon» (recinto, uso, superficie y referencia catastral de la parcela, municipio INE); scripts/clientes/ogc.py (recintos por bbox siguiendo next)
viviendas-turisticas · Mapa y censo de viviendas turísticas por municipio, barrio o calle, con licencia frente a anuncios en plataformasproptech, ayuntamientos, asociaciones vecinales, gestores de alquiler, hotelerosviviendas-uso-turistico, ine-api-tempus, cnig-centro-descargasperfil_municipio (bloque viviendas_turisticas: INE en toda España y registro en Cataluña, Madrid y Comunitat Valenciana); los listados con dirección y referencia catastral de Socrata y CKAN; ubicar para cruzar por referencia catastral
eficiencia-energetica-edificios · Etiqueta energética de un edificio y reparto de letras por municipio para rehabilitación, hipotecas verdes y proptechempresas de rehabilitación y ESE, bancos (financiación verde), proptech, administradores de fincascertificados-eficiencia-energetica, cnig-centro-descargas, catastro-ovcperfil_municipio con una dirección (bloque certificados_energeticos: el último certificado por inmueble de la parcela en Cataluña y la Comunitat Valenciana); Socrata con $group para el reparto por municipio en Cataluña; CSV y 7z en Madrid y Andalucía

Lo que no dice la documentación oficial

Algunos ejemplos, comprobados con llamadas reales:

  • La exportación de la BDNS devuelve 50 filas aunque haya miles si no pasas pageSize, y no avisa. Y para sincronizarla no sirve la fecha de concesión: las del 15/01/2025 se siguieron dando de alta hasta agosto de 2026 (el filtro bueno, fechaRegInicio, no está documentado).
  • Para filtrar un municipio, el INE no quiere su código (02001) sino un Id interno (6124). En SIGPAC y Catastro, Madrid es 28:900, no 28079, y otros 4.448 municipios cambian de número (tabla de equivalencias).
  • El IPC del último mes es un avance que se revisa, y el PIB que se publica es el corregido: 0,68 % trimestral en 2026T2 frente al 4,79 % de la serie sin corregir.
  • En el CSV del paro registrado del SEPE, Oza-Cesuras sale con 0 parados y Cerdedo-Cotobade no aparece: sus datos van con los códigos de antes de la fusión.
  • Muchos servidores .gob.es envían el certificado FNMT sin la intermedia: el navegador entra, curl y requests fallan (arreglo).
  • Los CSV de los portales PC-Axis llegan en UTF-8 aunque la cabecera diga ISO-8859-15, y el del SEPE en Windows-1252 aunque diga UTF-8.
  • En GBIF la encina ibérica es sobre todo Quercus rotundifolia (1,3 millones de registros en España); preguntar por Quercus ilex, que es lo que devuelve el buscador de nombres, da 21.322 sin ningún aviso. Y 41,6 de sus 95,8 millones de registros en España son CC BY-NC.

Fuentes catalogadas: 102. Alcance actual: Administración General del Estado y, desde octubre de 2026, las cuatro comunidades más pobladas (Madrid, Cataluña, Andalucía y Comunitat Valenciana) y los ayuntamientos de Madrid y Barcelona. Después: resto de comunidades y entidades locales, Cortes y Poder Judicial, Unión Europea.

Principios

  • Una ficha por fuente, en YAML, con campos fijos validados contra un esquema. Sin prosa de relleno: cada línea ahorra una búsqueda.
  • Fuente única de verdad. Solo se editan sources/**/*.yaml. Índices, catalog.json y llms*.txt se generan.
  • Lo que no dice la documentación oficial. El campo gotchas recoge los detalles que hacen perder horas: cabeceras obligatorias, codificaciones raras, límites no documentados, URLs que cambian. Las trampas silenciosas, las que dan una cifra incompleta o distinta sin ningún error, van aparte en alerts, y el servidor MCP las devuelve lo primero.
  • Verificación explícita. verified lleva la fecha de la última prueba real del endpoint, o null. Un job semanal comprueba que las URLs siguen respondiendo.
  • Top-down. Se cubren primero las fuentes de mayor uso e impacto, sector a sector, hasta cubrirlo todo.

Sectores

sectordescripciónfuentes
legislacion-boletinesLegislación y boletines oficiales6
economia-finanzasEconomía, finanzas y mercados5
hacienda-presupuestosHacienda, tributos y presupuestos6
estadisticaEstadística oficial7
contratacion-subvencionesContratación pública y subvenciones3
empleo-seguridad-socialEmpleo y Seguridad Social3
gobierno-abierto-administracionGobierno abierto, transparencia y organización administrativa12
territorio-cartografiaTerritorio, catastro y cartografía5
meteorologia-climaMeteorología y clima2
medio-ambiente-agua-biodiversidadMedio ambiente, agua y biodiversidad5
energiaEnergía5
sanidad-medicamentosSanidad y medicamentos6
ciencia-investigacionCiencia e investigación (biología, química, geología, oceanografía)7
agricultura-pesca-alimentacionAgricultura, pesca y alimentación4
transporte-movilidadTransporte y movilidad7
comercio-industria-propiedadComercio exterior, industria y propiedad industrial4
educacion-universidadesEducación y universidades3
justicia-interior-seguridadJusticia, interior y seguridad1
cultura-patrimonioCultura y patrimonio2
demografia-migraciones-sociedadDemografía, migraciones y sociedad4
vivienda-urbanismoVivienda y urbanismo3
telecomunicaciones-digitalTelecomunicaciones y sociedad digital1
exterior-cooperacionAcción exterior y cooperación0
consumo-seguridad-alimentariaConsumo y seguridad alimentaria1
defensaDefensa0

Estructura

sources/<sector>/<id>.yaml   fichas (fuente de verdad)
sources/<sector>/README.md   índice del sector (generado)
schema/source.schema.json    esquema de ficha
schema/vocab.yaml            vocabulario controlado: sectores, acceso, auth, formatos
catalog.json                 todo el catálogo (generado)
llms-min.txt, llms.txt, llms-full.txt   entrada para agentes, de menos a más (generado)
indices/*.yaml               productos, recetas por intención, necesidades, identificadores, códigos que son parámetros, rutas muertas (fuente de verdad)
indices/README.md            los seis índices en texto (generado)
ejemplos/                    proyectos pequeños que funcionan (carburante, BOE, licitaciones, municipio, subvenciones)
plugins/, .claude-plugin/    plugin de Claude Code con la skill y el servidor MCP
datos/municipios.csv         los 8.132 municipios con su código INE, Id del INE Tempus, SIGPAC y Catastro, DIR3, NIF, NUTS3 y coordenadas (scripts/municipios.py)
scripts/                     validate.py, build.py, check_links.py, check_recetas.py, check_ejemplos.py, fnmt_bundle.py, mcp_catalogo.py (servidor MCP local)
scripts/clientes/            sesión HTTP, clientes CKAN, Socrata, PC-Axis, ArcGIS y OGC, cargadores (BOE y BORME, BDNS, AEMET, INE, PLACSP, DataComex, Saiku) y almacén local en Parquet
scripts/clientes/muestras/   respuestas reales recortadas para probar los parsers sin red (python scripts/test_clientes.py)
evals/                       24 tareas con respuesta esperada para medir lo que aporta el repo a un agente
templates/source.yaml        plantilla de ficha
guides/                      guías transversales (cliente HTTP, identificadores, servidor MCP, reutilización y datos personales, almacén)

Uso rápido

bash
# Todo el catálogo
curl -s https://raw.githubusercontent.com/BquantFinance/Administracion-fuentes-publicas/main/catalog.json

# Fuentes de un sector con API REST y sin autenticación
curl -s .../catalog.json | jq '.sources[] | select(.sector=="economia-finanzas" and (.access|index("api-rest")) and .auth=="none") | .id'
python
# pip install "fuentes-publicas-mcp @ git+https://github.com/BquantFinance/Administracion-fuentes-publicas"
from fuentes_publicas.clientes import ckan, socrata, pcaxis, arcgis, ogc
from fuentes_publicas.clientes.sesion import sesion  # requests.Session con FNMT, User-Agent, reintentos y bloqueos

pcaxis.tabla(24077)[:3]                 # IPC del INE en CSV: UTF-8 real, coma decimal y periodo sin dato como None
list(socrata.filas("gn9e-3qhr"))        # 87.930 filas de la Generalitat, no las 1.000 que da Socrata sin $limit
list(ckan.filas("cnmc", rid))           # todas las filas del datastore aunque el portal recorte limit a 32.000
ckan.comparar("comunidad-madrid", rec)  # el datastore del padrón tiene 5.000 filas; el CSV, 18.718

Índices para agentes

Además de las fichas, indices/ responde a las preguntas que se hacen antes de elegir una fuente:

  • Productos: qué se puede construir hoy, para quién y con qué piezas.
  • Recetas por intención: procedimientos verificados que encadenan fichas (de un NIF a sus subvenciones y contratos, de unas coordenadas a la referencia catastral, del sumario del BOE al texto consolidado). Cada receta lleva comprobaciones que python scripts/check_recetas.py ejecuta contra los servidores reales.
  • Dónde está cada cosa: necesidades habituales con la ficha que las resuelve y la nota que evita el desvío típico.
  • Identificadores: los códigos que cruzan datasets, con regex, ejemplo, emisor y vías verificadas de conversión.
  • Códigos que son parámetros: valores que las APIs exigen y no se adivinan (Id del INE para tv, países de DataComex, estación de AEMET por capital, productos de carburantes, rangos del BOE), obtenidos con llamadas reales.
  • Rutas muertas: URLs de documentación antigua que ya no sirven y su sustituta.

Medido (evals/): en diez tareas resueltas por el mismo agente con y sin catálogo (dos modelos), el acierto fue el mismo; con catálogo, en las tareas difíciles las llamadas HTTP y los pasos del agente bajan a la mitad y las fallidas casi a cero. En tareas con trampas silenciosas y un modelo pequeño (Haiku, tres repeticiones, tokens medidos turno a turno), el acierto pasa de 3 de 21 sin catálogo a 13 de 21 con el servidor MCP, con un 43 % menos de tokens; con las alertas, las trampas que aún fallaban pasan de 5 a 18 de 18.

Todo en indices/README.md y, para consumo programático, bajo la clave indices de catalog.json. Cada endpoint principal de una ficha lleva example (llamada copiable) y returns (forma de la respuesta vista en esa llamada). python scripts/mcp_catalogo.py expone el catálogo por MCP en local para cargar solo lo necesario (guía).

Contribuir

Lee CONTRIBUTING.md. Resumen: copia templates/source.yaml, rellena, ejecuta python scripts/validate.py && python scripts/build.py, abre un PR.

Licencia

Catálogo y documentación: CC0 1.0. Los datos a los que apuntan las fichas tienen cada uno su propia licencia, indicada en el campo license.

Similar modules

Browse Government open data