| Filename | Latest commit message | Latest commit date |
|---|---|---|
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> |
||
| .. | ||
| .python-version | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
| weather.py | ||
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 (takeslatitudeandlongitude)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.