Datafordeler DAR MCP
Direcciones danesas del Danmarks Adresseregister (DAR) en Datafordeleren, el reemplazo de DAWA: búsqueda por id, enumeración por calle o código postal, búsqueda por prefijo, coordenadas WGS84.
Documentación
datafordeler-dar-mcp
Servidor MCP para direcciones danesas del Danmarks Adresseregister (DAR) en Datafordeleren, el distribuidor nacional oficial de datos.
DAWA (dawa.aws.dk, api.dataforsyningen.dk) cerró el 1 de octubre de 2026
y ahora devuelve HTTP 410. Todas las herramientas de direcciones construidas sobre él están muertas.
El reemplazo de Klimadatastyrelsen es Datafordeleren, que está basado en claves, es bitemporal
y está orientado a GraphQL. Este servidor ofrece a los agentes de IA (Claude, Cursor, VS Code, cualquier
cliente MCP) los datos de DAR a través de diez herramientas pequeñas y documentadas, con las
coordenadas convertidas a WGS84 y los UUID de DAR que DAWA también utilizaba.
Estado: v0.1, una sonda. Existe para descubrir si alguien quiere una capa MCP mantenida sobre datos públicos daneses. Las estrellas, las descargas de npm y los issues son la señal. Es deliberadamente ligero: sin caché, sin medición, una sola fuente.
Qué hace
| Herramienta | ¿Necesita clave API? | Propósito |
|---|---|---|
dar_status | no | Verificación de conectividad, rutas de acceso configuradas, cuenta regresiva de cierre |
dar_get_address | no | Una dirección de unidad (piso/puerta) por UUID |
dar_get_access_address | no | Una dirección de acceso (entrada / husnummer) por UUID |
dar_list_addresses | no | Unidades en una dirección de acceso |
dar_list_access_addresses | no | Enumerar una calle (municipio + código de vía), un código postal o una parcela catastral, paginado |
dar_get_street | no | Vía nombrada por UUID o municipio + código de vía |
dar_get_postcode | no | Código postal por código de 4 dígitos o UUID |
dar_search_addresses | sí | Búsqueda por prefijo en nombres de calles, direcciones de acceso y direcciones de unidad |
dar_graphql | sí | Paso directo GraphQL sin procesar a DAR/v2 |
dar_get_graphql_schema | sí | Obtener el esquema GraphQL, compactado y filtrable |
Cada resultado incluye attribution (CC BY 4.0, Klimadatastyrelsen), códigos
de estado DAR con etiquetas en inglés, y puntos tanto en EPSG:25832 como en WGS84.
Los errores están tipados (config, bad_request, auth, not_found,
rate_limited, upstream, timeout, network) e indican qué hacer a continuación.
Instalación
Requiere Node.js 20 o superior.
Claude Code:
claude mcp add datafordeler-dar -- npx -y datafordeler-dar-mcp
Claude Desktop, Cursor, VS Code y otros clientes (mcp.json /
claude_desktop_config.json):
{
"mcpServers": {
"datafordeler-dar": {
"command": "npx",
"args": ["-y", "datafordeler-dar-mcp"],
"env": { "DATAFORDELER_API_KEY": "your-key-here" }
}
}
}
Cómo obtener una clave API y por qué la necesitará
El acceso anónimo al servicio REST heredado funciona hoy, por lo que las siete herramientas de consulta no necesitan clave. Klimadatastyrelsen ha anunciado que después del 15 de enero de 2027 Datafordeleren solo atenderá solicitudes autenticadas (clave API u OAuth). La búsqueda de texto ya necesita una clave porque se ejecuta en el servicio GraphQL.
- Cree una cuenta gratuita en https://datafordeler.dk (Administración de Datafordeler). Un usuario de correo electrónico es suficiente; MitID Erhverv es opcional.
- Cree un sistema de TI y añádale una clave API.
- Establezca
DATAFORDELER_API_KEY.
No se requiere ningún paso de aprobación para DAR. Una clave nueva tarda hasta 15 minutos en
activarse; hasta entonces el servicio responde 401 "Unrecognized Authentication
key". Los límites de tasa no están publicados; el servidor presenta HTTP 429 como
rate_limited.
Las credenciales heredadas opcionales (DATAFORDELER_USERNAME, DATAFORDELER_PASSWORD)
se transmiten al servicio REST si están configuradas.
Ejemplos que un agente puede encadenar
dar_get_postcode({ postcode: "1663" })
-> postcodes[0].id = d4a3a5ad-...
dar_list_access_addresses({ postcode_id: "d4a3a5ad-...", page_size: 50 })
-> entrances with lat/lon
dar_list_addresses({ access_address_id: "0a3f507a-d330-32b8-e044-0003ba298018" })
-> 12 units at Oehlenschlægersgade 35
dar_get_address({ address_id: "0a3f50a0-0000-32b8-e044-0003ba298018" })
-> "Oehlenschlægersgade 35, st. tv, 1663 København V", municipality 0101, parish Vesterbro
Con una clave:
dar_search_addresses({ query: "rentemester", level: "street" })
-> Rentemestervej, København (0101), id 831a760e-...
dar_list_access_addresses({ street_id: "831a760e-4e3f-42e8-a9a5-0b771f72880a" })
-> every house number on the street, with lat/lon
dar_search_addresses({ query: "Rentemestervej 8, 2400" })
-> "Rentemestervej 8, 2400 København NV"
dar_search_addresses({ query: "Oehlenschlægersgade 35, st", level: "address" })
-> st. tv and st. th
Qué hace realmente el servicio GraphQL
Verificado contra el servicio en vivo el 2026-10-01. Varios puntos difieren de la guía de transición publicada por Datafordeleren (v2.3, enero de 2025):
- DAR se sirve en
/DAR/v2./DAR/v1, que la guía documenta, devuelve 404. - Cada consulta de entidad debe incluir
virkningstidy/oregistreringstid, o filtrar porid_lokalId. Pase ambos establecidos a "ahora" para el estado actual; con solovirkningstidtambién obtiene registros reemplazados. startsWithexiste solo enadgangsadressebetegnelse,adressebetegnelse,vejnavn,postnrynavn, y es sensible a mayúsculas. Todo lo demás aceptaeqyin. No hay búsqueda difusa, de subcadena ni clasificada, ni autocompletado.- Las referencias son ids. Un
DAR_Husnummercontiene los UUID de su calle, código postal y punto de acceso; las coordenadas viven enDAR_Adressepunkt. - Los nombres de campo transliteran æ/ø/å como ae/oe/aa (
doerbetegnelse). - La paginación es solo hacia adelante:
first(máx. 1000) yafter. - Las respuestas son rápidas: de 30 a 150 ms por consulta en las pruebas.
dar_search_addresses maneja los argumentos de tiempo, el filtro de estado y
la mayúscula de la primera letra por usted. dar_graphql pasa las consultas
sin modificar y devuelve los errores del servicio textualmente.
Datos, licencia y atribución
Fuente: Danmarks Adresseregister a través de Datafordeleren, Klimadatastyrelsen.
Licencia: CC BY 4.0 según los
términos de uso de Datafordeleren. Debe acreditar a Klimadatastyrelsen "en un
lugar apropiado"; el campo attribution en cada respuesta está ahí para
transmitirse. Las direcciones no son datos personales. El servidor no almacena nada y
no registra nada.
Límites conocidos del servicio REST heredado en el que se apoya esta versión: sin búsqueda de texto, sin geocodificación inversa, sin autocompletado, paginación solo por número de página y un cierre programado el 15 de enero de 2027. El reemplazo para todo eso es el servicio GraphQL detrás de las tres herramientas con clave.
Desarrollo
npm install
npm test # build + unit tests + stdio integration tests (offline)
npm run test:live # also hits services.datafordeler.dk
Con DATAFORDELER_API_KEY configurado, test:live también ejercita las tres
herramientas GraphQL; sin él, esas pruebas se omiten.
Distribución: src/client.ts (obtención REST y GraphQL, errores tipados),
src/normalise.ts (aplanamiento, etiquetas de estado, UTM32 a WGS84),
src/server.ts (registros de herramientas), src/index.ts (punto de entrada stdio).
Las pruebas usan fixtures capturados del servicio en vivo el 2026-10-01.
Comentarios
Si esto le resulta útil, o le falta algo que necesita (otros registros, geocodificación inversa, un endpoint alojado), abra un issue. Los issues y las estrellas son cómo este proyecto decide qué construir a continuación.
Licencia
MIT. Ver LICENSE.