Luxembourg MCP
A keyless Model Context Protocol server providing 44 read-only tools to access official Luxembourg public data, including legislation, statistics, live mobility, environment, parliament, and geodata, with every response traced to its official upstream source.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.luxembourg-mcp.com/mcpWhat its tools do
44 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (44)
search_datasetsget_datasetgeocode_addressreverse_geocodelist_geo_collectionsget_geo_featuresget_weather_alertssearch_legislationsearch_statisticsget_statisticsget_city_parkinglist_cfl_parkingget_cfl_parkingget_trafficget_water_levelsget_air_qualitysearch_chamber_bodiesget_accessibility_figuresget_accessibility_auditssearch_transit_stopsget_city_mobilityget_weather_observationsget_public_holidayssearch_parliamentary_questionsget_housing_pricesget_election_resultsget_ev_chargingget_waste_collectionsget_weather_forecastget_fuel_pricesget_public_alertsget_commune_leadersget_commune_populationget_pharmacies_on_dutyget_electricity_pricesget_carsharingget_bike_sharingsearch_tendersget_plenary_votesget_deputieslookup_luxembourgishget_traffic_eventsget_electricity_gridget_unemployment
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search Luxembourg's national open-data catalogue and inspect dataset metadata
- Retrieve official legislation, parliamentary questions, and election results
- Access live mobility data such as parking availability, traffic sensors, and transit stops
- Query environmental data including weather forecasts, air quality, and water levels
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- luxembourg-mcp 0.8.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 44 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
44 advertised
search_datasets
Search Luxembourg's official data.public.lu catalog.
{
"type": "object",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1
},
"query": {
"type": "string"
},
"page_size": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}get_dataset
Get metadata and current download resources for an official dataset.
{
"type": "object",
"required": [
"dataset_id_or_slug"
],
"properties": {
"dataset_id_or_slug": {
"type": "string"
}
},
"additionalProperties": false
}geocode_address
Resolve a Luxembourg address to official Geoportail coordinates.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
}
},
"additionalProperties": false
}reverse_geocode
Find the nearest official Luxembourg address to WGS84 coordinates.
{
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"additionalProperties": false
}list_geo_collections
Search official Geoportail OGC feature collections by title, description, or keyword.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}get_geo_features
Fetch GeoJSON features from an official Geoportail OGC collection.
{
"type": "object",
"required": [
"collection_id"
],
"properties": {
"bbox": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 4,
"minItems": 4,
"description": "WGS84 [west, south, east, north]"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1
},
"collection_id": {
"type": "string"
}
},
"additionalProperties": false
}get_weather_alerts
Get current official MeteoLux weather warnings published on data.public.lu.
{
"type": "object",
"properties": {
"language": {
"enum": [
"en",
"fr",
"de",
"lu"
],
"type": "string",
"default": "en"
}
},
"additionalProperties": false
}search_legislation
Search official Luxembourg legislation and consolidated laws through Legilux.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}search_statistics
Search STATEC LUSTAT statistical dataflows by topic or title.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}get_statistics
Retrieve recent observations from a STATEC LUSTAT SDMX dataflow.
{
"type": "object",
"required": [
"dataflow_id"
],
"properties": {
"key": {
"type": "string",
"default": "all",
"description": "SDMX dimension key or all"
},
"max_rows": {
"type": "integer",
"default": 500,
"maximum": 2000,
"minimum": 1
},
"dataflow_id": {
"type": "string",
"description": "STATEC identifier such as DF_D7100"
},
"last_n_observations": {
"type": "integer",
"default": 5,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}get_city_parking
Get current Ville de Luxembourg car-park capacity and free spaces.
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"available_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}list_cfl_parking
List official CFL Park and Ride facilities.
{
"type": "object",
"properties": {},
"additionalProperties": false
}get_cfl_parking
Get live occupancy and details for a CFL Park and Ride facility.
{
"type": "object",
"required": [
"parking_id"
],
"properties": {
"parking_id": {
"type": "string"
}
},
"additionalProperties": false
}get_traffic
Get live CITA motorway speed, occupancy, and flow measurements.
{
"type": "object",
"properties": {
"road": {
"enum": [
"a3",
"a4",
"a6",
"a7",
"a13",
"b40"
],
"type": "string",
"default": "a6"
}
},
"additionalProperties": false
}get_water_levels
Get the latest official measured water level at Luxembourg stations.
{
"type": "object",
"properties": {
"station": {
"type": "string",
"description": "Optional station-name filter"
}
},
"additionalProperties": false
}get_air_quality
Get the latest national telemetric air-quality measurements by station.
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Optional city-name filter"
}
},
"additionalProperties": false
}search_chamber_bodies
Search official Chamber committees, delegations, bodies, memberships, and roles.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}get_accessibility_figures
Get national Digital Accessibility Observatory key figures.
{
"type": "object",
"properties": {},
"additionalProperties": false
}get_accessibility_audits
Get the latest public-sector digital accessibility audits.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}search_transit_stops
Search official nationwide public-transport stops from the current ATP GTFS feed.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}get_city_mobility
Get Ville de Luxembourg mobility locations as GeoJSON features.
{
"type": "object",
"required": [
"category"
],
"properties": {
"category": {
"enum": [
"park_and_bike",
"park_and_ride",
"covered_parking",
"surface_parking",
"accessible_parking",
"bike_rentals"
],
"type": "string"
}
},
"additionalProperties": false
}get_weather_observations
Get live MeteoLux weather observations at Luxembourg-Airport: temperature, wind, pressure, humidity, visibility.
{
"type": "object",
"properties": {},
"additionalProperties": false
}get_public_holidays
List Luxembourg legal public holidays in four languages, optionally for one year.
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 2020
}
},
"additionalProperties": false
}search_parliamentary_questions
Search Chamber of Deputies parliamentary questions by keyword, newest first.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}get_housing_prices
Get advertised housing sale prices by commune from the official Observatoire de l'Habitat.
{
"type": "object",
"properties": {
"year": {
"type": "string",
"description": "Four-digit year such as 2025; defaults to the latest"
},
"commune": {
"type": "string",
"description": "Optional commune-name filter"
},
"property_type": {
"enum": [
"apartment",
"house"
],
"type": "string",
"default": "apartment"
}
},
"additionalProperties": false
}get_election_results
Get machine-readable 2023 legislative election results, national and per circonscription.
{
"type": "object",
"properties": {},
"additionalProperties": false
}get_ev_charging
Get Chargy public EV charging stations with live connector availability.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional name or address filter"
},
"available_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}get_waste_collections
Get upcoming municipal waste-collection dates for a Luxembourg commune.
{
"type": "object",
"required": [
"commune"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"street": {
"type": "string",
"description": "Optional street-name filter; commune-wide rows always match"
},
"commune": {
"type": "string"
},
"waste_type": {
"type": "string",
"description": "Optional collection-type filter such as verre, papier, biodechets"
}
},
"additionalProperties": false
}get_weather_forecast
Get the official MeteoLux forecast for a place in Luxembourg: current conditions, 24 hours, 5 days, UV index, sunrise and sunset.
{
"type": "object",
"properties": {
"language": {
"enum": [
"en",
"fr",
"de",
"lb"
],
"type": "string",
"default": "en"
},
"latitude": {
"type": "number",
"default": 49.6116
},
"longitude": {
"type": "number",
"default": 6.1319
}
},
"additionalProperties": false
}get_fuel_prices
Get official monthly Luxembourg prices for petrol, diesel, hydrogen, LPG, home electricity and public EV charging.
{
"type": "object",
"properties": {
"months": {
"type": "integer",
"default": 6,
"maximum": 24,
"minimum": 1
}
},
"additionalProperties": false
}get_public_alerts
Get recent LU-Alert public warnings: floods, storms, food recalls and other national alerts.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1
},
"language": {
"enum": [
"en",
"fr",
"de",
"lb"
],
"type": "string",
"default": "en"
},
"active_only": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}get_commune_leaders
Get the current mayor and aldermen of Luxembourg communes.
{
"type": "object",
"properties": {
"commune": {
"type": "string",
"description": "Optional commune-name filter"
}
},
"additionalProperties": false
}get_commune_population
Get official resident population by commune, split by adults, minors and sex.
{
"type": "object",
"properties": {
"commune": {
"type": "string",
"description": "Optional commune-name filter"
}
},
"additionalProperties": false
}get_pharmacies_on_duty
Get the pharmacies on duty in Luxembourg for a date, with address and phone number.
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD within the published window; defaults to today"
},
"locality": {
"type": "string",
"description": "Optional locality or address filter"
}
},
"additionalProperties": false
}get_electricity_prices
Get Luxembourg day-ahead wholesale electricity prices per quarter hour, with the cheapest and most expensive slots.
{
"type": "object",
"properties": {},
"additionalProperties": false
}get_carsharing
Find currently available CFL FLEX carsharing vehicles by station, town or fuel type.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional station, town, address or model filter"
},
"fuel_type": {
"type": "string",
"description": "Optional fuel filter such as electric or diesel"
}
},
"additionalProperties": false
}get_bike_sharing
Get live Vel'OK bike-sharing availability at stations in southern Luxembourg.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional station, locality or commune filter"
},
"available_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}search_tenders
Search Luxembourg public procurement notices with deadlines, buyers and CPV codes.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Optional full-text filter"
},
"open_only": {
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}get_plenary_votes
Get Chamber of Deputies plenary votes, newest first, with yes/no/abstain tallies per party and optionally how one deputy voted.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Optional subject filter such as a bill number (PL 8727) or keyword"
},
"deputy": {
"type": "string",
"description": "Optional deputy-name filter; adds that deputy's vote"
}
},
"additionalProperties": false
}get_deputies
List the current members of the Chamber of Deputies with party, constituency, start of mandate and official email.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional name, party or constituency filter"
}
},
"additionalProperties": false
}lookup_luxembourgish
Look up a word in the official Luxembourgish dictionary (LOD): translations into German, French, English and Portuguese, pronunciation, forms and examples.
{
"type": "object",
"required": [
"word"
],
"properties": {
"word": {
"type": "string"
},
"limit": {
"type": "integer",
"default": 2,
"maximum": 5,
"minimum": 1
},
"language": {
"enum": [
"lb",
"de",
"fr",
"en",
"pt",
"nl"
],
"type": "string",
"default": "lb",
"description": "Language of the word being looked up"
}
},
"additionalProperties": false
}get_traffic_events
Get live roadworks, lane closures, incidents and equipment faults on Luxembourg motorways from CITA.
{
"type": "object",
"properties": {
"road": {
"type": "string",
"description": "Optional road filter such as A4 or B40"
}
},
"additionalProperties": false
}get_electricity_grid
Get Luxembourg's latest daily electricity load, generation by production type and cross-border flows (ENTSO-E actuals).
{
"type": "object",
"properties": {
"include_series": {
"type": "boolean",
"default": false,
"description": "Also return the 15-minute load and generation series"
}
},
"additionalProperties": false
}get_unemployment
Get monthly ADEM figures: registered resident jobseekers by sex and job vacancies, nationally or for one commune.
{
"type": "object",
"properties": {
"months": {
"type": "integer",
"default": 12,
"maximum": 120,
"minimum": 1
},
"commune": {
"type": "string",
"description": "Optional commune name for local jobseeker counts"
}
},
"additionalProperties": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 2 of 2 checks answered
- 2026-11-09: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1531 ms
- 95th percentile latency
- 1531 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1531 ms · metadata changed · 44 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http luxembourg-mcp-mcp https://mcp.luxembourg-mcp.com/mcpCodex
codex mcp add luxembourg-mcp-mcp --url https://mcp.luxembourg-mcp.com/mcpCursor
{
"mcpServers": {
"luxembourg-mcp-mcp": {
"url": "https://mcp.luxembourg-mcp.com/mcp"
}
}
}Cline
{
"mcpServers": {
"luxembourg-mcp-mcp": {
"type": "streamableHttp",
"url": "https://mcp.luxembourg-mcp.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"luxembourg-mcp-mcp": {
"type": "http",
"url": "https://mcp.luxembourg-mcp.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http luxembourg-mcp-mcp https://mcp.luxembourg-mcp.com/mcpClaude Desktop
https://mcp.luxembourg-mcp.com/mcpWindsurf
{
"mcpServers": {
"luxembourg-mcp-mcp": {
"serverUrl": "https://mcp.luxembourg-mcp.com/mcp"
}
}
}Let your agent find its tools
Find servers like Luxembourg MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.