# Aare.guru MCP Server

A Model Context Protocol (MCP) server that provides access to the Aare.guru API for getting water temperature and swimming conditions of the Aare river in Switzerland.

## Features

This MCP server provides the following tools:

- **get_cities**: Get list of all available monitoring locations
- **get_current_conditions**: Get comprehensive current data (temperature, flow, forecasts) for a specific location
- **get_today_summary**: Get minimal current temperature and swimming recommendation
- **get_widget_data**: Get current data for all locations at once
- **get_historical_data**: Get historical time series data for temperature, flow, and air temperature

## Requirements

- Node.js 18 or newer

## Installation

### Using npx (Recommended)

```bash
npx aareguru-mcp
```

### Global Installation

```bash
npm install -g aareguru-mcp
aareguru-mcp
```

### Local Development

```bash
git clone <repository-url>
cd aareguru-mcp
npm install
npm start
```

## Usage with Claude Desktop

Add the following to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "aareguru": {
      "command": "npx",
      "args": ["aareguru-mcp"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "aareguru": {
      "command": "aareguru-mcp"
    }
  }
}
```

## Available Tools

### get_cities

Get a list of all available monitoring locations along the Aare river.

**Parameters:** None required

- `app` (optional): App identifier
- `version` (optional): Version number
- `values` (optional): Specific values to extract

### get_current_conditions

Get comprehensive current conditions for a specific location.

**Parameters:**

- `city` (optional, default: "bern"): Location identifier (e.g., "bern", "thun")
- `app` (optional): App identifier
- `version` (optional): Version number
- `values` (optional): Specific values to extract

### get_today_summary

Get a minimal summary with current temperature and swimming recommendation.

**Parameters:**

- `city` (optional, default: "bern"): Location identifier
- `app` (optional): App identifier
- `version` (optional): Version number
- `values` (optional): Specific values to extract

### get_widget_data

Get current data for all locations simultaneously.

**Parameters:**

- `app` (optional): App identifier
- `version` (optional): Version number
- `values` (optional): Specific values to extract

### get_historical_data

Get historical time series data for water temperature, flow, and air temperature.

**Parameters:** (all required)

- `city`: Location identifier
- `start`: Start date/time (ISO format, timestamp, "yesterday", "-1 day", etc.)
- `end`: End date/time (ISO format, timestamp, "now", etc.)
- `app` (optional): App identifier
- `version` (optional): Version number
- `values` (optional): Specific values to extract

## Example Queries

Once connected to Claude Desktop, you can ask questions like:

- "What's the current water temperature in Bern?"
- "Show me all available Aare monitoring locations"
- "Get the historical data for Thun from last week"
- "What are the current swimming conditions across all locations?"

## API Data

This server connects to the Aare.guru API (https://aare.guru), which provides:

- Current water temperature
- Water flow/discharge rates
- Air temperature
- Swimming recommendations and "Sprüche" (sayings)
- Weather forecasts
- Historical data
- Multiple monitoring locations along the Aare river


## License

GNU General Public License v3.0

## Credits

Data provided by [Aare.guru](https://aare.guru) and the [BAFU](https://www.bafu.admin.ch). The API is intended for non-commercial public use only.

This MCP server is not officially affiliated with Aare.guru but uses their public API in accordance with its terms of service.
