A free weather MCP server
Plain-talk weather for AI assistants and programs. No key, no sign-in.
What it is
This is Weather That Doesn't Suck as something an AI assistant or a program can ask directly. It answers in plain language, for decisions: should I, when, what do I wear, what will I meet on the way. It is free for everyday use, public and read-only, with no key and no account. It is a remote server, so there is nothing to install.
The addresses
- MCP, over Streamable HTTP:
https://weatherthatdoesntsuck.com/api/mcp - The same tools as plain REST:
https://weatherthatdoesntsuck.com/api/intel - An OpenAPI 3.1 description of the REST interface:
https://weatherthatdoesntsuck.com/api/intel/openapi.json - A server card, with the MCP server's name, version and address:
https://weatherthatdoesntsuck.com/api/mcp/server-card
In the official MCP Registry the server is com.weatherthatdoesntsuck/weather.
On the REST address, GET lists the tools. POST /api/intel/{tool} with the arguments as a JSON body runs one. It is the same answer the MCP tool gives.
How to connect
The server URL is https://weatherthatdoesntsuck.com/api/mcp. It needs no authentication: no key, no token, no sign-in.
| Where | How |
|---|---|
| Claude | On claude.ai or in the desktop app: Customize, Connectors, "+ Add", then "Add custom connector". Give it a name and the URL above. If it asks how to sign in, choose "No sign in". On a Team or Enterprise plan an owner adds it first, under Organization settings, Connectors. A free Claude plan is limited to one custom connector. |
| Claude Code | claude mcp add --transport http wtds https://weatherthatdoesntsuck.com/api/mcp |
| ChatGPT | On the web: Settings, Security and login, turn on Developer mode. Then open chatgpt.com/plugins, select the plus button, enter a name and a description, give the URL above as the MCP server URL, and create the connection. Developer mode is not on every plan. |
| Gemini CLI | gemini mcp add --transport http wtds https://weatherthatdoesntsuck.com/api/mcp. Or, in ~/.gemini/settings.json: { "mcpServers": { "wtds": { "httpUrl": "https://weatherthatdoesntsuck.com/api/mcp" } } } |
| Anything else | Add the URL above as a remote MCP server, with no authentication. Or POST JSON-RPC 2.0 to it yourself, with Content-Type: application/json. |
Menus move. These steps matched each maker's own documentation when we last checked. If a screen does not match, that documentation is the authority.
For anyone writing a client: the server speaks protocol versions 2025-06-18, 2025-03-26 and 2024-11-05. If a client asks for any other version when it connects, the server answers with 2025-06-18. It does not speak the 2026-07-28 revision. It takes POST. It has no event stream and no sessions, so a GET gets a 405.
The tools
Every tool is read-only. The decision tools are the point, so prefer them to raw data.
| Tool | The question it answers |
|---|---|
get_weather | What is it like, and what is coming? One sentence first, then current conditions, the next 24 hours, the next 7 days and official alerts. |
get_forecast | What is Saturday looking like? What will it be between 6 PM and midnight? |
outdoor_activity_weather | Should I? A verdict for a run, a hike, a ride, a night camping, a hunt, a day fishing, a yard job, a building job or a deck stain, with the reason, what to wear and the concerns. |
find_best_weather_window | When? The best stretch on a day, an alternate, and any clearly bad stretch. |
clothing_recommendation | What do I wear? Dressed for the effort, not just the temperature. |
explain_weather | Why? Why it feels colder than the temperature, whether the rain or the wind will matter, mud, humidity, fog, frost, pressure. Facts are kept apart from inferences. |
get_trail_weather | What is a trail like over the whole trip? A timeline, every two hours unless you ask for another step, the light, the moon, what changes, and what to wear and carry. |
route_weather | What will I meet, where, and when? The weather at the moment you reach each part of a route. |
list_trails | Which trails do you know by name? |
search and fetch also exist, for clients that require that pair. They are on the MCP server only, not on REST.
A verdict is go, go_with_caveats, marginal or no_go.
The activities are walking, hiking, trail_running, road_running, cycling, camping, hunting, fishing, yard_work, construction, painting_finishing and general_outdoor. Plain words work too, such as "run", "hike" or "stain the deck". "Running" with no more words is read as a road run.
The MCP server also carries resources. weather://methodology says how a recommendation is made, printed from the same tables the code decides with.
The shape of an answer
Every answer from a weather tool has the same order.
answer: what a person wants to hear, in a sentence or two.recommendation: what to do about it.details: the supporting facts, the concerns and the caveats.data: the numbers, with what was observed, what is forecast and what we worked out in separate places.sources: who supplied what, when we fetched it, how old it is, and whether it is fresh, cached or stale.provenance: the full account. Where the place resolved to, which forecast was used, what we derived, and when.
After those come generated_at, which is our clock, and forecast_valid_for, the stretch of time the answer is about.
What the forecast says is kept apart from what we advise. data.observed and data.forecast are weather. data.derived and details.recommendations are our advice. An assistant can say what the forecast is without also saying what we think you should do about it.
When there is no station observation, the answer says whether the current conditions are a model estimate of now or the forecast for the current hour. Neither is called a measurement.
The rules we ask an assistant to keep
The server hands these to a client when it connects. A shorter list is in llms.txt.
- Say only the weather the tools returned. Do not fill gaps.
- Keep numbers and units as given.
- If an answer says it came from cache, is unavailable, or that official alerts could not be checked, say so.
- "No alerts" means alerts were checked and there were none. Only an alert status of "ok" means that.
- An official alert comes before everything else.
- Do not turn a forecast into a promise.
- A forecast cannot tell you about the ground. Do not say a trail or a road is passable.
- Keep what the forecast says apart from what we advise.
What it will not do
- It does not know the ground. A forecast cannot see a trail. Mud and ice are our reasoning from the weather, not a measurement, and the answer says so. We do not know whether a trail is passable, open or safe. An answer about a route lists whether the path is passable among its unknowns.
- It does not look past the forecast. The forecast reaches about seven days. Beyond that it says so and does not guess.
- It has official alerts for the United States only. They are the National Weather Service's, in its own words. Elsewhere the answer says alerts are not available, which is not the same as there being none. For warnings outside the United States, check that country's own weather service.
- It does not say "no alerts" unless it checked. The alert status is "ok", "unavailable" or "n/a". Only "ok" means alerts were checked, so only then does an empty list mean none.
- It does not invent weather. If the sources are not answering and nothing is cached for the place, the result is an error that says unavailable, with no weather in it.
- It does not pass old data off as new. If a source is down and we still hold its forecast from about the last three hours, the answer says, ahead of any weather, that it is cached data and about how many minutes old. Its sources mark it stale.
- It puts an official warning first. The rule in
outdoor_activity_weatherhas four parts. The alert covers the time you asked about. It is for weather that can hurt someone outdoors, such as a tornado or a flash flood. It is a warning or an emergency, or the Weather Service rates it severe or extreme. The Weather Service marks it Immediate. Then the verdict isno_go, the answer is the alert, with the Weather Service's own instruction when it gave one, and the one recommendation left is to follow the official alert and your local officials. This is not a warning system. For anything urgent, follow the National Weather Service and your local officials. - It does not quietly pick a place. When a name is several places, the answer says which one it used and lists the others.
- It does not remember you. There are no accounts, no saved places and no sessions.
Limits
We count requests per address, by the minute, to protect the free weather services behind us. MCP and REST share the same counts.
- 30 tool calls a minute.
- 6 a minute for
route_weatherandget_trail_weather, counted apart from the rest, because one route asks for the forecast in several places. - 120 a minute for the rest of MCP (connecting, listing the tools, listing the resources) and for reading the server card or the OpenAPI description. Reading a resource counts as a tool call.
Over the limit, a tool call gets an answer that says to wait about 30 seconds, which an assistant can relay. On REST it is a 429 with a Retry-After of 30 seconds. One tool call is stopped at 25 seconds at the latest.
An example to paste
Can I go for a trail run in Greenbush, Wisconsin tomorrow morning? Over REST, from a Unix shell:
curl -s -X POST \
https://weatherthatdoesntsuck.com/api/intel/outdoor_activity_weather \
-H "Content-Type: application/json" \
-d '{"location":"Greenbush, WI",
"activity":"trail_running",
"start_time":"tomorrow morning"}'
What comes back is JSON in the order above, with "ok": true in front.
A time can be ISO 8601 or plain words: "now", "tonight", "tomorrow morning", "Saturday", "6 PM". With no offset it is read in the place's own time zone. "Morning" means 6 AM to noon. A bare hour with no AM or PM is refused rather than guessed.
Units default to imperial in the United States and metric elsewhere. Send units to choose.
REST errors carry real status codes: 400 for bad input, 404 for a tool, a place or a trail we cannot find, 415 when the request does not say Content-Type: application/json, 422 for a time the forecast does not cover, 429 for too fast, 503 when the weather sources are not answering, 504 when a call ran out of time.
Privacy, terms and sources
What an assistant sends us is used to answer and is not written down, and the privacy page says what our logs do keep.
Everyday use is free and a forecast is not a promise. The terms ask you not to copy our answers in bulk or resell them, and to write to us first if you want to build an app on this or expect heavy use.
The weather comes from the National Weather Service and Open-Meteo, and the methodology page lists what each one is used for. Every answer lists its sources. If you repeat our answers, the terms ask you to keep that credit with them.
Get in touch
Questions, corrections, or a tool that answered wrong in an interesting way: help@thelumberoutletgroup.com.