Weather for agents.
Weather MCP is a free public MCP server: 12 weather models queried side by side, with formally verified statistics across them — spread, agreement, percentiles. Uncertainty as data, not vibes.
Endpoint
https://weather.sillsengineering.com/mcp
Connect
claude mcp add --transport http weather https://weather.sillsengineering.com/mcp
claude.ai & Claude Desktop: Settings → Connectors → Add custom connector → paste the URL. Any other MCP client: streamable HTTP, no auth fields.
Two tools: describe (the catalog of models and variables) and query (the data — raw series or server-side reductions across models, time, or ensemble members). Connect and call describe; agents can read the full contract at /llms.txt.
See it work
“I’m racing at Arenal Bay tomorrow afternoon. Will the sea breeze fill in — and how confident should I be?”
The agent calls query once, asking four independent models the same question:
{
"models": ["gfs_global", "icon_global",
"ecmwf_ifs025", "meteofrance_arome_france_hd"],
"variables": ["wind_speed_10m"],
"location": { "lat": 39.50, "lon": 2.75 },
"time": { "start": "2026-07-24", "end": "2026-07-24" },
"wind_speed_unit": "kn",
"timezone": "Europe/Madrid",
"reduce": { "op": "spread", "over": "model" }
}
What comes back — and why the shape of it matters:
show the numbers
| local | GFS | ICON | ECMWF | AROME | spread | agreement |
|---|---|---|---|---|---|---|
| 06:00 | 2.4 | 2.9 | 4.1 | 1.9 | 2.2 | 0.56 |
| 07:00 | 0.4 | 3.1 | 3.6 | 2.5 | 3.2 | 0.36 |
| 08:00 | 0.4 | 1.9 | 2.7 | 2.4 | 2.3 | 0.54 |
| 09:00 | 1.0 | 1.8 | 1.6 | 2.7 | 1.7 | 0.66 |
| 10:00 | 2.3 | 3.6 | 2.5 | 3.7 | 1.4 | 0.72 |
| 11:00 | 5.4 | 4.8 | 4.4 | 5.2 | 1.0 | 0.80 |
| 12:00 | 9.6 | 4.6 | 5.7 | 7.3 | 5.0 | 0.00 |
| 13:00 | 11.7 | 5.9 | 6.8 | 8.5 | 5.8 | 0.00 |
| 14:00 | 10.2 | 7.2 | 7.8 | 10.8 | 3.6 | 0.28 |
| 15:00 | 12.0 | 7.1 | 8.6 | 11.1 | 4.9 | 0.02 |
| 16:00 | 11.5 | 7.8 | 9.0 | 10.6 | 3.7 | 0.26 |
| 17:00 | 11.3 | 7.5 | 9.0 | 8.0 | 3.8 | 0.24 |
| 18:00 | 11.2 | 7.9 | 8.4 | 7.4 | 3.8 | 0.24 |
| 19:00 | 9.1 | 7.0 | 7.4 | 6.6 | 2.5 | 0.50 |
| 20:00 | 7.5 | 6.4 | 6.6 | 9.0 | 2.6 | 0.48 |
| 21:00 | 5.7 | 5.8 | 6.2 | 3.5 | 2.7 | 0.46 |
| 22:00 | 4.7 | 5.5 | 6.5 | 7.2 | 2.5 | 0.50 |
The answer the agent can now give:
“The sea breeze does fill in, but the models split exactly when it matters. All morning they sit within 1.0 kn of each other. By 13:00 they’re 5.8 kn apart — GFS says 11.7 kn, ICON says 5.9 kn, with ECMWF and AROME in between; agreement falls from 0.80 to 0.00. So: plan for 6–12 kn after midday and rig for the light end, then recheck once the next run lands. This is a real disagreement about sea-breeze timing, not noise.”
A single-answer weather API would have averaged those four models to “about 9 knots” and told you nothing about the part that decides your afternoon. The spread is the signal — and the reductions computing it (spread, agreement, median, p10/p90) are formally verified with Kani, so agreement is proven to land in 0–1 for every possible input, not just the ones someone tested.