mcpField
L
Luxembourg MCP

Luxembourg MCP

远程服务
luxembourg-mcp.com法律与政务83 天前更新

关于 Luxembourg MCP

Luxembourg MCP 将卢森堡公共数据整理为一致的工具,供 AI Agent 和 MCP 客户端调用。它涵盖法律、统计、出行等领域,并在结果中附上来源 URL,无需 API 密钥。

主要功能

  1. 01覆盖公共数据源的 44 个工具
  2. 02搜索法律与统计数据
  3. 03查询出行和实时状况
  4. 04地址与地理空间查询
  5. 05每项结果附来源 URL
  6. 06支持 Stdio 和 Streamable HTTP

适用场景

  1. 01查找法律和统计数据
  2. 02查看实时交通、停车或天气
  3. 03定位地址和公共交通站点
  4. 04搜索卢森堡开放数据目录

MCP 相关

该 MCP 服务提供 44 个工具,覆盖 28 个公共数据系统,包括法律、统计、出行和环境数据。客户端可连接托管的 Streamable HTTP 端点,也可通过 stdio 运行服务。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.luxembourg-mcp.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
pypiluxembourg-mcp0.7.0

工具

44
参数类型必填说明
pageinteger否
querystring是
page_sizeinteger否

详细介绍

Luxembourg MCP

CI PyPI License: MIT

无需密钥即可通过模型上下文协议访问卢森堡公共数据。

**托管端点——无需安装:**将任意 MCP 客户端指向 https://mcp.luxembourg-mcp.com/mcp(可流式传输的 HTTP)。也可以使用 uvx luxembourg-mcp 自行运行。网站:luxembourg-mcp.com

Luxembourg MCP 将分散的公共 API 和开放数据集整合为 44 个一致的工具,供 AI Agent 直接调用。涵盖法律、官方统计、交通出行、环境测量、议会、无障碍设施、地址、地理空间要素和国家开放数据目录。

  • 44 个 MCP 工具
  • 28 个公共数据系统
  • 无需 API 密钥或账号
  • 无需抓取数据
  • 每条结果都附带来源 URL
  • 支持 Stdio 和 Streamable HTTP 传输

起源与致谢

本项目直接受到 Allemannsdata 的启发,该项目由 Thomas Heggelund 创建。

Heggelund 最初的构想是,让公共数据像挪威的 allemannsretten(自由漫行权)所倡导的那样开放:公共信息应当易于获取、组合和使用。Allemannsdata 通过一致且无需密钥的 MCP 工具呈现多个彼此无关的数据源,免去了 Agent 与挪威公共服务之间重复的集成工作。

Luxembourg MCP 将这一理念应用于卢森堡大公国。它是面向卢森堡的独立实现,并非分支、官方地区版本或关联项目。关于通过 MCP 提供公共数据目录这一原始构想,应归功于 Thomas Heggelund 和 Allemannsdata。

可用工具

工具公共来源用途
search_datasetsdata.public.lu搜索国家开放数据目录
get_datasetdata.public.lu查看元数据和当前资源
geocode_addressGeoportail查找官方地址
reverse_geocodeGeoportail查找最近的官方地址
list_geo_collectionsGeoportail OGC API查找可查询的地理空间图层
get_geo_featuresGeoportail OGC API获取指定范围内的 GeoJSON 要素
get_weather_alertsMeteoLux查看当前天气预警
search_legislationLegilux搜索法律法规和合并文本
search_statisticsSTATEC LUSTAT查找统计数据流
get_statisticsSTATEC LUSTAT获取带标签的 SDMX 观测数据
get_city_parkingVille de Luxembourg查看城市停车位实时情况
list_cfl_parkingCFL列出 Park and Ride 停车场
get_cfl_parkingCFL查看 P+R 实时占用情况和空余车位
get_trafficCITA查看高速公路实时交通测量数据
get_water_levelsWater Management Administration查看当前水文站水位
get_air_qualityEnvironment Administration查看全国空气质量测量数据
search_chamber_bodiesChamber of Deputies搜索机构、成员资格和职务
get_accessibility_figuresDigital Accessibility Observatory查看全国无障碍总量数据
get_accessibility_auditsDigital Accessibility Observatory列出近期公共部门审计
search_transit_stopsPublic Transport Administration搜索全国 GTFS 站点
get_city_mobilityVille de Luxembourg Maps以 GeoJSON 格式获取出行地点
get_weather_observationsMeteoLux获取 Findel 的实时气温、风力和气压
get_public_holidaysdata.public.lu获取四种语言的法定公共假日
search_parliamentary_questionsChamber of Deputies搜索议会质询及答复
get_housing_pricesObservatoire de l'Habitat按市镇查询挂牌住房售价
get_election_resultsCTIE获取 2023 年立法选举结果
get_ev_chargingChargy查询公共电动汽车充电设施及实时可用情况
get_waste_collectionsEnvironment Administration按市镇查询即将进行的垃圾收集日期
get_weather_forecastMeteoLux获取官方天气预报、紫外线指数、日出和日落时间
get_fuel_pricesMinistère de l'Économie获取每月燃油、氢能和电动汽车充电价格
get_public_alertsLU-Alert获取国家预警,包括食品召回信息
get_commune_leadersMinistère des Affaires intérieures查询各市镇现任市长和市 aldermen
get_commune_populationCTIE按市镇、年龄组和性别查询居民人口
get_pharmacies_on_dutyPharmacie.lu查询值班药房及其地址和电话
get_electricity_pricesOpen Data Lëtzebuerg获取日前电价,精确到每 15 分钟
get_carsharingCFL Mobility查询可用的 FLEX 共享汽车
get_bike_sharingVël'OK查询南部地区单车共享的实时可用情况
search_tendersPortail des marchés publics搜索公开招标公告
get_plenary_votesChamber of Deputies获取全体会议投票结果,按党派和议员列出计票结果
get_deputiesChamber of Deputies查询现任议员、党派、选区和电子邮箱
lookup_luxembourgishLëtzebuerger Online Dictionnaire查询翻译、发音和例句
get_traffic_eventsCITA获取道路施工、封闭和事故的实时信息
get_electricity_gridOpen Data Lëtzebuerg获取每日负荷、发电结构和跨境电力流
get_unemploymentADEM获取按月统计的求职者和职位空缺数据,可按全国或市镇查询

快速开始

需要 Python 3.11 或更高版本。

python -m venv .venv
. .venv/bin/activate
pip install -e .
luxembourg-mcp --transport http --port 8000

运行后:

接口URL
工具目录http://127.0.0.1:8000/
MCP 端点http://127.0.0.1:8000/mcp
健康检查http://127.0.0.1:8000/health
上游状态http://127.0.0.1:8000/status

/status 会报告每个工具的官方上游是否可访问;目录会在每个工具卡片上用指示灯显示状态。无论有多少人加载页面,每个上游每 10 分钟最多进行一次轻量检查(仅读取前几 KB)。一次检查失败会将上游标记为性能下降,连续两次失败则标记为不可用。

Stdio 客户端
{
  "mcpServers": {
    "luxembourg": {
      "command": "luxembourg-mcp"
    }
  }
}
Docker
docker build -t luxembourg-mcp .
docker run --rm -i luxembourg-mcp                                          # stdio (default)
docker run --rm -p 8000:8000 luxembourg-mcp --transport http --host 0.0.0.0  # HTTP

示例问题

连接 MCP 客户端后,Agent 可以回答以下问题:

  • 卢森堡目前有哪些天气预警?
  • CFL Park and Ride 还有多少个空位?
  • Mersch 最新的水位是多少?
  • 查找有关养老金的法律。
  • 哪些 STATEC 数据集包含人口数据?
  • A6 上最新的交通测量数据是什么?
  • A4 现在有道路施工或车道封闭吗?
  • 各政党对最新的有轨电车法案投了什么票?
  • 卢森堡语单词“Schiertech”是什么意思?
  • 查找卢森堡市某个地址的官方坐标。
  • 哪些公交车站或有轨电车站与 Hamilius 匹配?

协议行为

该服务:

  • 根据每个已公布工具的输入架构验证参数;
  • 拒绝 JSON-RPC 批处理和其他非对象 JSON,并返回 -32600 Invalid Request;
  • 在同一端点和 stdio 上支持 MCP 2026-07-28(无状态:每个请求的 _meta、server/discover、缓存提示),同时支持 initialize 握手版本 2025-11-25、2025-06-18 和 2025-03-26;
  • 针对 HTTP 请求,根据请求正文验证 MCP-Protocol-Version、Mcp-Method 和 Mcp-Name 标头;
  • 将工具故障作为 MCP 工具结果返回,而不会终止服务;
  • 限制大型上游响应的大小,再将其放入 Agent 上下文。

内置 HTTP 服务是无状态的,不提供 SSE 流。默认情况下,它只接受来自环回地址的浏览器源;托管部署可以通过 LUXEMBOURG_MCP_ALLOWED_ORIGINS(以逗号分隔的源列表,或 *)扩展此设置,同时为获准的源启用 CORS 预检和响应标头。公开部署应在反向代理或应用网关上添加 TLS、响应缓存和可观测性。

安全与部署

内置服务包含基础安全控制,但不能替代生产环境中的 API 网关:

  • HTTP 请求正文大小限制为 1 MiB。
  • 上游响应大小限制为 25 MiB。
  • 从元数据派生的下载仅限可信的 data.public.lu HTTPS 资源主机,包括重定向;固定上游 URL 仅跟随同一主机上的 HTTPS 重定向。
  • 上游 XML 若声明了 DTD 实体,会在解析前被拒绝;用户提供的标识符无法构成 ./.. URL 路径段。
  • GTFS ZIP 文件成员在解压前会检查解压后大小、加密状态和可疑的压缩比。
  • 默认情况下,HTTP 客户端每分钟最多可发送 60 个 MCP 请求;IPv6 客户端按 /64 前缀分组。
  • 默认情况下,HTTP 服务最多处理 32 个并发连接,并会关闭空闲 30 秒的连接。
  • Docker 镜像使用受摘要固定的基础镜像,并以非特权 app 用户运行。

设置 LUXEMBOURG_MCP_RATE_LIMIT 可更改每个客户端每分钟的请求限制。值为 0 时会禁用内置限流器。限流器会有意使用直接 TCP 对端地址,除非 LUXEMBOURG_MCP_CLIENT_IP_HEADER 明确指定了转发标头(例如,在 Cloudflare 后方使用 CF-Connecting-IP),否则不会信任转发标头;仅当受信任的代理控制该标头时才设置此项,否则客户端可能伪造该标头以绕过限制。设置 LUXEMBOURG_MCP_MAX_CONNECTIONS 可更改并发连接上限;超出上限的连接会立即关闭。

工具输出属于不受信任的外部数据。数据集描述、法规标题和其他公开文本可能包含误导性或恶意指令。MCP 客户端和 Agent 宿主必须将工具结果视为数据,而非系统指令,并应在允许强大的同级工具根据此处返回的内容采取行动之前,要求确认或进行策略检查。

测试

默认测试套件具有确定性,不使用网络。它涵盖 JSON-RPC 行为、架构验证、数据提供方解析器、目录打包,以及全部 28 个工具的 tools/call 合约。

PYTHONPATH=src python -m unittest discover -s tests -v

选择加入的实时测试套件会调用所有真实的上游服务:

LUXEMBOURG_MCP_LIVE=1 PYTHONPATH=src \
  python -m unittest tests.test_live_tools -v

当数据源不可用或更改其发布的数据时,实时测试可能会失败。它们还会下载较大的 STATEC、空气质量、Chamber 和 GTFS 资源。

当前限制

  • 用于实时出发信息和行程规划的官方 ATP API 需要个人访问密钥。此项目改为从官方 GTFS 数据源提供无需密钥的静态站点信息。
  • 缓存有容量上限,但仅限单个进程使用。多个工作进程之间不会共享缓存数据。
  • 上游服务的可用性、更新频率、架构和许可仍由各数据生产方控制。
  • 工具覆盖范围尚未与 Allemannsdata 持平。候选内容包括议会投票、法院判决、历史天气、电动汽车充电、道路工程以及更多环境测量数据。

独立性与数据所有权

Luxembourg MCP 是一个社区项目,与 Thomas Heggelund、Allemannsdata、卢森堡政府或其提供数据的任何机构均无关联。

项目不拥有上游数据。各数据生产方的许可和条款仍然适用。工具结果会保留上游来源 URL,方便 Agent 和用户查看权威记录。

许可

Luxembourg MCP 源代码根据 MIT 许可发布。上游公共数据由各自的数据生产方另行许可。


mcp-name: io.github.amirdaraee/luxembourg-mcp

评论

支持 Markdown

第一次接触 MCP?

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

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