Open-Meteo

Acesse previsões meteorológicas globais e dados históricos através da API Open-Meteo.

Documentação

Servidor MCP Open-Meteo

npm version GitHub release Docker Image

Um servidor abrangente de Model Context Protocol (MCP) que fornece acesso às APIs meteorológicas do Open-Meteo para uso com Modelos de Linguagem de Grande Porte.

Recursos

Este servidor MCP fornece acesso completo às APIs do Open-Meteo, incluindo:

APIs Meteorológicas Principais

  • Previsão do Tempo (weather_forecast) - Previsões de até 16 dias (7 por padrão) com resolução horária e diária
  • Arquivo Meteorológico (weather_archive) - Dados históricos ERA5 de 1940 até o presente
  • Qualidade do Ar (air_quality) - PM2.5, PM10, ozônio, dióxido de nitrogênio, pólen, índices de qualidade do ar europeu/americano, índice UV e outros poluentes
  • Meteorologia Marinha (marine_weather) - Altura das ondas, período das ondas, direção das ondas e temperatura da superfície do mar
  • Elevação (elevation) - Dados de modelo digital de elevação para coordenadas fornecidas
  • Geocodificação (geocoding) - Pesquise locais em todo o mundo por nome ou código postal, obtenha coordenadas e informações detalhadas do local

Modelos Meteorológicos Especializados

  • DWD ICON (dwd_icon_forecast) - Modelo de alta resolução do serviço meteorológico alemão para a Europa
  • NOAA GFS (gfs_forecast) - Modelo global do serviço meteorológico dos EUA com dados de alta resolução para a América do Norte
  • Météo-France (meteofrance_forecast) - Modelos AROME e ARPEGE do serviço meteorológico francês
  • ECMWF (ecmwf_forecast) - Centro Europeu de Previsões Meteorológicas de Médio Prazo
  • JMA (jma_forecast) - Modelo de alta resolução da Agência Meteorológica do Japão para a Ásia
  • MET Norway (metno_forecast) - Serviço meteorológico norueguês para países nórdicos
  • Environment Canada GEM (gem_forecast) - Modelo do serviço meteorológico canadense

Ferramentas Avançadas de Previsão

  • Previsão de Enchentes (flood_forecast) - Vazão de rios e previsões de enchentes do GloFAS (Sistema Global de Alerta de Enchentes)
  • Previsão Sazonal (seasonal_forecast) - Previsões de longo prazo de até ~7 meses à frente
  • Projeções Climáticas (climate_projection) - Projeções de mudanças climáticas CMIP6 para diferentes cenários de aquecimento
  • Previsão por Conjunto (ensemble_forecast) - Múltiplas execuções de modelos mostrando a incerteza da previsão

Instalação

Requisitos

  • Node.js >= 22.0.0

Método 1: Usando npx (Recomendado)

Nenhuma instalação necessária! O servidor será executado diretamente via npx.

Método 2: Instalação Global via npm

npm install -g open-meteo-mcp-server

Método 3: A partir do Código-Fonte (Desenvolvimento)

# Clone the repository
git clone https://github.com/cmer81/open-meteo-mcp.git
cd open-meteo-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuração

Configuração do Claude Desktop

Configuração Simples (Recomendada)

Adicione a seguinte configuração ao arquivo de configuração do seu Claude Desktop:

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"]
    }
  }
}

Configuração Completa (com variáveis de ambiente)

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"],
      "env": {
        "OPEN_METEO_API_URL": "https://api.open-meteo.com",
        "OPEN_METEO_AIR_QUALITY_API_URL": "https://air-quality-api.open-meteo.com",
        "OPEN_METEO_MARINE_API_URL": "https://marine-api.open-meteo.com",
        "OPEN_METEO_ARCHIVE_API_URL": "https://archive-api.open-meteo.com",
        "OPEN_METEO_SEASONAL_API_URL": "https://seasonal-api.open-meteo.com",
        "OPEN_METEO_ENSEMBLE_API_URL": "https://ensemble-api.open-meteo.com",
        "OPEN_METEO_GEOCODING_API_URL": "https://geocoding-api.open-meteo.com",
        "OPEN_METEO_FLOOD_API_URL": "https://flood-api.open-meteo.com",
        "OPEN_METEO_CLIMATE_API_URL": "https://climate-api.open-meteo.com"
      }
    }
  }
}

Configuração de Desenvolvimento Local

Se você está desenvolvendo localmente ou instalou a partir do código-fonte:

{
  "mcpServers": {
    "open-meteo": {
      "command": "node",
      "args": ["/path/to/open-meteo-mcp/dist/index.js"],
      "env": {
        "OPEN_METEO_API_URL": "https://api.open-meteo.com",
        "OPEN_METEO_AIR_QUALITY_API_URL": "https://air-quality-api.open-meteo.com",
        "OPEN_METEO_MARINE_API_URL": "https://marine-api.open-meteo.com",
        "OPEN_METEO_ARCHIVE_API_URL": "https://archive-api.open-meteo.com",
        "OPEN_METEO_SEASONAL_API_URL": "https://seasonal-api.open-meteo.com",
        "OPEN_METEO_ENSEMBLE_API_URL": "https://ensemble-api.open-meteo.com",
        "OPEN_METEO_GEOCODING_API_URL": "https://geocoding-api.open-meteo.com",
        "OPEN_METEO_FLOOD_API_URL": "https://flood-api.open-meteo.com",
        "OPEN_METEO_CLIMATE_API_URL": "https://climate-api.open-meteo.com"
      }
    }
  }
}

Configuração de Instância Personalizada

Se você está usando sua própria instância do Open-Meteo:

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"],
      "env": {
        "OPEN_METEO_API_URL": "https://your-meteo-api.example.com",
        "OPEN_METEO_AIR_QUALITY_API_URL": "https://air-quality-api.example.com",
        "OPEN_METEO_MARINE_API_URL": "https://marine-api.example.com",
        "OPEN_METEO_ARCHIVE_API_URL": "https://archive-api.example.com",
        "OPEN_METEO_SEASONAL_API_URL": "https://seasonal-api.example.com",
        "OPEN_METEO_ENSEMBLE_API_URL": "https://ensemble-api.example.com",
        "OPEN_METEO_GEOCODING_API_URL": "https://geocoding-api.example.com",
        "OPEN_METEO_FLOOD_API_URL": "https://flood-api.example.com",
        "OPEN_METEO_CLIMATE_API_URL": "https://climate-api.example.com"
      }
    }
  }
}

Transporte HTTP Streamable

O servidor também suporta transporte HTTP Streamable para implantações remotas. Defina a variável de ambiente TRANSPORT para http:

TRANSPORT=http PORT=3000 npx open-meteo-mcp-server

Isso inicia um servidor Express na porta especificada (padrão: 3000) com o endpoint MCP em /mcp. O transporte HTTP é sem estado: cada POST /mcp é tratado de forma independente, nenhum ID de sessão é emitido, e GET/DELETE /mcp respondem 405. Nenhuma ferramenta mantém estado entre chamadas, então os clientes não perdem nada, e não há tabela de sessão para um cliente preencher.

O servidor vincula-se a 127.0.0.1 por padrão, portanto, é acessível apenas a partir da máquina local. Para aceitar conexões de outros hosts, defina HOST=0.0.0.0 explicitamente. A imagem Docker já faz isso, então as portas publicadas funcionam sem configuração adicional.

Para implantações de produção, vincule a uma interface acessível e habilite autenticação e limitação de taxa:

HOST=0.0.0.0 API_KEY=your-secret-key RATE_LIMIT_RPM=60 TRANSPORT=http PORT=3000 npx open-meteo-mcp-server

Se um cliente baseado em navegador se conectar ao servidor, liste sua origem em ALLOWED_ORIGINS — solicitações com um cabeçalho Origin não listado são rejeitadas com 403 como proteção contra rebinding de DNS.

Os clientes devem então incluir a chave em cada solicitação:

Authorization: Bearer your-secret-key
# or
X-API-Key: your-secret-key

Usando scripts npm

# Start in HTTP mode (production)
npm run start:http

# Development with auto-reload in HTTP mode
npm run dev:http

Implantação com Docker

O servidor pode ser facilmente implantado usando Docker.

Usando Imagem Pré-construída do GitHub Container Registry (Recomendado)

Baixe e execute a imagem oficial:

# Pull the latest image
docker pull ghcr.io/cmer81/open-meteo-mcp:latest

# Run the container
docker run -d \
  --name open-meteo-mcp \
  -p 3000:3000 \
  ghcr.io/cmer81/open-meteo-mcp:latest

# Check health
curl http://localhost:3000/health

Tags disponíveis (sem prefixo v — a tag git v2.0.0 publica a imagem como 2.0.0):

  • latest - Última versão estável
  • 2.0.0 - Versão específica
  • 2.0 - Última versão 2.0.x
  • 2 - Última versão 2.x.x

Usando Docker Compose

O repositório inclui duas configurações de Docker Compose:

Produção (usa imagem pré-construída):

# Start with pre-built image from GitHub Container Registry
docker compose up -d

# View logs
docker compose logs -f

# Stop the server
docker compose down

Desenvolvimento (compila a partir do código-fonte):

# Build and start from local source
docker compose -f docker-compose.dev.yml up -d

# Rebuild after code changes
docker compose -f docker-compose.dev.yml up -d --build

Compilando a partir do Código-Fonte

Se você preferir compilar a imagem você mesmo:

# Build the image
npm run docker:build
# or
docker build -t open-meteo-mcp-server .

# Run the container
npm run docker:run
# or
docker run -p 3000:3000 open-meteo-mcp-server

Configuração de Ambiente

Copie .env.example para .env e personalize conforme necessário:

cp .env.example .env
# Edit .env with your configuration

Em seguida, atualize docker-compose.yml para usar o arquivo .env ou passe variáveis de ambiente diretamente.

Verificação de Saúde

O servidor HTTP inclui um endpoint de verificação de saúde:

curl http://localhost:3000/health
# Response: {"status":"ok"}

Este endpoint é usado pelo HEALTHCHECK do Docker e pode ser integrado a plataformas de orquestração de contêineres (Kubernetes, Docker Swarm, etc.).

Variáveis de Ambiente

Todas as variáveis de ambiente são opcionais e possuem padrões sensatos:

  • OPEN_METEO_API_URL - URL base para a API de previsão do Open-Meteo (padrão: https://api.open-meteo.com)
  • OPEN_METEO_AIR_QUALITY_API_URL - URL da API de qualidade do ar (padrão: https://air-quality-api.open-meteo.com)
  • OPEN_METEO_MARINE_API_URL - URL da API meteorológica marinha (padrão: https://marine-api.open-meteo.com)
  • OPEN_METEO_ARCHIVE_API_URL - URL da API de dados históricos (padrão: https://archive-api.open-meteo.com)
  • OPEN_METEO_SEASONAL_API_URL - URL da API de previsão sazonal (padrão: https://seasonal-api.open-meteo.com)
  • OPEN_METEO_ENSEMBLE_API_URL - URL da API de previsão por conjunto (padrão: https://ensemble-api.open-meteo.com)
  • OPEN_METEO_GEOCODING_API_URL - URL da API de geocodificação (padrão: https://geocoding-api.open-meteo.com)
  • OPEN_METEO_FLOOD_API_URL - URL da API de previsão de enchentes (padrão: https://flood-api.open-meteo.com)
  • OPEN_METEO_CLIMATE_API_URL - URL da API de projeção climática (padrão: https://climate-api.open-meteo.com)
  • OPEN_METEO_CACHE_MAX_BYTES - Limite de tamanho para o cache de resposta em memória (padrão: 20000000). Defina como 0 para desabilitar o cache. O limite conta JSON serializado; os objetos analisados mantidos em memória retêm aproximadamente 1,2-2,6x esse valor dependendo do formato do payload, então um cache completo no padrão custa cerca de 50 MB de heap. Solicitações idênticas são atendidas pelo cache até que seu TTL por endpoint expire: 15 minutos para previsões e conjuntos, 30 minutos para qualidade do ar e marinha, 1 hora para enchentes, 6 horas para sazonal, 24 horas para arquivo (1 hora quando o intervalo termina nos últimos 5 dias, que o arquivo ainda está preenchendo) e clima, 7 dias para geocodificação, 30 dias para elevação.
  • TRANSPORT - Modo de transporte: http para HTTP Streamable, omita para stdio (padrão: stdio)
  • PORT - Porta do servidor HTTP ao usar transporte HTTP (padrão: 3000)
  • HOST - Interface à qual o transporte HTTP se vincula (padrão: 127.0.0.1, somente loopback). Defina como 0.0.0.0 para aceitar conexões de outras máquinas. A imagem Docker já define isso como 0.0.0.0, então as portas publicadas funcionam imediatamente.

Segurança do Transporte HTTP (opcional)

  • API_KEY - Quando definido, todas as solicitações para /mcp devem incluir esta chave via Authorization: Bearer <key> ou X-API-Key: <key>. Deixe não definido para acesso aberto (modo local/desenvolvimento). Aplicado em GET, POST e DELETE igualmente.
  • RATE_LIMIT_RPM - Máximo de solicitações por minuto por IP (padrão: 60). Clientes IPv6 são agrupados por /56. Somente transporte HTTP.
  • RATE_LIMIT_ANTHROPIC_RPM - Máximo de solicitações por minuto para o intervalo de saída da Anthropic (160.79.104.0/21), compartilhado por todos os usuários do claude.ai, que todos alcançam o servidor a partir dele (padrão: 600). Atrás de um proxy reverso, liste-o em TRUSTED_PROXIES para que o IP real do cliente seja visto. Somente transporte HTTP.
  • TRUSTED_PROXIES - Lista separada por vírgulas de IPs de proxy confiáveis ou intervalos CIDR (ex.: 10.0.0.0/8,172.16.0.0/12). Quando definido, X-Forwarded-For é respeitado apenas para solicitações originadas desses endereços. Deixe não definido para sempre usar o IP de conexão direta.
  • ALLOWED_ORIGINS - Lista separada por vírgulas de origens de navegador permitidas para alcançar o servidor (ex.: http://localhost:5173,https://app.example). Protege contra rebinding de DNS: qualquer solicitação com um cabeçalho Origin que não esteja listado é rejeitada com 403. Solicitações sem cabeçalho Origin — clientes CLI e transportes SDK — não são afetadas. Vazio por padrão.

/health permanece acessível sem chave e sem limitação de taxa, para que as sondas de contêiner continuem funcionando.

Skills

O diretório skills/ contém arquivos SKILL.md que ajudam assistentes de IA a usar este servidor MCP de forma eficaz. Eles atuam como guias contextuais — a IA lê a skill relevante para saber qual ferramenta chamar e como usar seus parâmetros.

Skills disponíveis

SkillArquivoMelhor para
open-meteoskills/open-meteo/SKILL.mdClima do dia a dia: previsões, dados históricos, qualidade do ar, condições marinhas, elevação
open-meteo-advancedskills/open-meteo-advanced/SKILL.mdModelos específicos (ECMWF, GFS, DWD ICON…), incerteza de conjunto, perspectivas sazonais, projeções climáticas

Usando com Claude Code (CLI)

Copie a(s) skill(s) para o diretório de skills do seu Claude:

cp -r skills/open-meteo ~/.claude/skills/
cp -r skills/open-meteo-advanced ~/.claude/skills/

Isso as instala em ~/.claude/skills/open-meteo/SKILL.md e ~/.claude/skills/open-meteo-advanced/SKILL.md. O Claude Code carregará a skill relevante automaticamente quando você fizer perguntas relacionadas ao clima.

Usando com Claude Desktop

Envie o arquivo SKILL.md diretamente como um documento na sua conversa do Claude Desktop:

  • Para perguntas meteorológicas do dia a dia: envie skills/open-meteo/SKILL.md
  • Para seleção de modelos, conjunto ou projeções climáticas: envie skills/open-meteo-advanced/SKILL.md

Envie uma skill por conversa. A IA a usará como guia de referência durante toda a sessão.

Exemplos de Uso

Geocodificação e Pesquisa de Localização

Find the coordinates for Paris, France
Search for locations named "Berlin" and return the top 5 results
What are the coordinates for postal code 75001?
Search for "Lyon" in France only (countryCode: FR) with results in French (language: fr)
Find all cities named "London" in the United Kingdom with English descriptions

Previsão Meteorológica Básica

Can you get me the weather forecast for Paris (48.8566, 2.3522) with temperature, humidity, and precipitation for the next 3 days?

Dados Meteorológicos Históricos

What were the temperatures in London during January 2023?

Monitoramento de Qualidade do Ar

What's the current air quality in Beijing with PM2.5 and ozone levels?
Give me the current European AQI, UV index, and pollen levels (birch, grass, ragweed) in Paris.

Meteorologia Marinha

Get me the wave height and sea surface temperature for coordinates 45.0, -125.0 for the next 5 days.

Monitoramento de Enchentes

Check the river discharge forecast for coordinates 52.5, 13.4 for the next 30 days.

Previsão Sazonal

Give me the weekly and monthly temperature outlook for Madrid over the next 4 months.

Previsão por Conjunto

Compare the ICON and GFS ensemble forecasts for Berlin over the next 5 days and show the spread across members.

Projeções Climáticas

Show me temperature projections for New York from 2050 to 2070 using CMIP6 models.

Parâmetros da API

Parâmetros Obrigatórios

  • latitude : Latitude no sistema de coordenadas WGS84 (-90 a 90)
  • longitude : Longitude no sistema de coordenadas WGS84 (-180 a 180)

Variáveis Meteorológicas Horárias

  • temperature_2m : Temperatura a 2 metros
  • relative_humidity_2m : Umidade relativa
  • precipitation : Precipitação
  • wind_speed_10m : Velocidade do vento a 10 metros
  • wind_direction_10m : Direção do vento
  • pressure_msl : Pressão média ao nível do mar
  • cloud_cover : Percentual de cobertura de nuvens
  • weather_code : Código da condição meteorológica
  • visibility : Visibilidade
  • uv_index : Índice UV
  • E muitos outros...

Variáveis Meteorológicas Diárias

  • temperature_2m_max/min : Temperaturas máxima/mínima
  • precipitation_sum : Precipitação total
  • wind_speed_10m_max : Velocidade máxima do vento
  • sunrise/sunset : Horários do nascer e pôr do sol
  • weather_code : Código da condição meteorológica
  • uv_index_max : Índice UV máximo

Variáveis de Qualidade do Ar

  • pm10 : Partículas PM10
  • pm2_5 : Partículas PM2.5
  • carbon_monoxide : Monóxido de carbono
  • nitrogen_dioxide : Dióxido de nitrogênio
  • ozone : Ozônio
  • sulphur_dioxide : Dióxido de enxofre
  • ammonia : Amônia
  • dust : Partículas de poeira
  • alder_pollen : Pólen de amieiro (somente Europa)
  • birch_pollen : Pólen de bétula (somente Europa)
  • grass_pollen : Pólen de gramíneas (somente Europa)
  • mugwort_pollen : Pólen de artemísia (somente Europa)
  • olive_pollen : Pólen de oliveira (somente Europa)
  • ragweed_pollen : Pólen de ambrosia (somente Europa)
  • european_aqi : Índice Europeu de Qualidade do Ar
  • european_aqi_pm2_5 : IQA Europeu para PM2.5
  • european_aqi_pm10 : IQA Europeu para PM10
  • european_aqi_nitrogen_dioxide : IQA Europeu para NO₂
  • european_aqi_ozone : IQA Europeu para ozônio
  • european_aqi_sulphur_dioxide : IQA Europeu para SO₂
  • us_aqi : Índice de Qualidade do Ar dos EUA
  • us_aqi_pm2_5 : IQA dos EUA para PM2.5
  • us_aqi_pm10 : IQA dos EUA para PM10
  • us_aqi_nitrogen_dioxide : IQA dos EUA para NO₂
  • us_aqi_ozone : IQA dos EUA para ozônio
  • us_aqi_sulphur_dioxide : IQA dos EUA para SO₂
  • us_aqi_carbon_monoxide : IQA dos EUA para CO
  • uv_index : Índice UV
  • uv_index_clear_sky : Índice UV em condições de céu limpo

Variáveis Meteorológicas Marinhas

  • wave_height : Altura das ondas
  • wave_direction : Direção das ondas
  • wave_period : Período das ondas
  • wind_wave_height : Altura das ondas de vento
  • swell_wave_height : Altura das ondas de swell
  • sea_surface_temperature : Temperatura da superfície do mar

Opções de Formatação

  • temperature_unit : celsius, fahrenheit
  • wind_speed_unit : kmh, ms, mph, kn
  • precipitation_unit : mm, inch
  • timezone : Europe/Paris, America/New_York, etc.

Opções de Intervalo de Tempo

  • forecast_days : Número de dias de previsão (varia conforme a API)
  • past_days : Incluir dados de dias anteriores
  • start_date / end_date : Intervalo de datas para dados históricos (formato AAAA-MM-DD)

Scripts de Desenvolvimento

# Development with auto-reload
npm run dev

# Build TypeScript
npm run build

# Start production server
npm start

# Run tests
npm test

# Type checking
npm run typecheck

# Linting
npm run lint

Avaliações

O diretório evals/ contém um benchmark de usabilidade para LLM das ferramentas deste servidor — uma verificação diferente do npm test. Os testes unitários verificam se o código está correto; isto verifica se um LLM recebendo apenas as ferramentas deste servidor (sem outro contexto) consegue realmente concluir tarefas realistas com elas.

  • evals/evaluation.xml — 14 pares independentes de pergunta/resposta somente leitura, baseados em dados históricos estáveis (arquivo ERA5, projeções CMIP6, geocodificação, elevação), de modo que as respostas esperadas nunca mudam com o tempo. As 10 primeiras nomeiam a ferramenta a ser usada; as 4 últimas não, verificando também a escolha da ferramenta e o tratamento do horário local (o que as instruções do servidor orientam).
  • evals/scripts/evaluation.py — ambiente que inicia o servidor, permite que um agente responda a cada pergunta usando apenas suas ferramentas e compara a resposta com a esperada.

Executando a avaliação

npm run build
pip install -r evals/scripts/requirements.txt
echo 'ANTHROPIC_API_KEY=your_api_key_here' >> .env   # or export it; .env is gitignored

npm run eval
# baseline without the server's instructions, to measure their effect:
npm run eval -- --no-server-instructions
# other model or report file:
npm run eval -- -m claude-opus-5-5 -o eval-report.md

O ambiente passa o instructions de inicialização do servidor para o modelo no prompt do sistema, como fazem os clientes MCP. O TRANSPORT=stdio é forçado para o servidor que ele inicia, de modo que um .env copiado do .env.example (que define TRANSPORT=http) não faz com que ele escute em HTTP.

Isso chama a API real da Anthropic para cada pergunta, portanto consome tokens/créditos — é uma verificação manual de qualidade para o design das ferramentas, não parte da CI.

Ao adicionar, remover ou renomear uma ferramenta, ou ao alterar materialmente a descrição ou o esquema de uma ferramenta, considere adicionar ou atualizar um qa_pair no evals/evaluation.xml que a exercite.

Estrutura do Projeto

src/
├── index.ts          # MCP server entry point
├── client.ts         # HTTP client for Open-Meteo API
├── tools.ts          # MCP tool definitions
├── types.ts          # Zod validation schemas
├── truncation.ts     # Response size capping and serialization
└── security.ts       # Auth, origin validation, rate limiter, IP extraction

Cobertura da API

Este servidor fornece acesso a todos os principais endpoints do Open-Meteo:

Dados Meteorológicos

  • Condições meteorológicas atuais
  • Previsões horárias (até 16 dias)
  • Previsões diárias (até 16 dias)
  • Dados meteorológicos históricos (1940–presente)

Modelos Especializados

  • Modelos regionais de alta resolução (DWD ICON, Météo-France AROME)
  • Modelos globais (NOAA GFS, ECMWF)
  • Especialistas regionais (JMA para a Ásia, MET Norway para os países nórdicos)

Dados Ambientais

  • Previsões de qualidade do ar
  • Condições marinhas e oceânicas
  • Vazão de rios e alertas de enchentes
  • Projeções de mudanças climáticas

Recursos Avançados

  • Previsões por conjunto para quantificação de incertezas
  • Previsões sazonais para planejamento de longo prazo
  • Comparação entre múltiplos modelos
  • Unidades e fusos horários personalizáveis

Tratamento de Erros

O servidor fornece tratamento abrangente de erros com mensagens detalhadas para:

  • Coordenadas inválidas
  • Parâmetros obrigatórios ausentes
  • Limites de taxa da API
  • Problemas de conectividade de rede
  • Intervalos de datas inválidos

Limites de Tamanho de Resposta

As respostas das ferramentas são limitadas a 25.000 caracteres para que uma única consulta ampla não estoure o contexto de um LLM. Quando uma resposta excede o limite, os arrays de séries temporais (hourly, daily, minutely_15) são reduzidos em uma proporção igual — mantendo todas as séries paralelas alinhadas nos mesmos timestamps — e dois campos são adicionados:

{
  "truncated": true,
  "truncation_message": "Response truncated from 95538 characters to stay within the 25000-character limit. Narrow the request (start_date/end_date, forecast_days, past_days, or fewer variables) to retrieve the full data."
}

Para obter dados completos, restrinja a solicitação: intervalo de datas menor, menos forecast_days/past_days ou menos variáveis.

Desempenho

  • Cliente HTTP eficiente com pooling de conexões
  • Serialização otimizada de dados
  • Pegada mínima de memória

Documentação da API

Para documentação detalhada da API, consulte o arquivo openapi.yml e a documentação da API do Open-Meteo.

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Configuração de Desenvolvimento

  1. Faça um fork do repositório
  2. Clone o seu fork: git clone https://github.com/your-username/open-meteo-mcp.git
  3. Instale as dependências: npm install
  4. Crie um branch de funcionalidade: git checkout -b feature/amazing-feature
  5. Faça suas alterações e adicione testes
  6. Execute os testes: npm test
  7. Faça commit das suas alterações: git commit -m 'Add amazing feature'
  8. Envie para o branch: git push origin feature/amazing-feature
  9. Abra um Pull Request

Lançamentos

Este projeto usa lançamentos automatizados via GitHub Actions. Para criar um novo lançamento:

# For a patch release (1.0.0 -> 1.0.1)
npm run release:patch

# For a minor release (1.0.0 -> 1.1.0)
npm run release:minor

# For a major release (1.0.0 -> 2.0.0)
npm run release:major

A GitHub Action automaticamente:

  • Executa os testes e compila o projeto
  • Publica no npm com proveniência
  • Cria um lançamento no GitHub
  • Atualiza os selos de versão

Licença

MIT