mcpField
A
Andorra public sources

Andorra public sources

Local
github.com/joalavedraLegal & Government0Updated 2w ago

About Andorra public sources

An educational catalog and Python client collection for discovering and querying public sources in Andorra. It documents source behavior and reuse terms, and offers selected live data through Python, an MCP server, and a citation-based assistant.

Key features

  1. 01Catalog of Andorran public sources
  2. 02Python clients for selected sources
  3. 03Source behavior and reuse documentation
  4. 04Local search with live page retrieval
  5. 05Answers that cite sources

Use cases

  1. 01Finding official statistics and public procedures
  2. 02Checking source access and reuse conditions
  3. 03Answering questions about Andorran procedures with citations

MCP support

The stdio MCP server exposes a selection of live data from the catalog to MCP clients. The project documents sources including the BOPA bulletin, statistics, maps, e-tramits and government pages.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"joalavedra-andorra-fonts-publiques": {
"command": "uvx",
"args": [
"fonts-andorra"
]
}
}
}
Run commanduvx fonts-andorra

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypifonts-andorra0.2.0

Tools

12

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
limitintegerNo
querystringYes

Details

From the project README

Fonts públiques d'Andorra

CI

Fonts públiques d'Andorra

Catàleg educatiu i petits clients Python per trobar i consultar les fonts públiques d'Andorra. Documenta com són els endpoints, les condicions de reutilització, el comportament verificat i els paranys pràctics, i exposa una selecció de dades en directe a través de Python, un servidor MCP i un assistent que cita les fonts.

Projecte educatiu independent. No està afiliat al Govern d'Andorra ni a cap de les institucions esmentades.

Fonts

IDFontSectorAccés
afa-feedsAndorran Financial Authority feedsFinances i regulaciófeed
bopaButlletí Oficial del Principat d'AndorraLegislació i butlletins oficialsapi, downloads
carburantsFuel stations and reference pricesEnergia i carburantsarcgis-rest
cass-estadistiquesCASS statistics downloadsSeguretat socialdownloads
consell-general-feedsConsell General news feedsParlament i informació cívicafeed
e-tramitse-tramits proceduresServeis públics i tràmitshtml
estadistica-apiAndorra Department of Statistics APIEstadística oficialapi
govern-adGovern d'Andorra information pagesServeis públics i tràmitshtml
meteo-admeteo.ad station chartsMeteorologia i climahtml
sig-arcgisGovern d'Andorra ArcGIS EnterpriseGeografia i cartografiaarcgis-rest
transparenciaTransparency portalTransparència i administració públicahtml, downloads

Les condicions de reutilització de cada font es detallen a Condicions de les dades d'origen i a cada fitxa de sources/.

Inici ràpid

Cal Python 3.10 o posterior:

python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/fonts-andorra-mcp

El servidor MCP es comunica per stdio. Configura Claude Desktop, Claude Code o Cursor amb l'ordre instal·lada:

{
  "mcpServers": {
    "andorra-fonts-publiques": {
      "command": "/absolute/path/to/andorra-fonts-publiques/.venv/bin/fonts-andorra-mcp"
    }
  }
}

Instal·lar el servidor MCP

Executa el servidor publicat amb uvx:

uvx fonts-andorra

Configuració de Claude Desktop:

{
  "mcpServers": {
    "andorra": {
      "command": "uvx",
      "args": ["fonts-andorra"]
    }
  }
}

Assistent amb cites

Fes una pregunta amb cites fent servir l'API REST de Gemini. Defineix GEMINI_API_KEY a l'entorn; mai no es desa en aquest repositori:

GEMINI_API_KEY=... .venv/bin/fonts-andorra-ask "Quant triga l'autorització inicial de residència i treball?"
.venv/bin/fonts-andorra-ask "Where can I find official unemployment statistics?" --lang en --json

Els clients també es poden importar directament:

from fonts_andorra.clients.estadistica import data, search

tables = search("atur")
rows = data(1070)  # Per defecte, startDate=1900 i endDate=2100.

Condicions de les dades d'origen

El codi i el catàleg d'aquest repositori es dediquen al domini públic sota CC0-1.0. Això no canvia la llicència del material d'origen:

  • BOPA permet copiar, adaptar, extreure i redistribuir el contingut amb condicions: cal conservar la font i les metadades d'actualització, no desvirtuar-ne el sentit i no donar a entendre cap aval.
  • Les dades d'Estadística propietat del Departament d'Estadística són CC BY 4.0; les dades de tercers poden tenir condicions pròpies.
  • govern.ad, e-tràmits i Transparència són continguts del Govern amb tots els drets reservats. El projecte en descarrega el cos de les pàgines en directe, les cita i hi enllaça, però no en redistribueix el contingut. Per republicar-lo cal un consentiment per escrit. L'índex local del Govern només conté títols, URL i encapçalaments de secció.
  • Les capes ArcGIS i de carburants es tracten com a contingut del Govern amb tots els drets reservats perquè no s'indica cap llicència per element; el projecte les consulta en directe, n'enllaça la font i no en redistribueix el contingut.
  • Feeds, meteo.ad i CASS: les condicions per element no existeixen o no s'han revisat; consulta les condicions de l'editor abans de redistribuir-ne les dades.

El catàleg indica les fonts i les condicions una per una. Verifica les condicions de cada element abans de fer-ne un ús comercial o de republicar-lo.

Fitxers del catàleg

  • sources/<id>.yaml conté les fitxes de les fonts.
  • schema/source.schema.json i schema/vocab.yaml defineixen el contracte de les fitxes i els vocabularis tancats.
  • indices/dead-routes.yaml recull els dominis que no responen, comprovats el 2026-10-02.
  • catalog.json, llms.txt i llms-full.txt es generen amb python scripts/build.py.
  • python scripts/validate.py comprova l'esquema de les fonts, els vocabularis i els identificadors de fonts relacionades.

Índex de cerca local

fonts_andorra/data/index.json conté els títols i URL d'e-tràmits i, del Govern, només títols, URL i encapçalaments de secció; el cos de totes les pàgines es descarrega en directe i es cita, perquè el contingut d'origen té tots els drets reservats. L'assistent cerca tràmits i pàgines del Govern amb BM25 en local i descarrega en directe les pàgines trobades; no fa servir el cercador del web del Govern, que està prohibit. Per reconstruir-lo a partir d'e-tràmits i del sitemap en català del Govern, executa .venv/bin/python scripts/build_index.py; aquest generador necessita xarxa i, per això, no forma part de la CI.

Proves

Les proves funcionen sense connexió i fan servir respostes públiques desades:

.venv/bin/ruff check .
.venv/bin/pytest -q
python scripts/validate.py
python scripts/build.py

CI

ci.yml executa el lint, les proves sense connexió, la validació i la comprovació dels fitxers generats a cada push i pull request; live.yml fa comprovacions setmanals en directe i en penja un informe. La comprovació de l'assistent de live.yml necessita el secret GEMINI_API_KEY al repositori.

Avaluació de l'assistent

evals/procedures.yaml conté 10 tràmits reals amb la resposta de referència (preu, termini màxim de resolució, període de sol·licitud i si cal anar-hi presencialment), presa de les pàgines d'e-tràmits el 2026-10-02. S'executa amb:

GEMINI_API_KEY=... .venv/bin/python evals/run.py --baseline

Últim resultat (evals/results-2026-10-03.md, gemini-2.5-flash): 10/10 casos superats amb el tràmit correcte citat i 18/18 dades correctes. El mateix model sense fonts n'encerta 3/18. Aquests 10 casos també es van fer servir per ajustar la cerca, així que s'han de considerar un joc de regressió i no pas una avaluació independent.

Joc reservat

evals/heldout.yaml conté 20 casos més, escrits un cop acabat l'ajust: 15 tràmits que no s'havien fet servir per ajustar (ca/es/fr/en) i 5 preguntes que cap font d'aquí no pot respondre (el temps, preus de forfets d'esquí, cues a la frontera, el telèfon personal d'un ministre i els dies de vacances de l'usuari), que l'assistent ha de declinar sense donar cap xifra.

GEMINI_API_KEY=... .venv/bin/python evals/run.py --cases evals/heldout.yaml --baseline
  • Primera execució (evals/results-heldout-2026-10-03-first-run.md): 15/20 segons el puntuador. Tres errors eren del puntuador (no llegia cites escrites com [1, 2] i no reconeixia "no se encontró" com a resposta declinada). Tornant a puntuar les mateixes respostes surt 18/20. Els dos errors reals:
    • El filtre de dades personals emmascarava dates com 23-09-2026 com si fossin telèfons, i l'assistent no podia donar el període de sol·licitud. Ja està corregit.
    • Per a "I'm selling my flat and need the habitability certificate", va respondre a partir de la cèdula d'habitabilitat (2 mesos) en lloc del certificat d'habitabilitat (72 hores). La pregunta és ambigua, perquè una venda necessita la cèdula.
  • Després de les correccions (evals/results-heldout-2026-10-03.md): 20/20, 23/23 dades, 5/5 preguntes sense resposta declinades i 0 cites incorrectes. El mateix model sense fonts n'encerta 6/23. El cas de l'habitabilitat va passar perquè la cerca va retornar uns altres tràmits, no gràcies a cap correcció. La generació de paraules clau no és del tot determinista, així que aquest cas pot canviar.

A partir d'aquí aquest joc ja no és estrictament reservat: s'hi va trobar una correcció. Les noves fallades s'han de corregir amb casos nous.

La proposta d'una pàgina per al Govern és a docs/pitch.md.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.