mcpField
D
datafordeler-dar-mcp

datafordeler-dar-mcp

本地服务
github.com/aneal99地图与出行03 周前更新

关于 datafordeler-dar-mcp

datafordeler-dar-mcp 是一个 MCP 服务,可通过 Datafordeleren 访问丹麦官方 DAR 地址登记数据,面向 AI Agent 和 MCP 客户端。它同时提供地址查询工具和需要密钥的 GraphQL 访问。

主要功能

  1. 01查询单元地址和入口地址
  2. 02按街道或邮政编码列出地址
  3. 03使用 API 密钥搜索地址记录
  4. 04透传 DAR GraphQL 查询
  5. 05将坐标转换为 WGS84

适用场景

  1. 01通过 DAR UUID 获取地址
  2. 02列出某条街道或邮政编码区域内的入口
  3. 03按街道名称前缀搜索丹麦地址

MCP 相关

该服务提供十种工具,用于 DAR 地址和街道查询、邮政编码数据、搜索、状态检查及 GraphQL 访问。七种基于 REST 的查询工具无需密钥;搜索和 GraphQL 工具需要 Datafordeleren API 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aneal99-datafordeler-dar": {
"command": "npx",
"args": [
"-y",
"datafordeler-dar-mcp"
],
"env": {
"DATAFORDELER_API_KEY": "<DATAFORDELER_API_KEY>"
}
}
}
}
启动命令npx -y datafordeler-dar-mcp
需要配置的环境变量
DATAFORDELER_API_KEY密钥Datafordeler API key. Optional for lookups by id until 15 January 2027; required for text search and the GraphQL tools.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdatafordeler-dar-mcp0.1.1

工具

10

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

datafordeler-dar-mcp

用于从 Danmarks Adresseregister (DAR) 获取丹麦地址的 MCP 服务,数据来自官方国家数据分发平台 Datafordeleren。

DAWA(dawa.aws.dk、api.dataforsyningen.dk)已于 2026 年 10 月 1 日关闭,目前会返回 HTTP 410。所有基于它构建的地址工具都已失效。Klimadatastyrelsen 的替代方案是 Datafordeleren,它采用密钥验证、双时态数据模型,并以 GraphQL 为核心。此服务通过十个小巧且附有文档的工具,为 AI Agent(Claude、Cursor、VS Code 以及任何 MCP 客户端)提供 DAR 数据,并将坐标转换为 WGS84,同时保留 DAWA 也使用过的 DAR UUID。

状态:v0.1,试验版。 此项目旨在了解是否有人需要一个维护中的丹麦公共数据 MCP 层。星标数、npm 下载量和问题反馈都是参考信号。它刻意保持轻量:不缓存、不计量,仅使用一个数据源。

功能

工具是否需要 API 密钥用途
dar_status否连通性检查、已配置的访问途径、服务关闭倒计时
dar_get_address否按 UUID 获取一个单元地址(楼层/门牌)
dar_get_access_address否按 UUID 获取一个出入地址(入口/门牌号)
dar_list_addresses否获取一个出入地址下的单元地址
dar_list_access_addresses否按市镇 + 道路代码、邮政编码或地籍地块枚举出入地址,支持分页
dar_get_street否按 UUID 或市镇 + 道路代码获取命名道路
dar_get_postcode否按 4 位代码或 UUID 获取邮政编码
dar_search_addresses是按前缀搜索街道名称、出入地址和单元地址
dar_graphql是直接透传到 DAR/v2 的原始 GraphQL 请求
dar_get_graphql_schema是获取 GraphQL 架构,支持压缩和筛选

每个结果都包含 attribution(CC BY 4.0,Klimadatastyrelsen)、带英文标签的 DAR 状态代码,以及 EPSG:25832 和 WGS84 坐标点。错误类型明确(config、bad_request、auth、not_found、rate_limited、upstream、timeout、network),并会说明后续操作。

安装

需要 Node.js 20 或更高版本。

Claude Code:

claude mcp add datafordeler-dar -- npx -y datafordeler-dar-mcp

Claude Desktop、Cursor、VS Code 和其他客户端(mcp.json / claude_desktop_config.json):

{
  "mcpServers": {
    "datafordeler-dar": {
      "command": "npx",
      "args": ["-y", "datafordeler-dar-mcp"],
      "env": { "DATAFORDELER_API_KEY": "your-key-here" }
    }
  }
}

获取 API 密钥,以及为何需要它

目前可以匿名访问旧版 REST 服务,因此七个查询工具无需密钥。Klimadatastyrelsen 已宣布,2027 年 1 月 15 日之后,Datafordeleren 只会处理经过身份验证的请求(API 密钥或 OAuth)。文本搜索已经需要密钥,因为它使用 GraphQL 服务。

  1. 在 https://datafordeler.dk(Datafordeler Administration)创建免费账户。使用电子邮件注册即可;MitID Erhverv 为可选项。
  2. 创建一个 IT 系统,并为其添加 API 密钥。
  3. 设置 DATAFORDELER_API_KEY。

DAR 无需经过审批。新密钥最多需要 15 分钟才能激活;在此之前,服务会返回 401“Unrecognized Authentication key”。目前尚未公布速率限制;服务会将 HTTP 429 映射为 rate_limited。

如果设置了可选的旧版凭据(DATAFORDELER_USERNAME、DATAFORDELER_PASSWORD),这些凭据会透传给 REST 服务。

Agent 可串联使用的示例

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

使用密钥:

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
GraphQL 服务的实际功能

已于 2026-10-01 对照在线服务核实。有几点与 Datafordeleren 发布的迁移指南(v2.3,2025 年 1 月)不同:

  • DAR 位于 /DAR/v2。指南中记载的 /DAR/v1 会返回 404。
  • 每个实体查询都必须带上 virkningstid 和/或 registreringstid,或按 id_lokalId 筛选。要获取当前状态,请将两者都设为当前时间;如果只传 virkningstid,也会得到已被取代的登记。
  • 只有 adgangsadressebetegnelse、adressebetegnelse、vejnavn、postnr 和 navn 支持 startsWith,且区分大小写。其他字段均使用 eq 和 in。不支持模糊搜索、子串搜索或排名搜索,也没有自动补全。
  • 引用使用 ID。DAR_Husnummer 保存其街道、邮政编码和出入点的 UUID;坐标位于 DAR_Adressepunkt。
  • 字段名中的 æ/ø/å 分别转写为 ae/oe/aa(doerbetegnelse)。
  • 仅支持向前翻页:first(最大值为 1000)和 after。
  • 响应速度很快:测试中每次查询耗时 30 到 150 毫秒。

dar_search_addresses 会为你处理时间参数、状态筛选和首字母大小写。dar_graphql 会原样传递查询,并逐字返回服务的错误。

数据、许可与署名

来源:通过 Datafordeleren 获取的 Danmarks Adresseregister,Klimadatastyrelsen。 许可:根据 Datafordeleren 的使用条款,采用 CC BY 4.0。你必须在“适当的位置”署名 Klimadatastyrelsen;每个响应中的 attribution 字段就是为转交署名信息而提供的。地址不属于个人数据。该服务不存储任何内容,也不记录任何日志。

此版本依赖的旧版 REST 服务有以下已知限制:不支持文本搜索、反向地理编码或自动补全;仅能按页码分页;并计划于 2027 年 1 月 15 日关闭。三个带密钥的工具背后的 GraphQL 服务可替代上述所有功能。

开发

npm install
npm test          # build + unit tests + stdio integration tests (offline)
npm run test:live # also hits services.datafordeler.dk

设置 DATAFORDELER_API_KEY 后,test:live 也会测试三个 GraphQL 工具;未设置时会跳过这些测试。

项目结构:src/client.ts(REST 和 GraphQL 请求、类型化错误)、src/normalise.ts(扁平化、状态标签、UTM32 转 WGS84)、src/server.ts(工具注册)、src/index.ts(stdio 入口)。 测试使用的是 2026-10-01 从在线服务捕获的样本数据。

反馈

如果你觉得这个项目有用,或者发现缺少你需要的功能(其他登记簿、反向地理编码、托管端点),请提交 issue。Issue 和 Star 会影响项目接下来要开发的内容。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。