Mt Washington Observatory Weather MCP Server

Weather data from the Mt Washington weather observatory in New Hampshire.

Documentation

Mt Washington Observatory MCP Server

An MCP (Model Context Protocol) server that exposes real-time weather data from the Mt Washington Observatory as resources, built with FastMCP.

Data Sources

EndpointContents
/uploads/json/weather.JSONReal-time summit conditions (temp, wind, gusts, direction, METAR)
/uploads/json/outlook.JSONFull forecast package (summit/valley outlook, 24h statistics, almanac)
/uploads/pdf/forms/{year}/{month:02d}.pdfF6 monthly PDF forms (2005–present)

Quickstart

Prerequisites

  • Python 3.14+
  • uv

Install

git clone <repo>
cd mt_washington_obs_mcp
uv sync

Run

uv run mtw-obs-mcp

Or equivalently:

uv run python -m mt_washington_mcp

The server starts on stdio transport (standard for MCP). Connect it to an MCP client like Claude Desktop or opencode.

Resources

All data is available as MCP resources:

URIReturnsDescription
weather://currentJSONCurrent summit temperature, wind, gusts, direction, METAR
weather://outlook/currentJSONFull outlook metadata (excludes sub-sections with dedicated URIs)
weather://outlook/summitJSONHigher Summits Forecast with 4-period discussion
weather://outlook/valleyJSONValley Forecast with 4-period discussion
weather://outlook/statisticsJSONPast 24h: max/min temp, peak gust, precip, snowfall
weather://outlook/almanacJSONRecords, monthly averages, sunrise/sunset
f6://currentPDF (bytes)Current month's F6 form
f6://{year}/{month}PDF (bytes)F6 form for a specific year/month

Tools

ToolDescription
extract_f6_csv(year?, month?)Extract F6 PDF daily data table as CSV
list_f6_forms()List all available year/month combinations as CSV

Development

Tests

uv run pytest

All tests use fixture snapshots — no network calls.

Lint & typecheck

uv run ruff check .
uv run mypy src/mt_washington_mcp/

Or use the Taskfile.yml:

task check    # test + lint + typecheck
task test
task lint
task typecheck

Project structure

mt_washington_obs_mcp/
├── src/mt_washington_mcp/
│   ├── client.py      # Async httpx WeatherClient
│   ├── f6.py          # F6 PDF table extraction
│   ├── models.py      # Pydantic models with validators
│   ├── server.py      # FastMCP server + resources + tools
│   ├── __init__.py    # Entry point
│   └── __main__.py    # python -m support
├── tests/
│   ├── test_client.py # Client tests with httpx.MockTransport
│   ├── test_f6.py     # F6 PDF extraction tests
│   ├── test_models.py # Model parsing and validation tests
│   ├── test_server.py # Resource output format tests
│   └── fixtures/      # Saved API snapshots
├── .github/workflows/
│   └── ci.yml         # GitHub Actions CI
├── pyproject.toml
└── Taskfile.yml