Skip to main content
Glama
kthys

irm-kmi-mcp Belgium Weather

irm-kmi-mcp

License: MIT Python 3.10+ PyPI version

An MCP server exposing official Belgian weather data from the Royal Meteorological Institute of Belgium (IRM/KMI): observed conditions, daily and hourly forecasts, a radar-based rain nowcast, pollen levels and weather warnings, for MCP clients such as Claude, Hermes or Openclaw.

"What's the weather in Namur?"            →  current_conditions("Namur")
"Forecast for Oostende, 5 days, in Dutch" →  daily_forecast("Oostende", days=5, language="nl")
"Will it rain soon in Brussels?"          →  rain_forecast("Bruxelles")
"How bad is the pollen today?"            →  pollen()
"Any warnings in Belgium right now?"      →  warnings(country="BE")

Features

  • Observed conditions: temperature, condition, UV index, sunrise/sunset from the nearest IRM weather station.

  • Daily forecast (1–8 days): min/max temperature, condition, wind, precipitation, sunrise/sunset, plus the official IRM text bulletin in fr/nl/en/de (can be omitted to save tokens).

  • Hourly forecast (1–49 h): temperature, precipitation, pressure, wind and gusts — every row carries an absolute ISO-8601 timestamp (Brussels time).

  • Rain nowcast: radar-based precipitation per 10-minute frame for roughly the next 5 hours; answers "will it rain soon?" far more cheaply than the hourly forecast.

  • Pollen levels: official daily pollen levels (grasses, birch, mugwort, …) when in season.

  • Official weather warnings: yellow/orange/red alerts, either for a single municipality (with level and validity period) or country-wide (filterable to BE, NL or LU).

  • Locations by name or coordinates: "Namur", "Bruxelles", "Oostende", … resolved through the IRM's own city search, or given directly as WGS84 latitude/longitude.

  • Token-lean output: unknown fields are omitted rather than sent as nulls.

  • Caching & resilience: weather data is cached for 10 minutes, city lookups for 24 hours; transient network errors are retried automatically.

Tools

Every location-taking tool accepts either commune (municipality name) or latitude + longitude (WGS84).

Tool

Parameters (besides location)

Returns

current_conditions

temperature, condition (ww code + canonical English label), UV index, day/night, sunrise/sunset

daily_forecast

days (1–8, default 3), language (fr/nl/en/de), include_text (default true)

per day: temps, condition (ww code + label), wind, precipitation, sunrise/sunset, official text

hourly_forecast

hours (1–49, default 24)

per hour: absolute time, temperature, condition (ww code + label), precipitation, pressure, wind

rain_forecast

language

unit, official IRM hint, precipitation per 10-min frame (only frames expecting rain)

pollen

per-species pollen level (none, active, low, moderate, high, very high), national

warnings

language, country (BE/NL/LU, country-wide only)

alert type (name + canonical slug), text; level + validity for a municipality, per-region level/validity otherwise

Data source & disclaimer

⚠️ Unofficial. This project is not affiliated with the IRM/KMI. It works by calling the same backend service that powers the official IRM mobile app. That service was never meant for public use: it is undocumented and it can break or disappear without notice. Please use it for personal, low-frequency purposes only.

The API surface was reverse-engineered and documented by Jules Dejaeghere in jdejaegh/irm-kmi-api and jdejaegh/irm-kmi-ha. Many thanks for the groundwork. This project is not affiliated with, sponsored or endorsed by the IRM/KMI.

Installation

From PyPI:

pip install irm-kmi-mcp

…or run it zero-install on every invocation with uvx (recommended for MCP clients — no venv to manage):

uvx irm-kmi-mcp

See Development below for installing from source.

Usage

Run the server (stdio transport):

irm-kmi-mcp
# or
python -m irm_kmi_mcp

Claude Desktop

Zero-install with uvx (recommended):

{
  "mcpServers": {
    "irm-kmi-mcp": {
      "command": "uvx",
      "args": ["irm-kmi-mcp"]
    }
  }
}

Or, after pip install irm-kmi-mcp:

{
  "mcpServers": {
    "irm-kmi-mcp": {
      "command": "irm-kmi-mcp"
    }
  }
}

To set a default language (see Configuration), add an "env" key to either form, e.g. "env": { "IRM_LANG": "fr" }.

Hermes Agent

After pip install irm-kmi-mcp (so the irm-kmi-mcp command is on PATH):

# config.yaml
mcp_servers:
  irm-kmi-mcp:
    command: "irm-kmi-mcp"
    enabled: true
    # env:
    #   IRM_LANG: "fr"  # optional: default language for official texts

No API keys or configuration required. The daily request key is derived automatically.

Configuration

  • IRM_LANG: default language for official texts (bulletins, warning texts, day names, wind directions): fr, nl, en or de. Unset or invalid values fall back to English. Read once at server startup; set it before launching the server.

Development

Install from source in an editable dev environment:

git clone https://github.com/kthys/irm-kmi-mcp.git
cd irm-kmi-mcp
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest
.venv/bin/ruff check .

Tests run against recorded API responses (tests/fixtures/) with a mocked HTTP transport, so no network access is required. Re-record fixtures after upstream API changes.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kthys/irm-kmi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server