quickstart-resources/weather-server-rust
Repository files (latest commit first)
Filename Latest commit message Latest commit date
olaservo 4d79997120 Correct README claims that do not match the repo
The License section named MIT. LICENSE is a transition file: new code
contributions are Apache-2.0, documentation excluding specifications is
CC-BY-4.0, and only earlier contributions without relicensing consent
stay MIT.

"Rust (stable)" understates the floor. rmcp, darling and time declare
rust-version 1.88, and cargo metadata resolves both crates to 1.88.

The Ruby aside said 3.3 also satisfies the gems. anthropic requires
>= 3.2.0 and mcp >= 2.7.0, so the gem floor was 3.2, and 3.2 reached EOL
on 2026-03-31. CI runs 3.4, which is what the READMEs now state.

The Go and Rust clients take a command plus arguments, not a path to a
server script.

Removed the commit-message convention, which is attributed to the MCP
contributing guidelines but does not appear in them. Added the
AI_POLICY.md link that CONTRIBUTING.md points to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GdvHa5MzDw33PEz3DbTaJD
2026-08-28 10:51:08 -07:00
..
src Drop the hand-written list_tools now that rmcp emits cache hints 2026-08-09 17:52:24 -07:00
Cargo.lock Bump the cargo group across 2 directories with 3 updates 2026-08-19 00:09:25 +00:00
Cargo.toml Update to rmcp 3.1.0 2026-08-09 15:36:38 -07:00
README.md Correct README claims that do not match the repo 2026-08-28 10:51:08 -07:00

A Simple MCP Weather Server written in Rust

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

  • Rust 1.88+ and Cargo

Build and run

cargo build --release
./target/release/weather

Or, during development:

cargo run

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-rust
cargo run -- ../weather-server-rust/target/release/weather

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.

Note that an array-rooted schema requires a 2026-07-28 client: rmcp sends it as written on every connection rather than projecting it down, so an older client rejects the tool list.