quickstart-resources/weather-server-python
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dependabot[bot] 802f71931d
Bump the uv group across 2 directories with 1 update
Bumps the uv group with 1 update in the /mcp-client-python directory: [httpx2](https://github.com/pydantic/httpx2).
Bumps the uv group with 1 update in the /weather-server-python directory: [httpx2](https://github.com/pydantic/httpx2).


Updates `httpx2` from 2.9.1 to 2.12.0
- [Release notes](https://github.com/pydantic/httpx2/releases)
- [Changelog](https://github.com/pydantic/httpx2/blob/main/src/httpx2/CHANGELOG.md)
- [Commits](https://github.com/pydantic/httpx2/compare/v2.9.1...v2.12.0)

Updates `httpx2` from 2.9.1 to 2.12.0
- [Release notes](https://github.com/pydantic/httpx2/releases)
- [Changelog](https://github.com/pydantic/httpx2/blob/main/src/httpx2/CHANGELOG.md)
- [Commits](https://github.com/pydantic/httpx2/compare/v2.9.1...v2.12.0)

---
updated-dependencies:
- dependency-name: httpx2
  dependency-version: 2.12.0
  dependency-type: indirect
  dependency-group: uv
- dependency-name: httpx2
  dependency-version: 2.12.0
  dependency-type: direct:production
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-08 22:58:47 +00:00
..
.python-version First commit 2024-12-11 14:47:06 -05:00
pyproject.toml Bump the uv group across 2 directories with 1 update 2026-09-08 22:58:47 +00:00
README.md Improve all readmes (#188) 2026-08-27 20:32:29 -07:00
uv.lock Bump the uv group across 2 directories with 1 update 2026-09-08 22:58:47 +00:00
weather.py Add structured content to the Python weather server and client and update to v2 (#164) 2026-08-09 14:46:03 +02:00

A Simple MCP Weather Server written in Python

A minimal MCP server that exposes US weather data from the National Weather Service API as two tools:

  • get_forecast – get the forecast for a location (takes latitude and longitude)
  • get_alerts – get active weather alerts for a US state (takes a two-letter state code)

This example accompanies the Build an MCP server tutorial.

Prerequisites

  • Python 3.10+
  • uv

Run the server

uv run weather.py

uv run creates the virtual environment and installs dependencies on first use.

The server communicates over stdio, so running it directly just waits for a client on stdin. To see it in action, launch it from one of the client examples in this repository, for example:

cd ../mcp-client-python
uv run client.py ../weather-server-python/weather.py

Structured content

Both tools declare an output schema and return structured_content. get_forecast returns an object; get_alerts returns a top-level JSON array, which protocol revision 2026-07-28 is the first to allow — see Structured Content in the spec.

Alerts is a RootModel[list[Alert]] rather than a plain list[Alert] because the SDK wraps non-object return types as {"result": ...}; a RootModel is taken as the schema exactly as written. See Structured Output in the SDK docs.

Note that an array-rooted schema requires a 2026-07-28 client. This SDK does not project it down for older ones — it raises instead.