weather bridge / docs
Model Context Protocol

Weather for your agent.

Four MCP tools let an agent find a place and get its forecast, with source details attached. They use the same weather service as the REST API.

Connect over Streamable HTTP

In a client that supports remote MCP servers, choose Streamable HTTP and enter this URL. No API key or authentication is required.

https://bridge.wx.mrkd.co/mcp

For clients using an mcpServers configuration with URL entries:

{
  "mcpServers": {
    "weather-bridge": {
      "url": "https://bridge.wx.mrkd.co/mcp"
    }
  }
}

Client configuration formats vary, so this JSON may not fit yours. Use your client's remote HTTP option. The server keeps no sessions and accepts MCP 2026-07-28 and 2025-11-25 clients.

Tools at a glance

ToolArgumentsResult
search_citiesqueryMatching cities with IDs, states and coordinates. Accepts a name or prefix, optionally with a state.
get_weatherLocation + optional unitsStation observation, NWS outlook, forecast, alerts, sources and warnings.
get_hourly_forecastLocation + optional unitsUp to 24 hourly forecast periods with source details.
get_active_alertsLocation + optional unitsNWS alerts with their original instructions, and whether the check succeeded.

Location is exactly one of {"city":"Seattle, WA"}, {"cityId":5809844}, or {"lat":47.6062,"lon":-122.3321}. Units are us (default) or metric. All tools are read-only. Weather tools call the public NWS API.

If a city name is ambiguous, the tool error lists the choices. Ask the user to pick one, then call again with its cityId. Never guess which Springfield they meant.

Make a protocol request

An MCP client handles setup and tool discovery for you. These curl requests show the raw JSON-RPC messages, which helps when debugging. The Accept header must list both JSON and event-stream.

curl 'https://bridge.wx.mrkd.co/mcp' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"weather-example","version":"1.0.0"}}}'

Send notifications/initialized after initialization (no id), then get the tool schemas with tools/list. The server keeps no sessions, so no session ID is needed.

curl 'https://bridge.wx.mrkd.co/mcp' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
curl 'https://bridge.wx.mrkd.co/mcp' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2025-11-25' \
  --data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_weather","arguments":{"city":"Seattle, WA","units":"metric"}}}'

Read data from result.structuredContent, and check result.isError for tool failures. An HTTP 200 does not mean the tool succeeded.

Try tools in the MCP tool explorer ↗

Run locally over stdio

Build with cargo build --locked, then use your checkout's absolute binary path:

{"mcpServers":{"weather-bridge":{"command":"/absolute/path/to/weather-bridge/target/debug/weather-bridge","args":["mcp"]}}}

Logs go to stderr; stdout carries only MCP messages. Stdio needs no HTTP server.

Rules for agents