README.md•3.31 kB
# MCP Weather Assistant
Doğal dil ile hava durumu sorgulama sistemi. Model Context Protocol (MCP) ve OpenAI GPT kullanarak "Yarın Hamburg'da hava kaç derece olacak?" gibi sorulara yanıt verir.
## Özellikler
- **Doğal Dil Anlama**: Türkçe ve İngilizce sorguları anlayabilir
- **Anlık Hava Durumu**: Herhangi bir şehir için anlık hava bilgisi
- **Hava Tahmini**: 1-7 günlük hava durumu tahmini
- **Ücretsiz API**: Open-Meteo API kullanır (API key gerektirmez)
## Mimari
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Kullanıcı │────▶│ OpenAI GPT │────▶│ MCP Weather │
│ (Doğal Dil) │ │ (Anlama) │ │ Server │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Open-Meteo API │
│ (Hava Durumu) │
└─────────────────┘
```
## Kurulum
### 1. Repoyu Klonla
```bash
git clone https://github.com/YOUR_USERNAME/mcp-weather-assistant.git
cd mcp-weather-assistant
```
### 2. Virtual Environment Oluştur
```bash
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# veya
venv\Scripts\activate # Windows
```
### 3. Bağımlılıkları Kur
```bash
pip install -r requirements.txt
```
### 4. API Key'i Ayarla
```bash
cp .env.example .env
# .env dosyasını düzenle ve OpenAI API key'ini ekle
```
## Kullanım
### İnteraktif Mod
```bash
python client.py
```
Örnek sorular:
- "Hamburg'da hava nasıl?"
- "Yarın İstanbul'da hava kaç derece olacak?"
- "Berlin için 5 günlük tahmin ver"
- "Ankara'da yağmur yağacak mı?"
### Örnek Çıktı
```
🧑 Siz: İstanbul için 5 günlük hava tahmini ver
🤖 Asistan: İstanbul için 5 günlük hava tahmini:
- 27 Kasım: 14.0°C - 18.9°C (Bulutlu)
- 28 Kasım: 12.6°C - 19.6°C (Bulutlu)
- 29 Kasım: 13.3°C - 15.1°C (Orta yağmur)
- 30 Kasım: 10.6°C - 14.6°C (Bulutlu)
- 1 Aralık: 10.4°C - 12.8°C (Hafif sağanak)
```
## MCP Tools
### get_weather(city)
Belirtilen şehir için anlık hava durumunu döner.
**Parametreler:**
- `city` (str): Şehir adı (örn: Hamburg, Istanbul, Berlin)
**Dönen Değer:**
- Sıcaklık, hava durumu, rüzgar hızı bilgisi
### get_forecast(city, days)
Belirtilen şehir için hava durumu tahminini döner.
**Parametreler:**
- `city` (str): Şehir adı
- `days` (int): Kaç günlük tahmin (1-7, varsayılan: 3)
**Dönen Değer:**
- Günlük min/max sıcaklık ve hava durumu
## Teknolojiler
- **Python 3.10+**
- **MCP (Model Context Protocol)** - FastMCP
- **OpenAI GPT** - Doğal dil işleme
- **Open-Meteo API** - Hava durumu verileri
- **httpx** - Async HTTP client
## Lisans
MIT License