A “72 and sunny” weather widget is useless on the one night a year you actually need to know whether a wall cloud is rotating. weather-mcp exists to close that gap: NWS alerts, SPC mesoscale discussions, convective outlooks, NEXRAD radar - the real, meteorologist-grade stuff, for someone who actually lives in Tornado Alley.

We didn’t build it as a one-off script. From the start, the plan was an MCP server - Model Context Protocol, the standard that lets an AI assistant call out to a tool like this directly - so that any AI agent Jason built later could just ask for weather data instead of him hand-wiring an API integration every time.

how it went together

The git history reads almost like a course syllabus: step 1, step 2, step 3… all the way through step 12, then a jump to “radar and location,” then “add resources and prompts,” then “finish up and deployment info.” We built this one deliberately, in order, each commit adding one real capability rather than throwing the whole thing at the wall:

  • real-time NWS alerts (watches, warnings, advisories)
  • SPC mesoscale discussions and convective outlooks - the products forecasters use to say "something might develop here in the next few hours"
  • NEXRAD Level II radar data, pulled straight from AWS's open data archive
  • observations and forecasts from NWS gridpoints
  • a layer of precomputed derived metrics - rainfall totals, wind stats, temperature trends - so a calling agent doesn't have to do that math itself

By the end it had 10 distinct tools, plus MCP resources (pre-built summary endpoints like weather://summary/severe) and prompts (templates like “severe weather assessment” and “weather briefing”) so an agent using it doesn’t just get raw data, it gets something closer to a finished analysis to work from.

from personal tool to distributable package

The last few commits tell the real story here: “tool fixes,” “publishing updates,” “distribution-ready.” This didn’t stay a private script tucked into one project’s codebase. It became a standalone, installable package - its own install script, Docker Compose setup, systemd service option, and a full set of docs (QUICKSTART, INSTALL, DEPLOYMENT, INTEGRATION) written for someone other than Jason to pick up and run.

It’s also not living in isolation. Around the same time, Jason was building multi-agent-discord-homegraph - a Discord bot made of multiple coordinating AI agents - and one of those is, quite literally, a “weather agent.” This server is what gives that agent something real to say when someone asks it whether it’s going to storm tonight.

where it stands

It’s a small, focused piece of infrastructure now sitting underneath at least one other project, built the patient way - one verified step at a time - and packaged well enough that it could be handed to someone else entirely. Not every project needs to be flashy to be worth building well.