Mt Washington Observatory Weather

Datos meteorológicos del observatorio meteorológico Mt Washington en Nuevo Hampshire.

Documentación

Servidor MCP del Observatorio Mt Washington

Un servidor MCP (Protocolo de Contexto de Modelo) que expone datos meteorológicos en tiempo real del Observatorio Mt Washington como recursos, construido con FastMCP.

Fuentes de Datos

EndpointContenido
/uploads/json/weather.JSONCondiciones actuales de la cumbre (temperatura, viento, ráfagas, dirección, METAR)
/uploads/json/outlook.JSONPaquete completo de pronóstico (perspectiva de cumbre/valle, estadísticas de 24h, almanaque)
/uploads/pdf/forms/{year}/{month:02d}.pdfFormularios mensuales F6 en PDF (2005–presente)

Inicio Rápido

Requisitos previos

  • Python 3.14+
  • uv

Instalación

git clone <repo>
cd mt_washington_obs_mcp
uv sync

Ejecución

uv run mtw-obs-mcp

O de manera equivalente:

uv run python -m mt_washington_mcp

El servidor se inicia en el transporte stdio (estándar para MCP). Conéctalo a un cliente MCP como Claude Desktop o opencode.

Recursos

Todos los datos están disponibles como recursos MCP:

URIDevuelveDescripción
weather://currentJSONTemperatura actual de la cumbre, viento, ráfagas, dirección, METAR
weather://outlook/currentJSONMetadatos completos de la perspectiva (excluye subsecciones con URIs dedicados)
weather://outlook/summitJSONPronóstico de Cumbres Altas con discusión de 4 períodos
weather://outlook/valleyJSONPronóstico del Valle con discusión de 4 períodos
weather://outlook/statisticsJSONÚltimas 24h: temp máx/mín, ráfaga máxima, precipitación, nevadas
weather://outlook/almanacJSONRécords, promedios mensuales, amanecer/atardecer
f6://currentPDF (bytes)Formulario F6 del mes actual
f6://{year}/{month}PDF (bytes)Formulario F6 para un año/mes específico

Herramientas

HerramientaDescripción
extract_f6_csv(year?, month?)Extraer tabla de datos diarios del PDF F6 como CSV
list_f6_forms()Listar todas las combinaciones de año/mes disponibles como CSV

Desarrollo

Pruebas

uv run pytest

Todas las pruebas usan instantáneas de fixtures — sin llamadas de red.

Lint y verificación de tipos

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

O usa el Taskfile.yml:

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

Estructura del proyecto

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