Skip to main content
Glama
mcp-playwright-weather-israel

mcp-playwright-weather-israel

by shoshi-raz
README.md
# mcp-playwright-weather-israel

פרויקט MCP Server לשליפת תחזית מזג אוויר ישראלית באמצעות Playwright.

---

## מטרת הפרויקט

הפרויקט מממש **MCP Server** (Model Context Protocol) בשפת Python, המאפשר ל-LLM (Gemini של Google) לשלוף תחזית מזג אוויר ישראלית מהאתר [weather2day.co.il](https://www.weather2day.co.il/forecast) — ללא תלות ב-API חיצוני.

השרת משתמש ב-**Playwright** לאוטומציה של דפדפן Chromium: פתיחת האתר, הזנת שם עיר, בחירה מהרשימה הנפתחת וחילוץ תוכן התחזית. ה-LLM מקבל את הטקסט המנוקה ומסכם אותו למשתמש.

---

## ארכיטקטורת MCP

```
┌─────────────┐       ┌──────────────┐       ┌─────────────────────┐
│  המשתמש     │──────▶│   host.py    │──────▶│  weather_Israel.py  │
│  (client)   │       │  (MCP Host)  │       │   (MCP Server)      │
└─────────────┘       └──────────────┘       └─────────────────────┘
                             │                          │
                             │                          ▼
                             │               ┌─────────────────────┐
                             │               │  Playwright/Chromium│
                             │               │  weather2day.co.il  │
                             │               └─────────────────────┘
                             │
                             ▼
                      ┌──────────────┐
                      │  weather_    │
                      │  USA.py      │
                      │  (MCP Server)│
                      └──────────────┘
```

### רכיבים

| קובץ | תפקיד |
|------|--------|
| `host.py` | MCP Host — מנהל את השיחה עם ה-LLM ומחבר בין מספר MCP Servers |
| `client.py` | ממשק משתמש טקסטואלי לשיחה עם ה-LLM |
| `weather_Israel.py` | MCP Server — חושף 4 כלים לשליפת תחזית ישראלית |
| `weather_USA.py` | MCP Server קיים לתחזית אמריקאית |

### 4 הכלים של weather_Israel.py

| כלי | תיאור |
|-----|-------|
| `open_weather_forecast_israel` | פותח דפדפן Chromium ומנווט לאתר התחזית |
| `enter_weather_forecast_city_israel` | מזין שם עיר בשדה החיפוש וממתין לרשימה הנפתחת |
| `select_weather_forecast_city_israel` | בוחר את הפריט הראשון ברשימה ומנווט לדף התחזית |
| `get_weather_forecast_content_israel` | מחלץ ומנקה את תוכן התחזית מהדף |

---

## התקנה

### דרישות מקדימות

- Python 3.11+
- [uv](https://docs.astral.sh/uv/) — מנהל חבילות Python

### התקנת תלויות

```bash
# התקנת כל התלויות מ-pyproject.toml
uv sync

# התקנת דפדפן Chromium עבור Playwright
uv run playwright install chromium
```

---

## הרצה

### הפעלת המערכת המלאה (מומלץ)

```bash
uv run python host.py
```

הפקודה מפעילה את ה-MCP Host, שבתורו מאתחל את כל ה-MCP Servers (כולל `weather_Israel.py`) ופותח ממשק שיחה עם ה-LLM.

### הפעלת שרת מזג האוויר הישראלי בנפרד

```bash
uv run python weather_Israel.py
```

מפעיל את `weather_Israel.py` כ-MCP Server עצמאי (בדרך כלל לצורך פיתוח ובדיקות).

### הרצת בדיקות

```bash
# כל הבדיקות
uv run pytest tests/ --tb=short

# עם פירוט מלא
uv run pytest tests/ -v

# בדיקות property בלבד (hypothesis)
uv run pytest tests/ -v -m "hypothesis"
```

---

## דוגמאות שאלות ל-LLM

לאחר הפעלת `host.py`, ניתן לשאול את ה-LLM שאלות כגון:

1. **תחזית כללית לעיר:**
   > "מה מזג האוויר בתל אביב היום?"

2. **השוואה בין ערים:**
   > "מהי התחזית לירושלים לסוף השבוע, ואיך היא שונה מחיפה?"

3. **תכנון פעילות חוצות:**
   > "האם מומלץ לצאת לטיול בפארק ביום ראשון הקרוב באילת?"

4. **תחזית גשם:**
   > "מתי צפוי גשם בחדרה השבוע?"

5. **מזג אוויר בצפון הארץ:**
   > "מה הטמפרטורות הצפויות בצפת ובטבריה בשלושת הימים הקרובים?"

---

## מבנה הפרויקט

```
.
├── host.py                # MCP Host
├── client.py              # ממשק משתמש
├── weather_Israel.py      # MCP Server — תחזית ישראל
├── weather_USA.py         # MCP Server — תחזית ארה"ב
├── pyproject.toml         # הגדרות הפרויקט ותלויות
├── uv.lock                # קובץ נעילת גרסאות
├── README.md              # תיעוד זה
└── tests/
    ├── conftest.py                    # fixtures משותפות
    ├── test_weather_israel_tools.py   # unit tests לכלים
    └── test_weather_israel_cleanup.py # tests לפונקציית הניקוי
```

---

## רישיון

פרויקט זה פתוח לשימוש חופשי לצרכי לימוד ופיתוח.

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct role in a sequential workflow: opening the site, entering a city, selecting from dropdown, and extracting content. No two tools overlap in purpose.

Naming Consistency5/5

All tools follow a consistent 'verb_weather_forecast_[specific]_israel' pattern with snake_case. The verbs clearly indicate the action, and the domain and location are uniformly included.

Tool Count5/5

With 4 tools, the server is well-scoped for a focused weather forecast workflow. Each tool is necessary for the sequence and there is no bloat.

Completeness5/5

The tool set covers the complete workflow from opening the site to retrieving the forecast content. No obvious dead ends or missing steps for its intended purpose.