Weather MCP Server by Meteosource

com.meteosourcePublished by meteosource.comOfficial publisherv0.1.2Updated Nov 2, 2026

Forecasts, severe-weather alerts, air quality, 20-year weather history, solar and wind production.

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

Hosted Meteosource MCP server that gives an assistant weather forecasts, severe-weather alerts, air quality, 20-year history and solar/wind production data.

What you can do
  • Resolve place names, postal codes or coordinates into place IDs
  • Fetch current, hourly, daily and minutely forecasts plus warnings for up to 20 locations
  • Check official severe-weather alerts, designed for frequent polling
  • Query past weather with daily or monthly aggregation, normals and wind distribution
  • Get hourly air-quality and pollutant forecasts about four days ahead
  • Estimate photovoltaic and wind-farm production, past and forecast, from site and installation parameters
When to use it
Useful when an assistant should answer weather questions, monitor warnings for several places, compare past weather with long-term normals, or size and evaluate solar and wind installations without writing API code.
Requirements
A remote Streamable HTTP endpoint; nothing to install or host. A Meteosource API key is required and sent in the Authorization header as a bearer token (an X-API-Key header is also accepted). The key's plan decides which tools work: weather tools need a weather plan, production tools need the Renewables plan. Network access to the hosted endpoint over HTTPS.
Before you install
The API key is a credential: it is sent with every request and is written literally in some client configs, so keep those files out of version control. Calls count against the key's plan quota and rate limit, and long archive requests can exceed default client timeouts. The service logs that calls happened, which tool was used and the outcome. Data is fetched from Meteosource on your behalf.

Installation

In SourceWeft

  1. Open Weather MCP Server by Meteosource in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.meteosource%2Fweather/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "weather-by-meteosource": {
      "type": "http",
      "url": "https://mcp.meteosource.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

Weather MCP Server by Meteosource

Weather data for AI agents. Meteosource hosts the server at

https://mcp.meteosource.com/mcp

It speaks the Model Context Protocol over Streamable HTTP. Connect it to Claude Code, Claude Desktop, Codex, Antigravity or any other MCP client, send your Meteosource API key in a header, and the agent can look up forecasts, official weather warnings, air quality, twenty years of historical weather and the production of PV systems and wind farms.

There is nothing to install and nothing to host. The server keeps no key of its own: every request is served on the key it carries, within the plan that key is on.

Tools

ToolWhat it does
search_placesTurns a place name, a postal code or coordinates into a place_id for the other tools
get_forecastCurrent conditions, hourly (up to 168 h) and daily (up to 30 days) forecast, minute-by-minute precipitation and warnings for up to 20 locations in one call; a variables filter keeps the answer small
get_alertsOfficial severe-weather warnings for up to 20 locations; returns only the locations that have one. USA, EU and Canada
get_weather_historyPast weather, hourly (up to 14 days per call), daily or monthly (up to 366 days per call), aggregated on the server. normals=true adds long-term normals and records; wind_distribution gives hours per wind-speed bin for turbine siting
get_air_qualityHourly air quality about four days ahead: index, PM10, PM2.5, NO₂, SO₂, O₃ and more
get_solar_productionOutput of a PV system, given its location, module and inverter power, tilt and orientation: power per hour, energy per day or month, from 20 years back to four days ahead
get_wind_productionOutput of a wind farm, given its location, turbine model, count or capacity, hub height and terrain: power per hour, energy per day or month, from 20 years back to four days ahead

The server tells the agent how the tools fit together, so a question like "will it rain in Brno tomorrow" ends up as a search_places call followed by get_forecast without you spelling that out.

Before you connect

You need a Meteosource API key. Sign up at meteosource.com (the free plan is enough to try the forecast tools) and copy the key from your account.

The key travels with every request in the Authorization header as Bearer <key>. Each setup below comes down to two values: the URL above and that header.

The rest the server works out itself. It asks Meteosource which plan the key is on and serves the tools that plan includes; a tool outside the plan answers with a sentence saying so. See Plans and limits.

Connect

Claude Code

One command:

bash
claude mcp add --transport http meteosource https://mcp.meteosource.com/mcp \  --header "Authorization: Bearer YOUR_METEOSOURCE_API_KEY"

This registers the server for the current project. Add --scope user to have it in every project. claude mcp list shows whether it connected; inside a session, /mcp lists the tools.

To share the setup with a team without sharing the key, commit a .mcp.json at the project root and let everyone keep their key in an environment variable:

json
{  "mcpServers": {    "meteosource": {      "type": "http",      "url": "https://mcp.meteosource.com/mcp",      "headers": {        "Authorization": "Bearer ${METEOSOURCE_API_KEY}"      }    }  }}

Claude Desktop and claude.ai

Connectors belong to your account, so one added on the web is also there in the desktop app and the other way round.

  1. Open Customize > Connectors (in the desktop app: Settings > Connectors) and click Add custom connector.
  2. Name it Meteosource; the URL is https://mcp.meteosource.com/mcp.
  3. Under Authentication choose No sign-in.
  4. Under Request headers add Authorization with the value Bearer YOUR_METEOSOURCE_API_KEY. Type the word Bearer and the space yourself: Claude sends the value exactly as you enter it.
  5. Click Add. In a chat, open the + menu, choose Connectors and switch Meteosource on.

On Team and Enterprise plans an Owner adds the connector under Organization settings > Connectors and members connect to it from Customize > Connectors. The free plan allows one custom connector.

Codex

Codex CLI, the Codex app and the IDE extension read one file, ~/.codex/config.toml, so the server is configured once for all three. From a terminal:

bash
codex mcp add meteosource --url https://mcp.meteosource.com/mcp \  --bearer-token-env-var METEOSOURCE_API_KEY

and export METEOSOURCE_API_KEY in your shell profile. The section this writes to the file:

toml
[mcp_servers.meteosource]url = "https://mcp.meteosource.com/mcp"bearer_token_env_var = "METEOSOURCE_API_KEY"

The Codex app has its own dialog (Settings > MCP servers > Add server, type Streamable HTTP), but no field for the key. If the app shows the server as failed, it did not get the variable: an app started from the Dock or the Start menu does not see what you export in a terminal. Put the key in the file instead:

toml
[mcp_servers.meteosource]url = "https://mcp.meteosource.com/mcp"http_headers = { Authorization = "Bearer YOUR_METEOSOURCE_API_KEY" }

Codex gives a tool call 60 seconds by default. The first request for a year of archive at a location sends 365 requests to Meteosource and can take longer than that, so give this server more time:

toml
tool_timeout_sec = 600

Restart Codex after editing the file (in the app, Restart on the MCP servers page). codex mcp list shows the result; /mcp in a session lists the connected servers.

Antigravity

The IDE and the CLI (agy) share one configuration file: ~/.gemini/config/mcp_config.json for all projects, or .agents/mcp_config.json inside a project. Add:

json
{  "mcpServers": {    "meteosource": {      "serverUrl": "https://mcp.meteosource.com/mcp",      "headers": {        "Authorization": "Bearer YOUR_METEOSOURCE_API_KEY"      }    }  }}

The key is written out literally; Antigravity does not expand environment variables in this file. If you use the project-level file, keep it out of version control.

In the IDE the same file is reachable from the agent panel: the … menu, MCP Servers, Manage MCP Servers, View raw config. In the CLI, /mcp opens the MCP manager, which shows the connection status and reloads the configuration.

Other clients

Any client that supports MCP over Streamable HTTP works with the same two values, the URL and the header. The server also accepts the key as X-API-Key: <key>, for clients that have a field for an API key but not for a whole header.

Try it

  • What's the weather in Brno this weekend?
  • Are there any weather warnings for Prague, Vienna and Munich right now?
  • Compare last January in Berlin with the long-term normal, day by day.
  • How many hours of wind above 10 m/s did 49.2, 16.6 see in 2025, month by month?
  • Air quality in Kraków for the next two days, hour by hour.
  • How much would a 10 kWp south-facing roof at 50.08, 14.43 have produced last week? (Renewables plan)

Plans and limits

One key is on one Meteosource plan, and the plan decides what the server serves. The weather tools are for the Free, Startup and Standard plans; what each plan includes, and how far back its archive reaches, is on the pricing page. The production tools need the Renewables plan, which in turn has no weather tools.

Days older than the plan's archive need Meteosource's historical add-on. Without it the API refuses such a day with "not allowed to access historical data this old"; the tool reports that for the location concerned and the rest of the call succeeds, so start inside the plan's range.

Per call: up to 20 locations; hourly archive and production up to 14 days, daily or monthly up to 366 days; at most 400 location-days (locations × days) in one call, so a long analysis is several calls. Each location, and each archive or production day, is one request against the key's quota, at the rate limit of its plan. The server keeps a cache, so repeating a call soon afterwards usually costs little or nothing. Cached data is cleared after a while, so a repeat after a longer gap counts against the quota again.

What the agent receives

Time series come back as tables, columns once and rows as arrays, with nested fields flattened (wind_speed, probability_storm, cloud_cover_total). That is four to seven times fewer tokens than the raw API: a week of hourly forecast is about 12 kB, a year of daily archive about 16 kB. The variables parameter trims it further when the agent only needs a few fields. Units default to the local convention of each location; units="metric" forces SI.

Your key and your data

  • Your key is used only to call Meteosource on your behalf. It is never stored in full and never appears in a URL.
  • Caches are kept per key. Nothing fetched for one key is ever served to another.
  • The service records that a call happened, which tool it used and how it went, so the service can be operated.
  • HTTPS only. A request over plain HTTP is refused, so a key cannot be sent in the clear by mistake.

Troubleshooting

The tools appear in the client without a key; only a tool call needs one. When a call fails, the agent gets a sentence it can show you.

The agent reportsWhat to do
"No Meteosource API key was supplied…"The header did not arrive. Check its name and that the value starts with Bearer (with the space).
"Meteosource does not know this API key…"The key is mistyped or revoked. Copy it again from your account.
"This Meteosource API key is disabled…" (or blocked, revoked)Contact Meteosource support.
"This API key is on the 'standard' tier, which has no production endpoints…"The production tools need the Renewables plan.
"This API key is on the 'renewables' tier, which has only the production endpoints…"The weather tools need a weather plan.
"Meteosource cannot verify this API key right now…"Meteosource's key service did not answer. Try again in a few minutes.
"Meteosource request quota exceeded for this API key…"The plan's request quota is used up for the period.
"not allowed to access historical data this old" for a locationThe day is outside the plan's archive. Shorten the range or add the historical add-on.
"This call would need N location-days (limit 400)…"Split the request into shorter ranges or fewer locations.
The call times out in the clientA first archive call over many location-days takes a while. Raise the client's timeout (Codex: tool_timeout_sec) or ask for a shorter range first; the second run is served from cache.

Questions about your key or plan go to Meteosource support. For the server itself, open an issue in this repository.

About this repository

This repository holds the documentation of the hosted server and its entry for the MCP Registry, server.json. The server is listed there as com.meteosource/weather; clients and catalogs that read the registry pick it up from that entry. The server itself runs at Meteosource; there is nothing here to install.

License

MIT, see LICENSE.

Source: README.md at commit 89b6451

Tools

7

search_places

Find locations and their Meteosource place_id. Use this first to resolve city names, postal codes or coordinates into place_id values for the other weather tools. Provide either `query` (place name or postal code) to search, or `lat` + `lon` to find the nearest known place. Returns up to 10 matches ordered by relevance, each with place_id, administrative area, country, coordinates and timezone. Note: lat/lon are returned in degree-letter format (e.g. "50.08804N").

Parameterslatlonquerylanguage

get_forecast

Weather forecast for up to 20 locations in one call. Sections (comma-separated): 'current' (now), 'hourly' (up to 168 h ahead, trimmed to `hours`), 'daily' (up to 30 days ahead, trimmed to `days`), 'minutely' (precipitation minute-by-minute, higher tiers), 'alerts' (official weather warnings, startup tier and above), or 'all'. Use `variables` to keep only specific fields (e.g. ["temperature", "wind", "precipitation", "probability", "irradiance"]) and reduce output size — recommended when querying many locations. Timezone defaults to each location's local time; units default per-country ('metric' forces SI). Forecast horizon depends on the subscription tier (free: 7 days). Output: time series (hourly, daily, minutely) are tables — `columns` listed once and `rows` as arrays in column order; nested API groups are flattened with underscores (wind_speed, probability_storm, cloud_cover_total). `units` is given once at the top level when it is the same for every location.

Parametersdayshoursunitslanguagesectionstimezonelocationsrequiredvariables

get_alerts

Official weather warnings (severe weather alerts) for up to 20 locations. Returns only locations that currently have an active alert, with event type, severity, validity window and headline — an empty list means all clear. Cheap to call frequently; designed for monitoring/polling. Coverage: USA, EU countries and Canada. Requires the startup tier or higher (not available on the free tier).

Parameterslanguagelocationsrequired

get_weather_history

Historical weather (archive) with server-side aggregation. The archive holds 20 years, but how much of it a key may read depends on its plan: startup includes the last 7 days, standard the last year, premium and flexi all 20 years; byvalue reaches 366 days back and no further. Older days need Meteosource's paid historical add-on (billed per location and day); without it the API refuses such a day with "not allowed to access historical data this old", reported per location, so start inside the plan's range. Dates are YYYY-MM-DD, inclusive. Granularity: 'hourly' (raw hours, max 14 days per call), 'daily' (per-day min/max/avg/sum statistics, max 366 days) or 'monthly' (folded from daily, max 366 days per call — call repeatedly for multi-year analyses; results are cached so repeats are cheap). Variables (default: temperature, precipitation, wind): cape, cloud_cover, dew_point, evaporation, feels_like, humidity, irradiance, ozone, precipitation, precipitation_type, pressure, soil_temperature, surface_temperature, temperature, weather, wind, wind_distribution. Aggregations per variable: temperature min/max/avg, precipitation sum, wind speed avg + gusts max, irradiance sum in Wh/m2 (useful for PV analysis), weather = most frequent code of the day, precipitation_types = kinds seen that day (e.g. "rain,snow"; "none" when dry) — use weather and precipitation_type to document what happened (snow, fog, thunderstorm). wind_distribution (daily/monthly; for wind-turbine siting) = hours per 10 m wind-speed bin (wind_hours_0_2 … wind_hours_10_plus) and wind_power_density_w_m2 = 1/2 * 1.225 * mean(v^3) at 10 m — scale to hub height yourself (the API has no hub-height wind). `normals=true` (daily/monthly) adds long-term columns for each calendar day: temperature_normal_avg/min/max, temperature_record_min/max, wind_normal_speed, wind_record_gusts, precipitation_normal_sum and

Parametersunitsdate_torequirednormalstimezonedate_fromrequiredlocationsrequiredvariablesgranularity

get_air_quality

Hourly air-quality (smog) forecast for up to 20 locations, about 4 days ahead. Columns: `air_quality` (index, 1 = good, higher = worse) and pollutant surface concentrations — default pm10, pm25, no2_surface, so2_surface, ozone_surface; also available via `variables`: co_surface, no_surface, ozone_total, aerosol_550, dust_550nm, dust_mixing_ratio_05. Output is a table per location (`columns` once, `rows` as arrays), trimmed to `hours`. Not available on the free tier.

Parametershourstimezonelocationsrequiredvariables

get_solar_production

Production of photovoltaic systems, past and forecast, for up to 20 sites. Each site is lat + lon plus the installation: module_kw (installed kWp; use 1 to get specific yield per kWp), inverter_kw (defaults to module_kw), tilt (degrees from horizontal, default 30) and orientation (azimuth the modules face, clockwise from north: 180 = south, the default). Dates are YYYY-MM-DD, inclusive, from up to 20 years back to 4 days ahead, so one call can cover last week's actual weather and the coming days. The renewables plan includes the last 3 years; older days need the paid historical add-on, otherwise the API refuses them ("historical data this old"), reported per site. Granularity: 'hourly' (power at each full hour, max 14 days per call), 'daily' or 'monthly' (energy, max 366 days per call — call repeatedly for multi-year yield; past days are cached so repeats are cheap). Columns: production_kw = output of the system at that hour (an instantaneous value); production_kwh = energy of the day or month, summed from those hourly values; production_max_kw = its peak. `variables` adds the weather behind the production: irradiance (ghi, dni, dhi in W/m2 hourly; ghi/dni/dhi_sum_wh_m2 daily and monthly), temperature, cloud_cover, humidity, dew_point, pressure, snowfall (flag per hour; snowfall_hours daily and monthly). Each site+day costs one API request on first fetch; a single call is capped at 400 site-days — split longer ranges into multiple calls. Needs a key on the renewables tier. Output: `columns` once at the top level; each site has `rows` as arrays in column order.

Parameterssitesrequiredunitsdate_torequiredtimezonedate_fromrequiredvariablesgranularity

get_wind_production

Production of wind farms, past and forecast, for up to 20 sites. Each site is lat + lon plus the farm: turbine_model (catalogue below), exactly one of turbine_count or total_capacity (MW), hub_height (metres, default 100) and roughness of the surrounding terrain (water, open, farmland — the default, suburban, urban). Dates are YYYY-MM-DD, inclusive, from up to 20 years back to 4 days ahead, so one call can cover last week's actual weather and the coming days. The renewables plan includes the last 3 years; older days need the paid historical add-on, otherwise the API refuses them ("historical data this old"), reported per site. Granularity: 'hourly' (power at each full hour, max 14 days per call), 'daily' or 'monthly' (energy, max 366 days per call — call repeatedly for multi-year yield; past days are cached so repeats are cheap). Columns: production_mw = output of the whole farm at that hour (an instantaneous value); production_mwh = energy of the day or month, summed from those hourly values; production_max_mw = its peak. `variables` adds the weather behind the production: wind (10 m above ground, not hub height: wind_10m_speed, wind_10m_gusts and wind_10m_angle hourly; speed avg/max and gusts max daily and monthly), temperature, dew_point, pressure. Turbine catalogue (series + rotor diameter in m / rated power in kW): Adwen AD116/5000; Enercon E48/800, E-53/800, E-70/2000, E-70/2300, E-82/2000, E-82/2300, E-82/2350, E-82/3000, E-92/2350, E-101/3050, E-101/3500, E-115/3000, E-115/3200, E-126/4200, E-126/7500, E-126/7580, E-141/4200; Eno ENO100/2200, ENO114/3500, ENO126/3500; GE GE100/2500, GE103/2750, GE120/2500, GE120/2750, GE130/3200; Nordex N90/2500, N100/2500, N117/2400, N131/3000, N131/3300, N131/3600; Senvion MM92/2050, MM100/2000, S104/3400, S114/3200, S114/3400, S122/3000, S122/3200, S126/6150, S152/6330; aerodyn SCD168/8000; Siemens SWT113/2300,

Parameterssitesrequiredunitsdate_torequiredtimezonedate_fromrequiredvariablesgranularity

Version history

1
  1. v0.1.2LatestOct 26, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts