weather-mcp-server
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., "@weather-mcp-serverwhat's the current weather in New York?"
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.
🌤️ Weather MCP Server - Clean Architecture Edition [Docker + Redis]
Servidor MCP de Clima com Clean Architecture para Claude Desktop - Production Ready
Claude AI transformado em estação meteorológica profissional usando princípios SOLID
🎉 VERSÃO ATUAL: 2.0.0 - Clean Architecture Completa ✅ Refatoração concluída • ✅ Zero legacy code • ✅ Production ready
📊 Status do Projeto
Aspecto | Status | Descrição |
Build | TypeScript compilation + Docker build | |
Tests | Unit tests + Integration tests | |
Security | Trivy vulnerability scan + npm audit | |
Docker | Multi-stage build otimizado | |
Deploy | CI/CD pipeline automatizado |
🔄 CI/CD Pipeline
Este projeto implementa um pipeline CI/CD completo com GitHub Actions:
🔍 Lint & Type Check → 🧪 Tests → 🏗️ Build → 🔒 Security → 🐳 Docker → 🚀 DeployPipeline Stages:
🔍 Lint & Type Check: ESLint + TypeScript compilation check
🧪 Tests: Unit tests com mocks + Integration tests com PostgreSQL/Redis
🏗️ Build: TypeScript compilation + artifact generation
🔒 Security: Trivy vulnerability scanner + npm audit
🐳 Docker: Multi-stage build + push to GitHub Container Registry
🚀 Deploy: Automated deployment para staging/production
Comandos de Teste Locais:
npm run test:unit # Tests unitários (sem dependências)
npm run test:integration # Tests de integração (requer Docker)
npm run test:ci # Tests para CI com coverage🎯 O que é este projeto?
O Weather MCP Server é um servidor Model Context Protocol (MCP) que expande as capacidades do Claude Desktop, permitindo que ele consulte informações meteorológicas em tempo real de qualquer lugar do mundo usando uma arquitetura limpa e profissional.
🧠 Entendendo o MCP (Model Context Protocol)
O MCP é um protocolo desenvolvido pela Anthropic que permite ao Claude AI:
🔌 Conectar-se a APIs externas e bancos de dados
🛠️ Usar ferramentas personalizadas criadas pela comunidade
📊 Acessar dados em tempo real que não estão em seu conhecimento base
🎮 Executar ações específicas através de plugins
Em outras palavras: O MCP transforma o Claude de uma IA com conhecimento limitado em uma IA que pode acessar informações atualizadas do mundo real!
🌟 Funcionalidades Disponíveis
🎯 Funcionalidade | 📋 Descrição | 💡 Exemplo de Uso |
🌡️ Clima Atual | Consulta temperatura, umidade, pressão e condições meteorológicas atuais | "Qual é a temperatura atual em São Paulo?" |
🔮 Previsão do Tempo | Fornece previsões detalhadas para os próximos 5 dias | "Como estará o clima amanhã em Londres?" |
📊 Histórico Meteorológico | Mantém registro de todas as consultas realizadas | "Mostre-me as últimas consultas de clima que fiz" |
⚡ Cache Inteligente | Sistema Redis para consultas ultrarrápidas | 95% das consultas vêm do cache |
Related MCP server: Weather MCP Server
🚀 Demonstração Prática
Antes (Claude Desktop sem MCP):
🙋 Você: "Qual é a temperatura atual em Tóquio?"
🤖 Claude: "Desculpe, não tenho acesso a dados meteorológicos em tempo real..."Depois (Claude Desktop com Weather MCP Server):
🙋 Você: "Qual é a temperatura atual em Tóquio?"
🤖 Claude: "🌤️ Em Tóquio agora:
🌡️ Temperatura: 23°C (sensação térmica: 25°C)
💧 Umidade: 68%
🌬️ Vento: 12 km/h
☁️ Condições: Parcialmente nublado
📊 Dados atualizados em tempo real via OpenWeatherMap"🏗️ Arquitetura Clean + SOLID
graph TB
subgraph "🎮 Presentation Layer"
A[👤 Claude Desktop] --> B[🤖 MCP Server]
B --> C[🎮 Weather Controller]
B --> D[🎮 History Controller]
end
subgraph "🔧 Application Layer (Use Cases)"
C --> E[🌤️ Get Weather Use Case]
C --> F[🔮 Get Forecast Use Case]
C --> G[📊 Get Cache Stats Use Case]
D --> H[📚 Get History Use Case]
end
subgraph "🏛️ Domain Layer"
E --> I[⚡ Weather Entity]
F --> I
H --> J[📊 History Entity]
K[🔗 Repository Interfaces]
end
subgraph "🏗️ Infrastructure Layer (Adapters)"
E --> L[🌍 OpenWeather API Repository]
E --> M[🗄️ PostgreSQL Repository]
E --> N[⚡ Redis Cache Repository]
F --> L
F --> N
H --> M
L --> O[🌤️ OpenWeatherMap API]
M --> P[🗄️ PostgreSQL Database]
N --> Q[⚡ Redis Cache]
end✅ Princípios SOLID Aplicados:
🔤 Princípio | ✅ Como foi aplicado | 💡 Benefício |
S - Single Responsibility | Cada classe tem apenas uma responsabilidade | Código mais limpo e focado |
O - Open/Closed | Extensível via interfaces, fechado para modificação | Fácil adicionar novas APIs |
L - Liskov Substitution | Implementações intercambiáveis via contratos | Flexibilidade total |
I - Interface Segregation | Interfaces pequenas e específicas | Sem dependências desnecessárias |
D - Dependency Inversion | Dependências injetadas via abstrações | Testabilidade e desacoplamento |
📋 Pré-requisitos
🔧 Software Necessário:
📦 Software | 📏 Versão Mínima | 🔗 Download | ✅ Verificar |
Node.js | 18.0+ |
| |
Docker Desktop | Mais recente |
| |
Claude Desktop | Mais recente | Abrir aplicativo | |
Git | Qualquer |
|
🔑 Chaves de API:
🌍 OpenWeatherMap API Key (GRATUITA)
🔗 Acesse: openweathermap.org/api
📝 Crie uma conta gratuita
🗝️ Obtenha sua API key (sem custo)
💡 Permite 1.000 consultas por dia grátis
📥 Instalação Completa
🗂️ Passo 1: Baixar o Projeto
# Clonar repositório
git clone https://github.com/glaucia86/weather-mcp-server.git
# Entrar na pasta
cd weather-mcp-server
# Verificar estrutura
ls -la📦 Passo 2: Instalar Dependências
# Instalar pacotes Node.js
npm install
# Verificar instalação
npm list --depth=0⚙️ Passo 3: Configurar Ambiente
Criar arquivo .env:
# Copiar exemplo
cp .env.example .envConfiguração do .env:
# 🌍 API do OpenWeatherMap (OBRIGATÓRIO)
WEATHER_API_KEY=sua_api_key_aqui
# 🗄️ Banco de Dados (PostgreSQL)
DATABASE_URL=postgresql://mcp_user:mcp_pass@localhost:5432/weather_mcp
# ⚡ Cache (Redis)
REDIS_URL=redis://localhost:6379
# 🖥️ Configurações do Servidor
PORT=3000
NODE_ENV=production
LOG_LEVEL=info🔨 Passo 4: Compilar e Iniciar
# Compilar TypeScript
npm run build
# Iniciar infraestrutura (PostgreSQL + Redis)
npm run docker:up
# Aguardar inicialização
sleep 30
# Testar sistema
npm run test:manual🎮 Configuração do Claude Desktop
📍 Localizar Arquivo de Configuração:
🖥️ Sistema | 📂 Caminho do Arquivo |
Windows |
|
macOS |
|
Linux |
|
⚙️ Configuração:
{
"mcpServers": {
"weather-mcp": {
"command": "node",
"args": ["/caminho/completo/para/weather-mcp-server/dist/mcp-entry.js"],
"env": {
"WEATHER_API_KEY": "SUA_API_KEY_OPENWEATHERMAP",
"DATABASE_URL": "postgresql://mcp_user:mcp_pass@localhost:5432/weather_mcp",
"REDIS_URL": "redis://localhost:6379",
"NODE_ENV": "production",
"LOG_LEVEL": "error",
"MCP_MODE": "true"
}
}
}
}⚠️ IMPORTANTE:
Substitua
/caminho/completo/para/pelo seu caminho realSubstitua
SUA_API_KEY_OPENWEATHERMAPpela sua chave OpenWeatherMapFeche COMPLETAMENTE o Claude Desktop e reabra após salvar
🎪 Como Usar
1️⃣ Consultas de Clima Atual
💬 "Qual é o clima atual em São Paulo?"
💬 "Como está o tempo em Londres agora?"
💬 "Temperatura atual no Rio de Janeiro"2️⃣ Previsões do Tempo
💬 "Qual será a previsão do tempo para amanhã em Paris?"
💬 "Como estará o clima nos próximos 3 dias em Tokyo?"
💬 "Previsão de 5 dias para London"3️⃣ Histórico e Análises
💬 "Me mostre o histórico de consultas meteorológicas"
💬 "Quais foram as últimas cidades que consultei?"
💬 "Histórico de clima de São Paulo dos últimos 10 registros"4️⃣ Estatísticas do Sistema
💬 "Mostre as estatísticas do cache Redis"
💬 "Qual é a performance do sistema?"🛠️ Scripts Disponíveis
🎯 Finalidade | 💻 Comando | 📋 Descrição |
Start Server |
| Servidor principal |
MCP Server |
| Servidor MCP para Claude Desktop |
Build |
| Compila TypeScript |
Test MCP |
| Testa servidor MCP |
Dev Mode |
| Desenvolvimento com hot-reload |
Clean |
| Remove builds anteriores |
Docker Up |
| Inicia PostgreSQL + Redis |
Docker Down |
| Para containers |
Migrate |
| Executa migrações de banco |
🏗️ Estrutura do Projeto
src/
├── 🏛️ domain/ # Camada de Domínio (Business Rules)
│ ├── entities/ # Entidades do domínio
│ │ └── Weather.ts # Modelos meteorológicos
│ └── repositories/ # Contratos/Interfaces
│ └── IRepositories.ts # Interfaces dos repositórios
│
├── 🔧 application/ # Camada de Aplicação (Use Cases)
│ └── usecases/ # Casos de uso específicos
│ ├── GetCurrentWeatherUseCase.ts
│ ├── GetWeatherForecastUseCase.ts
│ ├── GetWeatherHistoryUseCase.ts
│ └── GetCacheStatisticsUseCase.ts
│
├── 🏗️ infrastructure/ # Camada de Infraestrutura (Adapters)
│ ├── logger/ # Sistema de logging
│ │ └── Logger.ts
│ ├── repositories/ # Implementações dos repositórios
│ │ ├── PostgreSQLWeatherRepository.ts
│ │ ├── RedisCacheRepository.ts
│ │ └── OpenWeatherMapApiRepository.ts
│ └── di/ # Dependency Injection
│ └── DIContainer.ts
│
├── 🎮 presentation/ # Camada de Apresentação
│ ├── controllers/ # Controllers
│ │ ├── WeatherController.ts
│ │ └── HistoryController.ts
│ └── servers/ # Servidores
│ └── WeatherMCPServer.ts
│
├── 🛡️ middleware/ # Middleware de Segurança
│ └── security.ts
│
├── 📊 monitoring/ # Monitoramento
│ └── health.ts
│
├── 🧪 scripts/ # Scripts Utilitários (3 essenciais)
│ ├── benchmark-cache.ts # Benchmark de performance
│ ├── migrate.ts # Migração de banco
│ └── test-mcp-server.ts # Teste do servidor MCP
│
├── index.ts # Entry point principal
└── mcp-entry.ts # Entry point MCP⚡ Performance e Cache
📈 Métricas de Performance Reais:
📊 Métrica | ⚡ Com Cache | 🐌 Sem Cache | 🎯 Melhoria |
Resposta API | 23ms | 315ms | 13.6x mais rápido |
Taxa de Acerto | 95% | 0% | Economia massiva |
Chamadas API | 5 (em 50 requests) | 50 | 90% menos |
🔍 Verificar Cache:
# Ver todas as chaves do cache
docker exec weather-cache redis-cli keys "*"
# Estatísticas do Redis
docker exec weather-cache redis-cli info stats
# Ver TTL de uma chave
docker exec weather-cache redis-cli ttl "weather:sao paulo"🚨 Solução de Problemas
❌ "Cannot find module"
# Limpeza completa
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
npm run build❌ "Connection refused" (PostgreSQL)
# Verificar containers
docker ps
# Reiniciar infrastructure
npm run docker:down
npm run docker:up
# Aguardar inicialização
sleep 30❌ MCP não conecta no Claude Desktop
✅ Verifique se o caminho no
claude_desktop_config.jsonestá correto📂 Confirme se
dist/mcp-entry.jsexiste (npm run build)🔄 Feche completamente o Claude Desktop e reabra
🧪 Teste manual:
node dist/mcp-entry.js
📊 Status Atual - Agosto 2025
✅ Clean Architecture 100% Implementada:
Arquitetura Completa:
domain/,application/,infrastructure/,presentation/Dependency Injection: Container DI funcionando perfeitamente
Princípios SOLID: Aplicados rigorosamente
4 MCP Tools: Registradas e funcionando no Claude Desktop
Database + Cache: PostgreSQL + Redis operacionais
Zero Legacy Code: Arquivos desnecessários removidos
🎯 MCP Tools Funcionais:
🔧 Tool | 📋 Função | ✅ Status |
| Clima atual de qualquer cidade | ✅ Funcionando |
| Previsão 5 dias | ✅ Funcionando |
| Histórico de consultas | ✅ Funcionando |
| Estatísticas do sistema | ✅ Funcionando |
🤝 Contribuindo
🍴 Fork este repositório
🌿 Crie uma branch (
git checkout -b feature/MinhaFeature)💻 Desenvolva sua funcionalidade
✅ Teste completamente
📝 Commit (
git commit -m 'Adiciona MinhaFeature')📤 Push (
git push origin feature/MinhaFeature)🔄 Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
👩💻 Autora
Glaucia Lemos
Software AI Engineer | ex-Microsoft
⭐ Gostou do projeto? Deixe uma estrela! ⭐
Feito com ❤️ e ☕ por Glaucia Lemos
Transformando dados meteorológicos em conversas inteligentes 🌤️🤖
This server cannot be deployed
Maintenance
Related MCP Connectors
Global weather via Open-Meteo: forecast, historical, marine, air quality, geocoding, elevation.
Real-time weather conditions and multi-day forecasts via Open-Meteo — free, no API key required
Get current weather for any city and create images from your prompts. Streamline planning, reports…
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time weather data, forecasts, and historical weather information from OpenWeatherMap API for Claude Desktop, enabling natural language queries about current conditions, forecasts, air quality, and weather alerts worldwide.11MIT
- FlicenseNot gradedqualityDmaintenanceEnables real-time weather queries via Claude Desktop using OpenWeatherMap API, providing current conditions and 24-hour forecasts for any city.15 npm-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to query real-time weather information for specified regions using the OpenWeatherMap API.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to query real-time weather data for any specified location using the OpenWeatherMap API.5 npmMIT