mcp_weather
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp_weathertemperature in Paris"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🌡️ MCP Weather Server
Um servidor MCP (Model Context Protocol) desenvolvido em Python que fornece uma interface de usuário interativa e ferramentas backend para consulta de temperatura em tempo real em qualquer cidade do mundo. O projeto utiliza a API pública e gratuita da Open-Meteo (sem necessidade de chave de API) e renderiza as informações utilizando componentes visuais declarativos de UI.
🎯 Objetivo
O principal objetivo deste projeto é estender as capacidades de assistentes de IA (como Claude Desktop ou outros clientes MCP) permitindo que eles:
Apresentem um formulário interativo de pesquisa de clima diretamente na interface de chat.
Busquem dados meteorológicos em tempo real por meio de ferramentas baseadas no protocolo MCP.
Exibam o resultado formatado em um card estilizado e amigável para o usuário.
Related MCP server: weather-mcp
🛠️ Tecnologias Utilizadas
O projeto foi construído utilizando tecnologias modernas e eficientes no ecossistema Python:
Python (>= 3.14): Linguagem de programação base do projeto.
Model Context Protocol (MCP): Protocolo aberto que possibilita a comunicação estruturada de ferramentas e interfaces entre modelos de IA e servidores locais/remotos.
FastMCP (com suporte a
[apps]): Framework moderno para criação rápida de servidores MCP em Python, incluindo suporte integrado a aplicações e interfaces visuais.Prefab UI: Biblioteca para construção declarativa de componentes de interface de usuário (como
Card,Form,Column,Row,Texte controle de estado reativo).HTTPX: Cliente HTTP para Python, utilizado para realizar as consultas assíncronas/síncronas às APIs de geocodificação e previsão do tempo.
Geocoding API: Para converter o nome da cidade informado em coordenadas geográficas (latitude e longitude).
Weather Forecast API: Para buscar a temperatura atual com base nas coordenadas obtidas.
📁 Estrutura do Projeto
A estrutura do projeto é minimalista e organizada da seguinte forma:
mcp_weather/
├── .gitignore # Arquivos e pastas a serem ignorados pelo Git
├── .python-version # Definição da versão do Python utilizada
├── pyproject.toml # Configuração do projeto e suas dependências (PEP 518/621)
├── uv.lock # Arquivo de lock de dependências gerado pelo gerenciador 'uv'
├── main.py # Código-fonte principal contendo o servidor MCP e as ferramentas
└── README.md # Documentação do projeto (este arquivo)Detalhamento do main.py
Geolocalização e Clima (
_get_current_temperature): Função auxiliar que faz chamadas HTTP seguras para o Open-Meteo, tratando erros comuns (como cidades não encontradas ou indisponibilidade de API).Ferramenta de Backend (
get_temperature): Ferramenta registrada no FastMCP que recebe o payload do formulário, valida os dados e executa a busca meteorológica.Interface de Usuário (
consultar_temperatura): Ponto de entrada de UI do servidor. Ela define o estado inicial da aplicação, cria um formulário dinâmico a partir de um modelo Pydantic e renderiza os cards de sucesso ou erro de forma condicional (If/Else).
🚀 Instalação e Execução
Este projeto utiliza o gerenciador de pacotes moderno uv. Caso não tenha o uv instalado, você pode utilizar o pip tradicional.
Opção 1: Executando com uv (Recomendado)
Certifique-se de estar com o Python 3.14 ou superior configurado.
Instale as dependências e crie o ambiente virtual automaticamente:
uv syncExecute o servidor localmente:
uv run main.py
Opção 2: Executando com pip
Crie e ative um ambiente virtual:
python -m venv .venv # No Windows (PowerShell): .venv\Scripts\Activate.ps1 # No Linux/macOS: source .venv/bin/activateInstale os pacotes necessários:
pip install "fastmcp[apps]>=3.4.2" "prefab>=1.6.0" httpx pydanticExecute o servidor:
python main.py
🔍 Testando com o MCP Inspector
O @modelcontextprotocol/inspector é uma ferramenta excelente para testar e depurar servidores MCP de forma rápida, sem a necessidade de configurá-los previamente em clientes complexos de IA.
Para testar este servidor com o inspetor, execute o seguinte comando no terminal:
npx @modelcontextprotocol/inspector uv run main.pyIsso iniciará o inspetor em seu navegador. Para verificar o resultado:
Conecte-se ao servidor MCP pelo painel do Inspetor.
Clique na aba Apps no menu do inspetor.
Selecione o app MCP que consulta o clima na cidade informada para interagir com o formulário e validar a resposta da temperatura.
🔌 Configuração no Claude Desktop
Para utilizar este servidor diretamente no Claude Desktop, adicione a configuração do servidor ao seu arquivo de configuração do Claude (claude_desktop_config.json).
Caminho do arquivo de configuração
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Exemplo de Configuração
Substitua o caminho executável de acordo com o seu ambiente (usando uv para execução automática):
{
"mcpServers": {
"mcp-weather": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\Gustavo\\workspace\\test\\mcp_weather",
"run",
"main.py"
]
}
}
}Nota: Certifique-se de ajustar o caminho absoluto da pasta para corresponder exatamente à localização no seu computador.
💡 Como Funciona a Interface
Ao interagir com um modelo de linguagem que suporta o servidor, o assistente pode acionar a ferramenta visual consultar_temperatura. O fluxo de execução funciona assim:
Apresentação: O usuário solicita o clima, e o modelo renderiza o formulário
consultar_temperatura.Entrada de Dados: O usuário preenche o campo de texto com o nome da cidade desejada (ex:
São PauloouTokyo) e clica em Consultar.Processamento: O botão aciona a ferramenta de backend
get_temperaturevia ação reativaCallTool.Atualização de Estado:
Se a busca for bem-sucedida, o estado
weather_resulté atualizado com as coordenadas e temperatura atuais, exibindo um card azul com a temperatura e localização resolvida (ex:São Paulo, Brazil).Se ocorrer um erro (ex: cidade inexistente), a tela exibe uma mensagem de erro estilizada num card vermelho.
Rodapé: Link de atribuição de dados para a API parceira Open-Meteo.
Available Tools
1 toolconsultar_temperaturaA
Mostra um formulário para o usuário informar o nome de uma cidade e exibe a temperatura atual dessa cidade. Chame esta ferramenta sempre que o usuário quiser saber a temperatura de qualquer lugar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is straightforward about showing a form and displaying temperature. No annotations exist, but the description covers the essential behavior. Minor missing details (e.g., internet requirement) are acceptable given tool simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences, front-loaded with purpose, no redundant information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, no output schema, and no annotations, the description provides all necessary context for an AI agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No input parameters in schema, baseline is 4 per rules. The description adds meaning by explaining that the tool will prompt for a city name, which compensates for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows a form for city input and displays temperature. The verb 'mostra' and the specific resource 'temperatura' make purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this tool whenever the user wants to know the temperature of any place', providing clear when-to-use guidance without any ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
consultar_temperatura
TDQS
Scored across 1 tool
Only one tool exists, so there is no ambiguity. The tool's purpose is clearly described.
With a single tool, naming consistency is inherently perfect. The name 'consultar_temperatura' follows a clear verb_noun pattern in Portuguese.
A single tool for a weather server feels thin. While a simple temperature lookup might be acceptable, the server could benefit from additional tools for forecasts or other conditions, making the count borderline.
The tool only provides current temperature. Missing forecast, humidity, wind, and other common weather data creates significant gaps for a weather server, likely causing agent failures when more information is requested.
Maintenance
Related MCP Connectors
Current temperature for a city via Open-Meteo. Query discarded after the call.
Real-time weather conditions and multi-day forecasts via Open-Meteo — free, no API key required
Global weather via Open-Meteo: forecast, historical, marine, air quality, geocoding, elevation.
Get current weather for any city and create images from your prompts. Streamline planning, reports…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides weather information using Open-Meteo API without requiring an API key. Supports weather queries by city name or coordinates with customizable temperature units.-
- FlicenseNot gradedqualityDmaintenanceProvides current weather data for a given city using Open-Meteo (free, no API key).-
- FlicenseNot gradedqualityDmaintenanceEnables fetching current temperature for any city using the Open-Meteo API, requiring no API key.-
- AlicenseNot gradedqualityDmaintenanceProvides real-time and historical weather data for any city worldwide, including forecasts, air quality, and marine conditions, using the free Open-Meteo API.5 npmMIT