Mt Washington Observatory Weather

Dados meteorológicos do observatório meteorológico Mt Washington em New Hampshire.

Documentação

Servidor MCP do Observatório Mt Washington

Um servidor MCP (Model Context Protocol) que expõe dados meteorológicos em tempo real do Observatório Mt Washington como recursos, construído com FastMCP.

Fontes de Dados

EndpointConteúdo
/uploads/json/weather.JSONCondições atuais do cume (temperatura, vento, rajadas, direção, METAR)
/uploads/json/outlook.JSONPacote completo de previsão (perspectiva do cume/vale, estatísticas de 24h, almanaque)
/uploads/pdf/forms/{year}/{month:02d}.pdfFormulários mensais F6 em PDF (2005–presente)

Início Rápido

Pré-requisitos

  • Python 3.14+
  • uv

Instalação

git clone <repo>
cd mt_washington_obs_mcp
uv sync

Execução

uv run mtw-obs-mcp

Ou equivalentemente:

uv run python -m mt_washington_mcp

O servidor inicia no transporte stdio (padrão para MCP). Conecte-o a um cliente MCP como Claude Desktop ou opencode.

Recursos

Todos os dados estão disponíveis como recursos MCP:

URIRetornaDescrição
weather://currentJSONTemperatura atual do cume, vento, rajadas, direção, METAR
weather://outlook/currentJSONMetadados completos da perspectiva (exclui subseções com URIs dedicados)
weather://outlook/summitJSONPrevisão dos Cumes Mais Altos com discussão de 4 períodos
weather://outlook/valleyJSONPrevisão do Vale com discussão de 4 períodos
weather://outlook/statisticsJSONÚltimas 24h: temp máx/mín, rajada máxima, precipitação, queda de neve
weather://outlook/almanacJSONRecordes, médias mensais, nascer/pôr do sol
f6://currentPDF (bytes)Formulário F6 do mês atual
f6://{year}/{month}PDF (bytes)Formulário F6 para um ano/mês específico

Ferramentas

FerramentaDescrição
extract_f6_csv(year?, month?)Extrai a tabela de dados diários do PDF F6 como CSV
list_f6_forms()Lista todas as combinações de ano/mês disponíveis como CSV

Desenvolvimento

Testes

uv run pytest

Todos os testes usam snapshots de fixtures — sem chamadas de rede.

Lint e verificação de tipos

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

Ou use o Taskfile.yml:

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

Estrutura do projeto

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