Weather
Fornece alertas meteorológicos e previsões usando a API do Serviço Nacional de Meteorologia.
Documentação
Model Context Protocol (MCP)
O Model Context Protocol (MCP) é um padrão aberto desenvolvido pela Anthropic no final de 2024 para resolver um desafio crítico na integração de IA: conectar assistentes de IA a fontes de dados e sistemas do mundo real[1][3]. O MCP serve como uma interface padronizada para modelos de IA interagirem com ferramentas externas, bancos de dados e APIs, de forma semelhante a como o USB-C funciona como uma porta universal para dispositivos[4][7].
Principais Recursos e Benefícios
-
Integração Padronizada: O MCP elimina a necessidade de integrações personalizadas, permitindo que desenvolvedores conectem modelos de IA a várias fontes de dados usando um único protocolo.
-
Descoberta Dinâmica: Agentes de IA podem detectar e utilizar automaticamente servidores MCP disponíveis e suas capacidades sem integração codificada.
-
Segurança Aprimorada: O MCP permite que desenvolvedores implementem medidas de segurança dentro dos servidores, garantindo que agentes de IA acessem apenas dados ou ações permitidas.
-
Flexibilidade: O protocolo é agnóstico em relação ao modelo, permitindo que qualquer modelo de IA (por exemplo, Claude, GPT-4, LLMs de código aberto) use ferramentas habilitadas para MCP.
-
Crescimento do Ecossistema: Desde sua introdução, o MCP ganhou tração significativa, com mais de 1.000 servidores MCP construídos pela comunidade disponíveis até fevereiro de 2025.
Impacto no Desenvolvimento de IA
O MCP está transformando o cenário da IA ao:
-
Simplificar a Integração: Reduzir a complexidade de conectar modelos de IA a sistemas externos de um problema "N×M" para um problema "N+M".
-
Habilitar Fluxos de Trabalho Complexos: Facilitar operações de múltiplas etapas e entre sistemas para agentes de IA, como planejamento de eventos que envolvem várias plataformas.
-
Fomentar a Colaboração: Fornecer um espaço de trabalho compartilhado para sistemas multiagente, permitindo que agentes de IA especializados coordenem tarefas de forma eficiente.
-
Aprimorar a Personalização: Permitir a integração segura de assistentes pessoais de IA com os dados e aplicativos dos usuários.
-
Melhorar a Governança Empresarial: Padronizar o acesso de IA a ferramentas internas e permitir melhor monitoramento e controle das interações de IA.
Em março de 2025, o MCP se tornou um tópico significativo na comunidade de IA, com muitos o vendo como um componente crucial para o desenvolvimento de sistemas de IA mais integrados e conscientes do contexto. Sua natureza aberta e o apoio de um grande player de IA contribuíram para sua rápida adoção e evolução, posicionando o MCP como um potencial padrão de facto para a integração no mundo da IA.
Model Context Protocol (MCP) - início rápido do clima:
Visão Geral
Este documento fornece um guia abrangente para construir um servidor de clima MCP (Model Context Protocol) simples e conectá-lo a um host, o Claude for Desktop. O servidor expõe duas ferramentas: get-alerts e get-forecast, que buscam alertas meteorológicos e previsões usando a API do Serviço Meteorológico Nacional dos EUA.
Sumário
- Introdução
- Pré-requisitos
- Requisitos do Sistema
- Configuração
- Construindo o Servidor
- Testando com Claude for Desktop
- Por Dentro do Funcionamento
- Solução de Problemas
Introdução
Este guia orienta você na criação de um servidor MCP para aprimorar LLMs (como o Claude) com dados meteorológicos em tempo real. O servidor utiliza a estrutura MCP para expor ferramentas para buscar alertas meteorológicos e previsões, abordando a falta de consciência ambiental nativa dos LLMs.
Pré-requisitos
Antes de começar, certifique-se de ter:
- Familiaridade com Python
- Compreensão de LLMs como o Claude
Requisitos do Sistema
- Python 3.10 ou superior
- MCP SDK 1.2.0 ou superior
Configuração
-
Instale
uv:Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shReinicie seu terminal para garantir que o comando
uvseja reconhecido. -
Crie e Configure o Projeto:
Windows (cd para o diretório do seu repositório, execute o comando abaixo no PowerShell/..)
# Create a new directory for our project uv init weather cd weather # Create virtual environment and activate it uv venv .venv\Scripts\activate # Install dependencies uv add mcp[cli] httpx # Create our server file new-item weather.pymacOS/Linux
# Create a new directory for our project uv init weather cd weather # Create virtual environment and activate it uv venv source .venv/bin/activate # Install dependencies uv add "mcp[cli]" httpx # Create our server file touch weather.py
Construindo o Servidor
Importando Pacotes e Configurando a Instância
Adicione o seguinte código ao topo do seu arquivo weather.py:
from typing import Any
import httpx
from mcp.server.fastmcp import FastMCP
# Initialize FastMCP server
mcp = FastMCP("weather")
# Constants
NWS_API_BASE = "https://api.weather.gov"
USER_AGENT = "weather-app/1.0"
#helper function
async def make_nws_request(url: str) -> dict[str, Any] | None:
"""Make a request to the NWS API with proper error handling."""
headers = {
"User-Agent": USER_AGENT,
"Accept": "application/geo+json"
}
async with httpx.AsyncClient() as client:
try:
response = await client.get(url, headers=headers, timeout=30.0)
response.raise_for_status()
return response.json()
except Exception:
return None
def format_alert(feature: dict) -> str:
"""Format an alert feature into a readable string."""
props = feature["properties"]
return f"""
Event: {props.get('event', 'Unknown')}
Area: {props.get('areaDesc', 'Unknown')}
Severity: {props.get('severity', 'Unknown')}
Description: {props.get('description', 'No description available')}
Instructions: {props.get('instruction', 'No specific instructions provided')}
"""
@mcp.tool()
async def get_alerts(state: str) -> str:
"""Get weather alerts for a US state.
Args:
state: Two-letter US state code (e.g. CA, NY)
"""
url = f"{NWS_API_BASE}/alerts/active/area/{state}"
data = await make_nws_request(url)
if not data or "features" not in data:
return "Unable to fetch alerts or no alerts found."
if not data["features"]:
return "No active alerts for this state."
alerts = [format_alert(feature) for feature in data["features"]]
return "\n---\n".join(alerts)
@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
"""Get weather forecast for a location.
Args:
latitude: Latitude of the location
longitude: Longitude of the location
"""
# First get the forecast grid endpoint
points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
points_data = await make_nws_request(points_url)
if not points_data:
return "Unable to fetch forecast data for this location."
# Get the forecast URL from the points response
forecast_url = points_data["properties"]["forecast"]
forecast_data = await make_nws_request(forecast_url)
if not forecast_data:
return "Unable to fetch detailed forecast."
# Format the periods into a readable forecast
periods = forecast_data["properties"]["periods"]
forecasts = []
for period in periods[:5]: # Only show next 5 periods
forecast = f"""
{period['name']}:
Temperature: {period['temperature']}°{period['temperatureUnit']}
Wind: {period['windSpeed']} {period['windDirection']}
Forecast: {period['detailedForecast']}
"""
forecasts.append(forecast)
return "\n---\n".join(forecasts)
if __name__ == "__main__":
# Initialize and run the server
mcp.run(transport='stdio')
Executando o Servidor
Para verificar seu servidor, execute:
uv run weather.py
Testando Seu Servidor com Claude for Desktop
Configuração
- Instale/Atualize o Claude for Desktop: Certifique-se de ter a versão mais recente instalada.
- Configure os Servidores MCP: Abra ou crie o arquivo de configuração em
~/Library/Application Support/Claude/claude_desktop_config.json.

-> REINICIE O SISTEMA SE NÃO FUNCIONAR
-
Adicione a Configuração do Servidor:
{ "mcpServers": { "weather": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",# S:\\Dev\\weather "run", "weather.py" ] } } }Substitua
/ABSOLUTE/PATH/TO/PARENT/FOLDER/weatherpelo caminho absoluto correto para o diretório do seu projeto. Talvez seja necessário fornecer o caminho completo para o executáveluvno campocommand(usewhich uvno MacOS/Linux ouwhere uvno Windows para encontrá-lo). -
Reinicie o Claude for Desktop.
Teste com Comandos
- Verifique a Detecção de Ferramentas: Procure o ícone de martelo no Claude for Desktop. Clicar nele deve listar as ferramentas
get_alertseget_forecast.
2. Execute Consultas de Teste:
- "Qual é o clima em Sacramento?"
- "Quais são os alertas meteorológicos ativos no Texas?"
Observação: Essas consultas funcionam apenas para locais nos EUA, pois usam o Serviço Meteorológico Nacional dos EUA.
O Que Acontece por Dentro
- O cliente envia sua pergunta para o Claude.
- O Claude analisa as ferramentas disponíveis e decide quais usar.
- O cliente executa a(s) ferramenta(s) escolhida(s) por meio do servidor MCP.
- Os resultados são enviados de volta para o Claude.
- O Claude formula e exibe uma resposta em linguagem natural.
Solução de Problemas
-
Obtendo logs do Claude for Desktop
mcp.log: Conexões MCP gerais e falhas.mcp-server-SERVERNAME.log: Logs de erros do servidor nomeado.
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log -
Servidor não aparecendo no Claude
- Verifique a sintaxe do arquivo
claude_desktop_config.json. - Certifique-se de que o caminho do projeto seja absoluto.
- Reinicie completamente o Claude for Desktop.
- Verifique a sintaxe do arquivo
-
Chamadas de ferramentas falhando silenciosamente
- Verifique os logs do Claude para erros.
- Verifique se seu servidor compila e executa sem erros.
- Tente reiniciar o Claude for Desktop.
-
Nada disso está funcionando. O que eu faço?
- Consulte o guia de depuração.
-
Erro: Falha ao recuperar dados do ponto de grade
- Coordenadas fora dos EUA
- Problemas com a API do NWS
- Limitação de taxa
Correção:
- Verifique as coordenadas dos EUA
- Adicione um pequeno atraso entre as solicitações
- Verifique a página de status da API do NWS
-
Erro: Nenhum alerta ativo para [ESTADO]
- Não há alertas meteorológicos atuais para esse estado. Tente um estado diferente.
Para solução de problemas mais avançada, consulte o guia de depuração do MCP.
MCP Inspector
npx @modelcontextprotocol/inspector uv run weather.py


concluído com teste local