Data source: Open-Meteo, NWS
https://context.gnist.ai/mcp/open-meteo/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (8)
geocode_locationget_current_weatherget_weather_forecastget_alertsget_historical_weatherget_air_qualityget_marine_forecastreport_feedback
geocode_locationSearch for a city or place name and return matching coordinates.
Use this tool first to convert a place name into latitude/longitude
coordinates, then pass those coordinates to the weather, air quality,
or marine forecast tools.
Returns matching locations with name, coordinates, country, population,
and timezone.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | required | City or place name to search for (e.g. "Oslo", "New York", "Tokyo"). |
count | integer | optional | Maximum number of results to return (1-100). Default 5. (default: 5) |
language | string | optional | Response language as ISO 639-1 code (e.g. 'en', 'de', 'fr'). Default 'en'. (default: "en") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "geocode_location",
"arguments": {
"name": "example"
}
}
}get_current_weatherGet current weather conditions at a location.
Returns current temperature, humidity, wind, precipitation, and description.
Weather descriptions follow the WMO Weather Interpretation Code standard.
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the location (-90 to 90). |
lon | number | required | Longitude of the location (-180 to 180). |
units | string | optional | Unit system: "metric" (C, m/s, mm) or "imperial" (F, mph, inch). (default: "metric") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_current_weather",
"arguments": {
"lat": 1.0,
"lon": 1.0
}
}
}get_weather_forecastGet hourly weather forecast for a location.
Returns hourly forecast entries with temperature, precipitation probability,
wind, and weather description for each hour. Up to 7 days (168 hours).
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the location (-90 to 90). |
lon | number | required | Longitude of the location (-180 to 180). |
hours | integer | optional | Number of hours to forecast (1-168, default 24). (default: 24) |
units | string | optional | Unit system: "metric" (C, m/s, mm) or "imperial" (F, mph, inch). (default: "metric") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_weather_forecast",
"arguments": {
"lat": 1.0,
"lon": 1.0
}
}
}get_alertsGet active severe weather alerts for a location.
Currently covers the United States via the National Weather Service (NWS) API.
Returns an empty list for non-US coordinates.
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the location (-90 to 90). |
lon | number | required | Longitude of the location (-180 to 180). |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_alerts",
"arguments": {
"lat": 1.0,
"lon": 1.0
}
}
}get_historical_weatherGet historical weather data for a location and date range.
Draws from the ERA5 climate reanalysis archive, covering 1940-01-01 to
approximately 5 days before the current date. Returns daily summaries
with max/min/mean temperature, precipitation, and wind speed.
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the location (-90 to 90). |
lon | number | required | Longitude of the location (-180 to 180). |
start_date | string | required | Start of the date range, format YYYY-MM-DD (earliest: 1940-01-01). |
end_date | string | required | End of the date range, format YYYY-MM-DD (latest: ~5 days ago). |
units | string | optional | Unit system: "metric" (C, m/s, mm) or "imperial" (F, mph, inch). (default: "metric") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_historical_weather",
"arguments": {
"lat": 1.0,
"lon": 1.0,
"start_date": "example",
"end_date": "example"
}
}
}get_air_qualityGet air quality forecast for a location.
Returns hourly air quality data including European AQI, US AQI, PM2.5,
PM10, carbon monoxide, nitrogen dioxide, sulphur dioxide, and ozone.
AQI scales:
- European AQI: 0-20 Good, 20-40 Fair, 40-60 Moderate, 60-80 Poor, 80-100 Very Poor, 100+ Extremely Poor
- US AQI: 0-50 Good, 51-100 Moderate, 101-150 Unhealthy (sensitive), 151-200 Unhealthy, 201-300 Very Unhealthy
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the location (-90 to 90). |
lon | number | required | Longitude of the location (-180 to 180). |
hours | integer | optional | Number of hours to forecast (1-120, default 24). (default: 24) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_air_quality",
"arguments": {
"lat": 1.0,
"lon": 1.0
}
}
}get_marine_forecastGet marine/ocean forecast for a coastal location.
Returns hourly wave data including total wave height, direction, and period,
as well as separate wind-wave and swell components. Best for coastal and
offshore locations; inland locations may return null values.
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | required | Latitude of the coastal location (-90 to 90). |
lon | number | required | Longitude of the coastal location (-180 to 180). |
hours | integer | optional | Number of hours to forecast (1-168, default 24). (default: 24) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_marine_forecast",
"arguments": {
"lat": 1.0,
"lon": 1.0
}
}
}report_feedbackReport a bug, feature request, or general feedback for this data source.
Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.
Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "report_feedback",
"arguments": {
"feedback": "example"
}
}
}Quick Start
curl -X POST "https://context.gnist.ai/mcp/open-meteo/" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "geocode_location", "arguments": {"name": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/open-meteo/",
headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "geocode_location",
"arguments": {
"name": "example"
}
}
},
)
print(resp.json())