# Meteostat MCP

> Meteostat connects your AI agent to one of the largest databases of historical weather and climate data. It handles everything from basic daily averages to complex, multi-decade climate normals. Whether you need records for a specific station or must interpolate data for an arbitrary coordinate, this server gives you tools for hourly, daily, monthly observations across any location on Earth.

## Overview
- **Category:** data-analytics
- **Price:** Free
- **Tags:** weather-data, historical-weather, climate-statistics, meteorology, geospatial

## Description

You need historical weather data for your project? This Meteostat server connects your AI agent to one of the biggest databases out there. Forget building complex scrapers or juggling multiple API endpoints; you just let your agent use specific tools to pull precise meteorological records for any time scale and location type.

**Querying Specific GPS Points: When You Don't Know a Station ID**

If you only have coordinates—latitude and longitude—and no known weather station nearby, you can still get solid data. The server gives your agent tools that extrapolate historical observations for that exact spot on Earth. To pull **hourly** records, use `point_hourly` to retrieve granular measurements like temperature or wind speed hour by hour. If you need the whole day summarized, `point_daily` gets those full daily statistics. For a broader view of seasonality, `point_monthly` pulls aggregated monthly weather stats for any given point.

**Accessing Established Weather Stations: Real Records Only**

When you know an established station ID (like one from the national network), your agent reads actual recorded measurements—no guessing involved. If you're looking at detailed records, `stations_hourly` retrieves hourly observations for that specific station; just remember it’s limited to thirty days per request. For a full day summary, use `stations_daily`, keeping in mind that this tool caps requests at ten years of data. Need the monthly rundown from a known station? `stations_monthly` gives you those summarized historical statistics.

**Finding Stations and Checking Metadata**

You don't always know the ID you need. The server helps you figure it out first. If your target location is unknown, use `stations_nearby`. You just give it GPS coordinates and a radius, and it spits back a list of all operational weather stations within that zone. Once you have an ID, you can check its background using `stations_meta`; this tool looks up detailed descriptive info about the station, including whether it uses WMO or ICAO identifiers.

**Calculating Climate Normals: Long-Term Baselines**

For long-term research, your agent needs baseline data. The server gives you two ways to calculate the 30-year average climate normals. You can run `point_normals` on an arbitrary coordinate to get a general area's baseline temperature and precipitation figures. Alternatively, if you want the official historical normal for a known station, use `stations_normals` with that station’s ID.

**Summary of Capabilities**

*   **Interpolation:** Get extrapolated hourly, daily, or monthly weather records using coordinates via `point_hourly`, `point_daily`, and `point_monthly`. 
*   **Direct Station Query:** Pull recorded historical data (hourly/daily/monthly) tied to specific station IDs through `stations_hourly`, `stations_daily`, and `stations_monthly`. 
*   **Station Discovery:** Find the closest monitoring sites using GPS coordinates via `stations_nearby`, then check details with `stations_meta`. 
*   **Climate Baseline:** Determine 30-year averages—either for a specific point (`point_normals`) or an established station (`stations_normals`).

Your AI agent uses these tools to handle everything from basic daily averages to complex, multi-decade climate normals. You just tell it what you need.

## Tools

### point_daily
Gets historical weather statistics for an arbitrary point location on Earth, day by day.

### point_hourly
Retrieves granular historical weather observations (like temperature and wind speed) for a specific coordinate, hour by hour.

### point_monthly
Gets aggregated monthly weather statistics for any given point location.

### point_normals
Calculates the 30-year average climate normals (baseline data) for an arbitrary coordinate.

### stations_daily
Gets historical daily statistics from a known weather station ID; limited to 10 years per request.

### stations_hourly
Retrieves detailed hourly observations for an established station ID; limited to 30 days per request.

### stations_meta
Looks up descriptive details for a specific weather station using its unique identifier (WMO or ICAO).

### stations_monthly
Gets summarized historical monthly statistics from an established station ID.

### stations_nearby
Searches and lists all available weather stations within a specified radius of given GPS coordinates.

### stations_normals
Retrieves the 30-year average climate normals (baseline data) for an established station ID.

## Prompt Examples

**Prompt:** 
```
Find weather stations within 20km of Lisbon (38.7, -9.1) using stations_nearby.
```

**Response:** 
```
I found several stations near Lisbon. The closest is 'Lisboa / Geofisico' (ID: 08535) at 1.2km away, and 'Lisboa / Portela' (ID: 08536) at 6.5km. Which one should I pull data from?
```

**Prompt:** 
```
What was the daily weather in New York (40.71, -74.00) during the first week of January 2023? Use point_daily.
```

**Response:** 
```
Retrieving interpolated data for New York... During the first week of Jan 2023, temperatures ranged from a high of 14°C on Jan 4th to a low of 2°C on Jan 1st. There was light rain recorded on Jan 5th.
```

**Prompt:** 
```
Get the 30-year climate normals for station 10637.
```

**Response:** 
```
Fetching climate normals for station 10637 (Frankfurt am Main)... The average annual temperature is 10.6°C, with July being the warmest month (avg 20.1°C) and January the coldest (avg 1.6°C).
```

## Capabilities

### Retrieve historical data for a specific GPS point
Fetches extrapolated hourly, daily, or monthly weather records for any latitude and longitude on Earth.

### Query actual measurements from known stations
Pulls recorded historical observations (hourly/daily/monthly) tied to specific, established weather station IDs.

### Determine nearby weather monitoring sites
Uses GPS coordinates and a radius to find the closest operational weather stations in the network.

### Calculate long-term climate averages (Normals)
Retrieves 30-year average temperature and precipitation data for both specific points and known station locations.

### Check station metadata
Looks up detailed information about a weather station, including its WMO or ICAO identifiers.

## Use Cases

### Analyzing wildfire risk over a decade.
A forestry consultant needs to know if current drought levels are anomalous. They first use `stations_nearby` to find stations near the burn zone, then run `stations_daily` and compare the results against the long-term baseline provided by `stations_normals` for that region.

### Determining optimal placement for a new solar farm.
A developer doesn't have an existing station ID. They use `point_daily` on multiple candidate coordinates to model the average annual solar irradiance and temperature fluctuations, ensuring they pick the site with the most consistent historical output.

### Assessing airport viability for expansion.
The planning team needs reliable historical wind data. They use `stations_hourly` on the nearest major airport station ID to gather granular flight pattern data, which is much more precise than general point interpolation.

### Building a global climate change model.
A research team pulls long-term monthly averages (`point_monthly`) from several different coordinates across the globe. This allows them to build models that account for regional variability without needing data from every single existing station.

## Benefits

- You can pull hourly records for a single point using `point_hourly`, letting you track micro-changes at any exact latitude/longitude, perfect for localized environmental models. This avoids the need to guess which station is closest and provides continuous data flow.
- When you're planning an event or construction site far from existing infrastructure, use `stations_nearby` first. It maps out all local stations so you know exactly what kind of historical context data is available for your area.
- Comparing current conditions to a 30-year average is fast. Both `point_normals` and `stations_normals` let you establish a reliable climate baseline with one tool call, which is critical for impact studies.
- The server separates station records from point interpolation. If you need recorded data (e.g., 'What did Station 123 actually measure?'), use the `stations_*` tools. If you just have coordinates, stick to the `point_*` suite.
- Need more context on a specific site? Use `stations_meta` to pull WMO or ICAO IDs before querying historical data. This ensures your agent is using the correct identifier for deep lookups.

## How It Works

The bottom line is: you write a prompt, your AI agent figures out which historical dataset to hit, runs it for you, and gives you clean numbers.

1. Subscribe to the Meteostat Server and input your API Key into your AI client.
2. Ask your agent for specific historical data (e.g., 'What was the average temp in Paris on June 12, 2019?').
3. The agent selects the correct tool (`point_daily`, `stations_nearby`, etc.), executes it with parameters, and returns the structured weather data.

## Frequently Asked Questions

**How do I get historical daily weather for a random coordinate?**
Use the `point_daily` tool. This tool extrapolates data across the entire globe based on coordinates, making it perfect when you don't have an official station ID nearby.

**Can I get 30-year climate normals for a specific weather station?**
Yes, use `stations_normals`. This tool reads the established long-term average data (the 'normal') directly from a known station ID, providing vital context against recent measurements.

**What's the difference between `point_daily` and `stations_daily`?**
`Point_daily` interpolates data for coordinates you provide; it assumes weather patterns based on surrounding stations. `Stations_daily` reads actual, recorded measurements taken by a specific, established station ID.

**Which tool should I use to find nearby weather monitoring sites?**
Start with the `stations_nearby` tool. Give it your GPS coordinates and radius, and it will return a list of available stations you can then query using their IDs.

**How do I get hourly data for a point location?**
Use `point_hourly`. This retrieves granular historical observations (temp, wind, etc.) for an exact coordinate over time. Remember this tool has specific limits per request.

**What identifiers should I provide to `stations_meta` if I need detailed information about a weather station?**
The tool requires you to specify at least one identifier. You must include the station's ID, WMO number, or ICAO code in your request payload. This process lets you verify which stations are available before pulling any time-series data.

**If I only need annual summaries, is `stations_monthly` better than getting and processing daily records with `stations_daily`?**
Yes. Use `stations_monthly` directly for streamlined access to seasonal data. It aggregates the required statistics at a monthly level, saving you from fetching and having to process dozens of individual day entries.

**How does `point_normals` calculate climate averages, and what is the required input for global location data?**
The tool calculates 30-year average climate normals based on a precise latitude/longitude coordinate. You must provide exact decimal coordinates in your request to define the single geographic point you are analyzing.

**How can I find weather data for a location that doesn't have a specific weather station?**
You can use the `point_hourly` or `point_daily` tools. These tools use interpolation to calculate weather data for any geographic coordinate (latitude/longitude) by combining data from surrounding stations.

**What is the difference between historical data and climate normals?**
Historical tools like `stations_daily` provide actual observations for specific dates. The `stations_normals` tool provides long-term statistical averages (usually over 30 years), which represent the 'typical' weather for a location.

**Can I get weather data in Fahrenheit instead of Celsius?**
Yes. Most tools, such as `stations_hourly` and `point_daily`, include an optional `units` parameter. You can set this to 'imperial' to receive data in Fahrenheit and other non-metric units.