irm-kmi-mcp
An MCP server exposing official Belgian weather data from the Royal Meteorological Institute of Belgium (IRM/KMI): observed conditions, daily and hourly forecasts, 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")
"Any warnings in Belgium right now?" → warnings()
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, plus the official IRM text bulletin in fr/nl/en/de.
- Hourly forecast (1–49 h): temperature, precipitation, pressure, wind and gusts.
- Official weather warnings: yellow/orange/red alerts, either for a single municipality (with level and validity period) or for the whole country.
- Municipality resolution by name: "Namur", "Bruxelles", "Oostende", … resolved through the IRM's own city search.
- Caching: weather data is cached for 10 minutes, city lookups for 24 hours.
Tools
| Tool | Parameters | Returns |
|---|---|---|
current_conditions |
commune |
temperature, condition (ww code + canonical English label), UV index, day/night, sunrise/sunset |
daily_forecast |
commune, days (1–8, default 3), language (fr/nl/en/de) |
per day: temps, condition (ww code + label), wind, precipitation, official text |
hourly_forecast |
commune, hours (1–49, default 24) |
per hour: temperature, condition (ww code + label), precipitation, pressure, wind |
warnings |
commune (optional), language |
alert type, 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,enorde. 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file irm_kmi_mcp-1.0.1.tar.gz.
File metadata
- Download URL: irm_kmi_mcp-1.0.1.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1bbb5ccedbdd58ca6ce75710a9ecf912cfbfed4826c633dcc7e4e831e69e234
|
|
| MD5 |
6e3e32a103197824e3e328c35329913c
|
|
| BLAKE2b-256 |
78302bce6c3407cc976d682cf887cdb3a52d7a8b5faab219c41634843483705f
|
File details
Details for the file irm_kmi_mcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: irm_kmi_mcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82907ccf82c839c26b2a477e0ec9973b61fa4d22bb4d68e7aed0970404765dd4
|
|
| MD5 |
87f4335602dfdf24bfae07c645345cd7
|
|
| BLAKE2b-256 |
a2f187615fff9b415e2221f1b658d64af7047080abe7aa1f9cad4146c7ff050e
|