Labsco
spowers42 logo

Mt Washington Observatory Weather

from spowers42

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

πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

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)

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