Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.aneal99/datafordeler-dar-mcp

NPM · DATAFORDELER-DAR-MCP

Danish addresses from Datafordeleren's DAR register, the replacement for DAWA.

+2 this week 81 Trust /100

Last scanned (23 hours ago)

Scores higher than 69% of npm servers

Category Maps and Location

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 3 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency45
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2523 tokens (~252/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage94
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 81% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "dar_graphql" implies "send" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 1 Nov 26 +1
    • Stability: 0.97 → pass security
  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed npm/datafordeler-dar-mcp@0.1.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 3 packages
Packages resolved 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 10 exposed · ~2,523 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
dar_get_access_address ~197

Fetch one access address (husnummer: street + house number, the entrance) from DAR by its UUID. The id is the same UUID DAWA used for /adgangsadresser. Returns street, house number, municipality, postcode, supplementary town name, parish, cadastral parcel (jordstykke), GeoDanmark building id, and access/road point coordinates (EPSG:25832 and WGS84). Example: dar_get_access_address({ access_address_id: "0a3f507a-d330-32b8-e044-0003ba298018" }) -> "Oehlenschlægersgade 35, 1663 København V". To list the individual units (floors/doors) at this entrance, call dar_list_addresses with the same id.

NameTypeReqDescription
access_address_idstringyesDAR/DAWA access-address UUID (id_lokalId of a Husnummer).

No output schema declared.

No examples provided.

dar_get_address ~213

Fetch one Danish address (adresse: a specific door/floor unit) from DAR by its UUID. The id is the same UUID DAWA used for /adresser, so stored DAWA ids keep working. Returns the normalised address with its access address (husnummer) embedded: street, house number, municipality, postcode, parish, cadastral parcel, building id and the access point coordinates in both EPSG:25832 (x, y) and WGS84 (lat, lon). Example: dar_get_address({ address_id: "0a3f50a0-0000-32b8-e044-0003ba298018" }) -> "Oehlenschlægersgade 35, st. tv, 1663 København V". Not for text search: use dar_search_addresses (API key) or dar_list_access_addresses (municipality + road code).

NameTypeReqDescription
address_idstringyesDAR/DAWA address UUID (id_lokalId of an Adresse).

No output schema declared.

No examples provided.

dar_get_graphql_schema ~190

Fetch the GraphQL schema (SDL) for DAR/v2. REQUIRES DATAFORDELER_API_KEY. The full schema is about 80,000 characters, mostly Danish field documentation. By default the doc comments are stripped, which leaves a compact list of types, fields and filter inputs. Pass filter to keep only type/input/enum blocks whose name contains the text (case-insensitive), e.g. filter: "DAR_Husnummer" (type, filter input, connection) or filter: "OperationFilterInput" (available operators). Set include_docs: true to keep the field definitions and legal references. Output is truncated at 60000 characters.

NameTypeReqDescription
filterstring–Substring of a type name to keep, e.g. "DAR_Adresse".
include_docsboolean–Keep the """doc comment""" blocks (Danish definitions, legal sources).

No output schema declared.

No examples provided.

dar_get_postcode ~116

Fetch a Danish postcode (postnummer) by its 4-digit code or by UUID. Returns id, code, name and status. Example: dar_get_postcode({ postcode: "1663" }) -> "København V", id d4a3a5ad-.... Use the returned id as postcode_id in dar_list_access_addresses to enumerate addresses in that postcode.

NameTypeReqDescription
postcodestring–4-digit postcode, e.g. "8000".
postcode_idstring–Postnummer UUID.

No output schema declared.

No examples provided.

dar_get_street ~147

Fetch a named road (NavngivenVej) by UUID, or by municipality_code + road_code. Returns the street name, the municipality that administers it, its road codes per municipality (a street can span municipalities) and the postcodes it runs through. Example: dar_get_street({ municipality_code: "0101", road_code: "5240" }) -> "Oehlenschlægersgade", København. Does NOT search by name (see dar_search_addresses for text search, API key required).

NameTypeReqDescription
municipality_codestring––
road_codestring––
street_idstring–NavngivenVej UUID.

No output schema declared.

No examples provided.

dar_graphql ~502

Send any GraphQL query to https://graphql.datafordeler.dk/DAR/v2. REQUIRES DATAFORDELER_API_KEY. Entities: DAR_Adresse, DAR_Husnummer, DAR_NavngivenVej, DAR_NavngivenVejKommunedel, DAR_NavngivenVejPostnummer, DAR_Postnummer, DAR_SupplerendeBynavn, DAR_Adressepunkt, DAR_Events. Rules the service enforces: - Every entity query needs virkningstid and/or registreringstid (ISO timestamp), or a where filter on id_lokalId. Pass BOTH set to the current time to get the current state; with only one you also get superseded versions. - Filters: where: { field: { eq | in } }. startsWith exists only on adgangsadressebetegnelse, adressebetegnelse, vejnavn, postnr and navn, and is case-sensitive. Dates and ints also take gt/gte/lt/lte. Geometry fields take spatial filters (intersects, within, contains ...) with { wkt, crs: 25832 }. - Paging: first (max 1000, default 100) and after (cursor); read pageInfo { endCursor hasNextPage }. - References are ids, not nested objects: DAR_Husnummer.navngivenVej, .postnummer and .adgangspunkt hold UUIDs; fetch coordinates from DAR_Adressepunkt { position { wkt crs } }. - Field names with æ/ø/å use ae/oe/aa (doerbetegnelse, virkningsaktoer). Example: query { DAR_Husnummer(first: 5, virkningstid: "2026-10-01T12:00:00Z", registreringstid: "2026-10-01T12:00:00Z", where: { adgangsadressebetegnelse: { startsWith: "Rentemestervej 8" }, status: { eq: "3" } }) { pageInfo { endCursor hasNextPage } nodes { id_lokalId adgangsadressebetegnelse status } } } Returns the raw { data, errors } envelope. Use dar_get_graphql_schema to discover fields.

NameTypeReqDescription
querystringyesGraphQL query document.
variablesobject–Optional GraphQL variables object.

No output schema declared.

No examples provided.

dar_list_access_addresses ~428

List access addresses (husnumre) filtered by one of: - municipality_code + road_code (kommunekode + vejkode, both 4-digit strings), e.g. "0101" + "5240" = Oehlenschlægersgade, København - street_id (NavngivenVej UUID, from dar_get_street or an earlier result) - postcode_id (Postnummer UUID, from dar_get_postcode; NOT the 4-digit postcode) - cadastral_parcel_id (jordstykke id, from an earlier access-address result) This is the anonymous way to enumerate a street when no API key is set. Paginated: page (1-based) and page_size (max 100). has_more is true when a full page came back; request the next page to continue. Results include coordinates (EPSG:25832 and WGS84). Example: dar_list_access_addresses({ municipality_code: "0101", road_code: "5240", page_size: 50 }). Does NOT search by street name. For that use dar_search_addresses (needs DATAFORDELER_API_KEY). Danish municipality codes are 4 digits with a leading zero (København 0101, Aarhus 0751, Odense 0461, Aalborg 0851).

NameTypeReqDescription
cadastral_parcel_idstring–Jordstykke id.
municipality_codestring–Kommunekode, 4 digits, e.g. "0101".
pageinteger–1-based page number.
page_sizeinteger––
postcode_idstring–Postnummer UUID (not the 4-digit code).
road_codestring–Vejkode within the municipality, 4 digits, e.g. "5240".
statusstring–"current" returns only status 3 (gældende) records; "all" includes preliminary, discontinued and cancelled.
street_idstring–NavngivenVej UUID.

No output schema declared.

No examples provided.

dar_list_addresses ~179

List the unit addresses (floors/doors) that belong to one access address (husnummer). Example: dar_list_addresses({ access_address_id: "0a3f507a-d330-32b8-e044-0003ba298018" }) -> 12 addresses at Oehlenschlægersgade 35 (st. tv, st. th, 1. tv, ...). Returns compact records (id, text, floor, door, status). Fetch one with dar_get_address for full detail. A single-family house typically has exactly one address with no floor/door.

NameTypeReqDescription
access_address_idstringyesDAR/DAWA access-address UUID.
statusstring–"current" returns only status 3 (gældende) records; "all" includes preliminary, discontinued and cancelled.

No output schema declared.

No examples provided.

dar_search_addresses ~429

Find streets, access addresses or unit addresses whose official text starts with a prefix, via the Datafordeler GraphQL service. REQUIRES DATAFORDELER_API_KEY. The service supports prefix matching only (startsWith): no fuzzy, substring or typo-tolerant search, and it is CASE-SENSITIVE. Write the prefix the way DAR writes it: "Vejnavn husnummer, postnr By". This tool upper-cases the first letter for you; the rest must match exactly, including Danish letters (æ, ø, å). level: - "street": match street names (NavngivenVej), e.g. "Rentemester" -> Rentemestervej in København (0101) and Hvidovre. Returns street id, name and administering municipality code. Feed the id to dar_list_access_addresses({ street_id }) to enumerate house numbers. - "access_address" (default): match entrances, e.g. "Rentemestervej 8" -> Rentemestervej 8, 80, 82, ... Results are NOT ranked; an exact house number is one of several prefix matches, so add ", 2400" or pick by house_number. - "address": match unit addresses including floor/door, e.g. "Oehlenschlægersgade 35, st". Returns ids and text only. Follow up with dar_get_access_address / dar_get_address for coordinates, municipality and postcode. Paginate with the returned next_cursor. Example: dar_search_addresses({ query: "Rentemestervej 8, 2400", limit: 5 }).

NameTypeReqDescription
afterstring–Cursor from a previous result's next_cursor, for the next page.
levelstring––
limitinteger––
only_currentboolean–Keep only status 3 (gældende) records.
querystringyesText prefix, e.g. "Rentemestervej 8" or, for level "street", "Rentemester".

No output schema declared.

No examples provided.

dar_status ~122

Check connectivity to Datafordeleren (DAR) and report which access paths are configured. Returns: whether the legacy REST service answers (and its latency), whether an API key for the GraphQL service is configured, the REST sunset date (2027-01-15; after it only API-key/OAuth access exists), and the attribution text that must accompany the data (CC BY 4.0, Klimadatastyrelsen). Use first when a DAR call fails unexpectedly, or to decide whether text search (dar_search_addresses, needs API key) is available.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the io.github.aneal99/datafordeler-dar-mcp server?

io.github.aneal99/datafordeler-dar-mcp runs locally as an npm package, launched with npx -y datafordeler-dar-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · datafordeler-dar-mcp

# add to Claude Code
claude mcp add aneal99-datafordeler-dar-mcp -- npx -y datafordeler-dar-mcp
Common questions

What is the io.github.aneal99/datafordeler-dar-mcp server?

io.github.aneal99/datafordeler-dar-mcp is listed in the public MCP registry as io.github.aneal99/datafordeler-dar-mcp. Danish addresses from Datafordeleren's DAR register, the replacement for DAWA. This page covers its npm package (datafordeler-dar-mcp).

Is the io.github.aneal99/datafordeler-dar-mcp server safe to use?

io.github.aneal99/datafordeler-dar-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.aneal99/datafordeler-dar-mcp server expose?

io.github.aneal99/datafordeler-dar-mcp exposes 10 tools: dar_status, dar_get_address, dar_get_access_address, dar_list_addresses, dar_list_access_addresses, and 5 more. Their descriptions and schemas cost roughly 2,523 tokens of context every time the server is loaded.

Is the io.github.aneal99/datafordeler-dar-mcp server still maintained?

io.github.aneal99/datafordeler-dar-mcp is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.aneal99/datafordeler-dar-mcp server under?

io.github.aneal99/datafordeler-dar-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.