pegel
German and Swiss river gauges, groundwater and flood levels from ten official sources
Should I use this
Quality & Safety
Findings (2)
- LOWin get_flood_situation
- LOWin get_weather
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pegel": {
"url": "https://fluvigil.de/mcp"
}
}
}Remote endpoints
https://fluvigil.de/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
π’search_stations(query, federalState, locale)
Search stations in Germany and its neighbouring countries β river gauges, groundwater wells, reservoirs, coastal gauges β by name or water body, optionally filtered by region (a German federal state or a country code). latestValue is given in the station's unit.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Station or water name, e.g. \"KΓΆln\" or \"Rhein\"",
"type": "string"
},
"federalState": {
"description": "ISO 3166-2 code for a German state, e.g. DE-NW; CH, AT, CZ, LU or FR for a country",
"type": "string"
},
"locale": {
"description": "Language for classification text (headline/description); defaults to German",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"totalMatches": {
"type": "number",
"description": "Matches before the result cap"
},
"stations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"water": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"federalState": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"measurementType": {
"type": "string",
"description": "river | groundwater | sea_level | reservoir"
},
"latestValue": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latest level, in `unit`"
},
"unit": {
"type": "string",
"description": "cm over gauge zero; m ΓΌ. NN for wells; the datum unit (m ΓΌ. M., m ΓΌ. A.) for gauges reporting an absolute elevation"
},
"latestValueCentimeters": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Stored raw value; an elevation Γ100 where unit is not cm"
},
"lhpClass": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"floodWarning": {
"anyOf": [
{
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"providerLabel": {
"type": "string",
"description": "Credit line of the warning service"
},
"sectionCode": {
"type": "string"
},
"sectionName": {
"type": "string"
},
"level": {
"type": "number",
"description": "1 no particular vigilance β¦ 4 exceptional flood"
},
"levelLabel": {
"type": "string"
},
"publishedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"infoUrl": {
"type": "string"
}
},
"required": [
"provider",
"providerLabel",
"sectionCode",
"sectionName",
"level",
"levelLabel",
"publishedAt",
"infoUrl"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "The river section warning this gauge inherits; it describes the reach, not the gauge"
}
},
"required": [
"id",
"name",
"water",
"federalState",
"measurementType",
"latestValue",
"unit",
"latestValueCentimeters",
"lhpClass",
"floodWarning"
],
"additionalProperties": {}
}
},
"note": {
"description": "Present when the result was capped",
"type": "string"
}
},
"required": [
"totalMatches",
"stations"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}π’get_flood_situation(federalState, locale)
Current flood situation: stations with an active LHP flood class (1 small β¦ 4 very large), optionally per federal state.
Input Schema
{
"type": "object",
"properties": {
"federalState": {
"description": "ISO 3166-2 code, e.g. DE-BY",
"type": "string"
},
"locale": {
"description": "Language for classification text (headline/description); defaults to German",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"stationsWithFlood": {
"type": "number"
},
"countByClass": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "Station count per flood class name"
},
"stations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"water": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"federalState": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"lhpClass": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"lhpClassName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"water",
"federalState",
"lhpClass",
"lhpClassName"
],
"additionalProperties": {}
}
}
},
"required": [
"stationsWithFlood",
"countByClass",
"stations"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}π’get_station(stationId, locale)
Master data of one station: measurement type, current value with its unit, thresholds (MNW/MHW, alert marks, as stored valueCentimeters), flood class, coordinates.
Input Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string",
"description": "Namespaced station id, e.g. \"pegelonline:<uuid>\" or \"lhp:BY_10026301\""
},
"locale": {
"description": "Language for classification text (headline/description); defaults to German",
"type": "string",
"enum": [
"de",
"en"
]
}
},
"required": [
"stationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"water": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
},
"measurementType": {
"type": "string",
"description": "river | groundwater | sea_level | reservoir"
},
"latestValue": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Latest level, in `unit`"
},
"unit": {
"type": "string"
},
"valueDivisor": {
"type": "number",
"description": "Divide any valueCentimeters by this to read it in `unit`"
},
"latestValueCentimeters": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"latestMeasuredAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"thresholds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"shortname": {
"type": "string"
},
"valueCentimeters": {
"type": "number"
}
},
"required": [
"shortname",
"valueCentimeters"
],
"additionalProperties": {}
}
},
"floodWarning": {
"anyOf": [
{
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"providerLabel": {
"type": "string",
"description": "Credit line of the warning service"
},
"sectionCode": {
"type": "string"
},
"sectionName": {
"type": "string"
},
"level": {
"type": "number",
"description": "1 no particular vigilance β¦ 4 exceptional flood"
},
"levelLabel": {
"type": "string"
},
"publishedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"infoUrl": {
"type": "string"
}
},
"required": [
"provider",
"providerLabel",
"sectionCode",
"sectionName",
"level",
"levelLabel",
"publishedAt",
"infoUrl"
],
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "The river section warning this gauge inherits; it describes the reach, not the gauge"
}
},
"required": [
"id",
"name",
"water",
"latitude",
"longitude",
"measurementType",
"latestValue",
"unit",
"valueDivisor",
"latestValueCentimeters",
"latestMeasuredAt",
"thresholds",
"floodWarning"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}π’get_readings(stationId, from, to, type)
Time series for a station (downsampled to β€200 points; history depth on this tier: last 90 days, default last 7 days). type "level" (default) β level series as stored valueCentimeters: centimetres above gauge zero for most gauges, but an elevation Γ100 for groundwater wells and for gauges reporting an absolute elevation (Swiss gauges, the Neusiedler See) β divide by valueDivisor to read it in unit. type "discharge" β discharge Q in mΒ³/s where the station provides it.
Input Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string",
"description": "Namespaced station id, e.g. \"pegelonline:<uuid>\" or \"lhp:BY_10026301\""
},
"from": {
"description": "ISO 8601 start, e.g. 2026-06-01T00:00:00Z",
"type": "string"
},
"to": {
"description": "ISO 8601 end, defaults to now",
"type": "string"
},
"type": {
"description": "Series type: level (default) or discharge (mΒ³/s)",
"type": "string",
"enum": [
"level",
"discharge"
]
}
},
"required": [
"stationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string"
},
"unit": {
"description": "Unit of a level series; absent for discharge",
"type": "string"
},
"valueDivisor": {
"description": "Divide valueCentimeters by this to read in unit",
"type": "number"
},
"count": {
"type": "number"
},
"summary": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "Min and max (level: in unit) and latest point; null when empty"
},
"readings": {
"description": "Level series as stored valueCentimeters",
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": {}
}
},
"discharge": {
"description": "Discharge series, mΒ³/s",
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": {}
}
},
"note": {
"description": "Present when the series was downsampled",
"type": "string"
}
},
"required": [
"stationId",
"count",
"summary"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}π’get_weather(stationId)
Daily weather forecast at the station coordinate (DWD data via Bright Sky).
Input Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string",
"description": "Namespaced station id, e.g. \"pegelonline:<uuid>\" or \"lhp:BY_10026301\""
}
},
"required": [
"stationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string"
},
"stationName": {
"type": "string"
},
"attribution": {
"type": "string"
},
"available": {
"type": "boolean",
"description": "False when the forecast provider is unreachable"
},
"daily": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": {}
}
},
{
"type": "null"
}
]
}
},
"required": [
"stationId",
"stationName",
"attribution",
"available",
"daily"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}π’get_forecast(stationId, horizonHours)
Newest published water-level forecast for a station: the median of the state agency model run, future points within the horizon. Only gauges whose state publishes numeric forecasts have one, so an empty result is normal. Indicative, not an official warning.
Input Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string",
"description": "Namespaced station id, e.g. \"lhp:RP_2640010\""
},
"horizonHours": {
"description": "Hours ahead, default 72, capped at 240",
"type": "number"
}
},
"required": [
"stationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"stationId": {
"type": "string"
},
"horizonHours": {
"type": "number"
},
"unit": {
"type": "string"
},
"valueDivisor": {
"type": "number",
"description": "Divide valueCentimeters by this to read it in `unit`"
},
"generatedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Model run time; null when none was published"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"count": {
"type": "number"
},
"points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"validAt": {
"type": "string"
},
"valueCentimeters": {
"type": "number"
}
},
"required": [
"validAt",
"valueCentimeters"
],
"additionalProperties": {}
}
},
"note": {
"type": "string"
}
},
"required": [
"stationId",
"horizonHours",
"unit",
"valueDivisor",
"generatedAt",
"source",
"count",
"points",
"note"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}Community
Evidence