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_statusnoVerificación de conectividad, rutas de acceso configuradas, cuenta regresiva de cierre
dar_get_addressnoUna dirección de unidad (piso/puerta) por UUID
dar_get_access_addressnoUna dirección de acceso (entrada / husnummer) por UUID
dar_list_addressesnoUnidades en una dirección de acceso
dar_list_access_addressesnoEnumerar una calle (municipio + código de vía), un código postal o una parcela catastral, paginado
dar_get_streetnoVía nombrada por UUID o municipio + código de vía
dar_get_postcodenoCódigo postal por código de 4 dígitos o UUID
dar_search_addressessíBúsqueda por prefijo en nombres de calles, direcciones de acceso y direcciones de unidad
dar_graphqlsíPaso directo GraphQL sin procesar a DAR/v2
dar_get_graphql_schemasí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.

  1. Cree una cuenta gratuita en https://datafordeler.dk (Administración de Datafordeler). Un usuario de correo electrónico es suficiente; MitID Erhverv es opcional.
  2. Cree un sistema de TI y añádale una clave API.
  3. 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 virkningstid y/o registreringstid, o filtrar por id_lokalId. Pase ambos establecidos a "ahora" para el estado actual; con solo virkningstid también obtiene registros reemplazados.
  • startsWith existe solo en adgangsadressebetegnelse, adressebetegnelse, vejnavn, postnr y navn, y es sensible a mayúsculas. Todo lo demás acepta eq y in. No hay búsqueda difusa, de subcadena ni clasificada, ni autocompletado.
  • Las referencias son ids. Un DAR_Husnummer contiene los UUID de su calle, código postal y punto de acceso; las coordenadas viven en DAR_Adressepunkt.
  • Los nombres de campo transliteran æ/ø/å como ae/oe/aa (doerbetegnelse).
  • La paginación es solo hacia adelante: first (máx. 1000) y after.
  • 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.