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

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

OtherPythonv0.10.0

Administración fuentes públicas

CI Licencia CC0 Apoya en Ko-fi

Spanish public-sector data sources, catalogued for AI agents and developers: verified endpoints, response shapes, pitfalls, and recipes. Start at llms.txt.

Catálogo de fuentes de datos de la Administración pública española para desarrolladores y agentes de IA: qué hay, dónde está, cómo se llama, qué devuelve y qué falla. Cada endpoint se prueba con una llamada real y cada trampa lleva la fecha en que se comprobó.

Empieza aquí

  • Agente con MCP (Claude, Cursor y cualquier cliente MCP): uvx --from git+https://github.com/BquantFinance/Administracion-fuentes-publicas mcp-catalogo, o Instalar en Cursor. Carga solo la ficha que hace falta (guía).
  • Agente sin MCP: llms-min.txt (7 KB) o llms.txt; todo el catálogo en catalog.json o llms-full.txt.
  • Código: cargadores en Python que ya resuelven las trampas en scripts/clientes/ (BOE y BORME, BDNS, AEMET, INE, PLACSP, DataComex, Saiku), probados contra respuestas reales.

Lo que no dice la documentación oficial

Algunos ejemplos, verificados con llamadas reales:

  • La API del BOE responde 400 si no envías Accept: application/json, y la forma del sumario cambia según el día.
  • La exportación de la BDNS devuelve 50 filas aunque haya miles si no pasas pageSize, y no avisa.
  • Para filtrar un municipio, el INE no quiere su código (02001) sino un Id interno (6124).
  • Muchos servidores .gob.es envían el certificado FNMT sin la intermedia: el navegador entra, curl y requests fallan (arreglo).
  • AEMET responde en dos pasos, con el fichero en ISO-8859-15 y los errores dentro de un HTTP 200.
  • En SIGPAC el municipio es el código del Catastro, no el del INE: un punto de la Puerta del Sol devuelve 28:900, no 28079.
  • Los CSV de los portales PC-Axis de Educación, Cultura e Interior llegan en UTF-8 aunque la cabecera diga ISO-8859-15; leídos como Latin-1 salen «autónoma».

Fuentes catalogadas: 95. 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.
  • 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 oficiales5
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 administrativa11
territorio-cartografiaTerritorio, catastro y cartografía4
meteorologia-climaMeteorología y clima2
medio-ambiente-agua-biodiversidadMedio ambiente, agua y biodiversidad5
energiaEnergía5
sanidad-medicamentosSanidad y medicamentos5
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 universidades2
justicia-interior-seguridadJusticia, interior y seguridad1
cultura-patrimonioCultura y patrimonio2
demografia-migraciones-sociedadDemografía, migraciones y sociedad4
vivienda-urbanismoVivienda y urbanismo1
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.txt / llms-full.txt     entrada para agentes (generado)
indices/*.yaml               recetas por intención, necesidades, identificadores, códigos que son parámetros, rutas muertas (fuente de verdad)
indices/README.md            los cinco índices en texto (generado)
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/            cargadores en Python que resuelven las trampas (BOE y BORME, BDNS, AEMET, INE, PLACSP, DataComex, Saiku)
scripts/clientes/muestras/   respuestas reales recortadas para probar los parsers sin red (python scripts/test_clientes.py)
evals/                       20 tareas con respuesta esperada para medir lo que aporta el repo a un agente
templates/source.yaml        plantilla de ficha
guides/                      guías transversales (identificadores para cruzar datasets, etc.)

Uso rápido

# 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'

Índices para agentes

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

  • 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. El consumo de tokens está pendiente de medir bien: las dos primeras tandas registraron el contexto final de cada agente, no los tokens procesados en todos sus turnos.

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.

Setup from the maintainer

This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.

Package

https://github.com/BquantFinance/Administracion-fuentes-publicas/releases/download/v0.10.0/catalogo-fuentes-publicas.mcpbother

Compatible MCP Clients

Catálogo de fuentes públicas de España works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More