Skip to main content
Glama
ominiverdi

open-meteo-mcp-lite

by ominiverdi
README.md
# open-meteo-mcp-lite

A lightweight MCP (Model Context Protocol) server for Open-Meteo weather API.

Simple, fast, no API key required.

## Features

- **Current weather**: temperature, humidity, wind, pressure, UV index
- **Forecasts**: up to 16 days with daily high/low, precipitation, sunrise/sunset
- **Hourly forecasts**: up to 384 hours with temperature, precipitation, wind, pressure, UV index
- **Location search**: geocoding by city name
- **Pressure data**: surface pressure for weather tracking
- **Default location**: set once, query without specifying location

## Installation

```bash
npm install -g open-meteo-mcp-lite
```

Or use with npx:

```bash
npx open-meteo-mcp-lite
```

## Configuration

### OpenCode

Add to your `opencode.json`:

```json
{
  "mcp": {
    "weather": {
      "type": "local",
      "command": ["npx", "-y", "open-meteo-mcp-lite"],
      "enabled": true
    }
  }
}
```

### Claude Desktop

Add to your Claude Desktop config:

```json
{
  "mcpServers": {
    "weather": {
      "command": "npx",
      "args": ["-y", "open-meteo-mcp-lite"]
    }
  }
}
```

## Tools

### set_default_location

Set a default location for weather queries. Stored in `~/.config/open-meteo-mcp-lite/config.json`.

**Parameters:**
- `location` (string, optional): City name to set as default
- `latitude` (number, optional): Latitude coordinate
- `longitude` (number, optional): Longitude coordinate
- `name` (string, optional): Custom name for the location (used with coordinates)

Provide either `location` OR both `latitude`/`longitude`.

### get_default_location

Get the currently configured default location.

### search_location

Search for a location by name to get coordinates.

**Parameters:**
- `query` (string, required): City name or location to search
- `limit` (number, optional): Max results 1-10, default 5

### get_weather

Get current weather conditions. Uses default location if none specified.

**Parameters:**
- `location` (string, optional): City name
- `latitude` (number, optional): Latitude coordinate
- `longitude` (number, optional): Longitude coordinate

### get_forecast

Get weather forecast up to 16 days. Uses default location if none specified.

**Parameters:**
- `location` (string, optional): City name
- `latitude` (number, optional): Latitude coordinate
- `longitude` (number, optional): Longitude coordinate
- `days` (number, optional): Forecast days 1-16, default 7

### get_hourly_forecast

Get hourly weather forecast up to 384 hours (16 days). Uses default location if none specified.

**Parameters:**
- `location` (string, optional): City name
- `latitude` (number, optional): Latitude coordinate
- `longitude` (number, optional): Longitude coordinate
- `hours` (number, optional): Forecast hours 1-384, default 24

## Usage

Set your default location by city name:

```
> set_default_location(location="Barcelona")
Default location set to: Barcelona, Catalonia, Spain
Coordinates: 41.38879, 2.15899
```

Or by exact coordinates:

```
> set_default_location(latitude=41.5247, longitude=2.0214, name="Home")
Default location set to: Home
Coordinates: 41.5247, 2.0214
```

Then just ask for weather without specifying location:

```
> get_weather()
Location: Home

Current Weather (Europe/Madrid)
...
```

## Example Output

### Current Weather

```
Current Weather (Europe/Madrid)
Time: 2025-01-19T22:00

Temperature: 8.5°C
Feels like: 6.2°C
Humidity: 72%
Condition: Partly cloudy

Pressure: 1023.4 hPa

Wind: 12.3 km/h from 270°
Gusts: 18.5 km/h
UV Index: 0
```

### Forecast

```
Weather Forecast (Europe/Madrid)

Mon, Jan 20
  Partly cloudy
  High: 14°C / Low: 5°C
  Precipitation: 0mm (0% chance)
  Wind: up to 15 km/h
  Sunrise: 08:15 / Sunset: 18:02
```

### Hourly Forecast

```
Hourly Forecast (Europe/Madrid)

Mon, Jan 20
00:00  Partly cloudy  8.5°C, feels 6.2°C
       Humidity: 72%, Pressure: 1023.4 hPa
       Precip: 0mm (0%), Wind: 12.3 km/h from 270°, Gusts: 18.5 km/h, UV: 0
```

## Config File

Default location is stored in:
```
~/.config/open-meteo-mcp-lite/config.json
```

## Data Source

Weather data provided by [Open-Meteo](https://open-meteo.com/) - free for non-commercial use.

## License

MIT

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: two manage default location, one searches locations, and three retrieve weather data (current, daily forecast, hourly forecast). Potential overlap between get_forecast and get_hourly_forecast is resolved by descriptions explicitly distinguishing daily vs hourly granularity.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_* for retrieval, set_* for configuration, search_* for lookup. The naming is predictable and uniform across the entire set.

Tool Count5/5

Six tools is well-scoped for a weather API lite server, covering configuration, location search, and three data retrieval modes. The count is neither sparse nor excessive, and each tool serves a necessary function.

Completeness5/5

The tool set covers the core workflow: search location, set/get default location, get current weather, and get daily or hourly forecasts. Minor omissions like clearing a default location or historical data are acceptable given the 'lite' designation, and no critical operation is missing.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive