Mt Washington Observatory Weather MCP Server

ニューハンプシャー州のマウントワシントン気象観測所からの気象データ。

ドキュメント

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