Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_temperature | Retrieves current water temperature for a single city. Takes Use this for quick temperature checks and simple "how warm is the water?" questions.
Returns temperature in Celsius, Swiss German description (e.g., For multiple cities: Use Args:
city: City identifier (e.g., Returns: Dictionary containing: - city (str): City identifier - temperature (float): Water temperature in Celsius - temperature_text (str): Swiss German description - swiss_german_explanation (str): English translation of Swiss German phrase - name (str): Location name - warning (str | None): Safety warning if flow is dangerous - suggestion (str): Swimming recommendation based on temperature - seasonal_advice (str): Season-specific swimming guidance - temperature_prec (float): Precise temperature value - temperature_text_short (str): Short temperature description - longname (str): Full location name |
| get_current_conditions | Retrieves comprehensive swimming conditions for a single city. Takes Use this for safety assessments, "is it safe to swim?" questions, and when users need a complete picture before swimming. This is the most detailed single-city tool. For comparing multiple cities: Use Args:
city: City identifier (e.g., Returns: Dictionary containing: - city (str): City identifier - aare (dict): Aare river data with temperature, flow, height, and forecast - location (str): Location name - location_long (str): Full location name - temperature (float): Water temperature in Celsius - temperature_text (str): Swiss German temperature description - swiss_german_explanation (str): English translation - temperature_text_short (str): Short description - flow (float): Flow rate in m³/s - flow_text (str): Flow description - height (float): Water height in meters - forecast2h (float): Temperature forecast for 2 hours - forecast2h_text (str): Forecast description - warning (str | None): Safety warning if applicable - seasonal_advice (str): Season-specific guidance - weather (dict | None): Current weather conditions - forecast (dict | None): Weather forecast |
| get_historical_data | Retrieves historical time-series data for trend analysis. Takes Use this for questions like "how has temperature changed this week?" or "what was the warmest day this month?" Args:
city: City identifier (e.g., Returns: Dictionary containing: - timestamps (list[str]): ISO 8601 timestamps for each data point - temperatures (list[float]): Water temperatures in Celsius - flows (list[float]): Flow rates in m³/s - city (str): City identifier - start (str): Start timestamp of data range - end (str): End timestamp of data range |
| get_flow_danger_level | Retrieves current flow rate and safety assessment. Takes Use this for safety-critical questions about current strength and danger. Flow thresholds:
Args:
city: City identifier (e.g., Returns: Dictionary containing: - city (str): City identifier - flow (float | None): Current flow rate in m³/s - flow_text (str | None): Flow description - flow_threshold (float): Danger threshold for this location - safety_assessment (str): Safety evaluation (e.g., 'Safe', 'Dangerous') - danger_level (int): Numeric danger level (1-5, higher is more dangerous) |
| compare_cities | ⚡ FAST: Compare multiple cities with parallel fetching (8-13x faster). This is the recommended tool for comparing cities. Fetches all city data concurrently instead of sequentially. Performance: 10 cities in ~60-100ms vs ~800ms sequential Args:
cities: List of city identifiers (e.g., Returns: Dictionary with comparison results including temperature ranking, safety status, and recommendations: - cities (list): List of city data with temperature, flow, safety - warmest (dict): City with highest temperature - coldest (dict): City with lowest temperature - safe_count (int): Number of cities with safe flow levels - total_count (int): Total number of cities compared |
| get_forecasts | ⚡ FAST: Get forecasts for multiple cities in parallel (2-5x faster). This is the recommended tool for batch forecast operations. Fetches all forecasts concurrently. Args:
cities: List of city identifiers (e.g., Returns: Dictionary mapping city names to forecast data: - forecasts (dict): Map of city to forecast data with current temp, 2-hour forecast, and trend |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-swimming-report | Generates comprehensive daily swimming report combining conditions, safety. **Args:** city: City to generate the report for (default: `Bern`). Use `compare_cities` to discover available locations. include_forecast: Whether to include 2-hour forecast in the report (default: `true`) **Returns:** Prompt template string instructing the LLM to create a formatted report with current conditions, safety assessment, forecast, and recommendations. The report includes Swiss German descriptions and safety warnings. |
| compare-swimming-spots | Generates comparison of all swimming locations ranked by temperature and safety. **Args:** min_temperature: Optional minimum temperature threshold in Celsius (e.g., `18.0`). Filter out cities below this temperature. safety_only: Whether to show only safe locations (flow < 150 m³/s). Default: `false`. **Returns:** Prompt template string instructing the LLM to compare all cities, rank them by temperature and safety, and provide a recommendation for the best swimming location today. |
| weekly-trend-analysis | Generates trend analysis showing temperature and flow patterns with outlook. **Args:** city: City to analyze (default: `Bern`). Use `compare_cities` to discover locations. days: Number of days to analyze (`3`, `7`, or `14`). Default: `7` days (one week). **Returns:** Prompt template string instructing the LLM to analyze historical data, identify temperature and flow trends, and provide outlook recommendations for optimal swimming times. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_cities_resource | Retrieves the complete list of cities with Aare monitoring stations. Returns JSON array containing city identifiers, full names, coordinates, and current temperature readings for all monitored locations. Use this resource for location discovery and initial data exploration. Returns: JSON string with array of city objects, each containing: - city (str): City identifier (e.g., 'Bern', 'Thun') - name (str): Display name - longname (str): Full location name - coordinates (object): Latitude and longitude - aare (float): Current water temperature in Celsius |