Skip to main content
Glama
mali8573

Israel Weather Forecast MCP Server

by mali8573
README.md
# Israel Weather Forecast MCP Server

שרת MCP עצמאי ששולף תחזית מזג אוויר ישראלית **על ידי הפעלת דפדפן אמיתי
(Playwright)**, ולא על ידי קריאה ל-API קונבנציונלי. הרעיון: המודל (ה-Host,
למשל Claude Desktop / Claude Code) קורא ל-tools בזה אחר זה בדיוק כמו
משתמש אנושי שגולש באתר: פותח את הדף, מקליד שם עיר, בוחר אותה מרשימת
ההשלמה האוטומטית, ולבסוף מחלץ את תוכן העמוד כדי לענות על שאלת המשתמש.

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

```
israel-weather-mcp/
├── server.py           # השרת עצמו - כל ה-tools מוגדרים כאן
├── requirements.txt
└── README.md
```

## Tools שמומשו

### שלב א' - ניווט וחיפוש עיר

| Tool | תיאור |
|---|---|
| `open_weather_forecast_israel()` | פותח דפדפן Chromium (Playwright) ומנווט לעמוד התחזית של ims.gov.il |
| `enter_weather_forecast_city_israel(city_name)` | מקליד את שם העיר בתיבת החיפוש בעמוד |
| `select_weather_forecast_city_israel(city_name)` | בוחר את העיר המתאימה מרשימת ההשלמה האוטומטית שמופיעה |

### שלב ב' - חילוץ תוכן (RAG)

| Tool | תיאור |
|---|---|
| `get_weather_forecast_content()` | מחלץ את הטקסט מעמוד התחזית (אחרי בחירת עיר), מנקה HTML/script/style ומחזיר טקסט נקי שה-LLM יכול לענות ממנו ישירות בצ'אט |
| `close_weather_forecast_browser()` | סוגר את הדפדפן בסיום העבודה |

הזרימה הטיפוסית (סדר קריאה מצופה על ידי ה-LLM):

```
open_weather_forecast_israel
        ↓
enter_weather_forecast_city_israel("תל אביב")
        ↓
select_weather_forecast_city_israel("תל אביב")
        ↓
get_weather_forecast_content()   → הטקסט חוזר למודל, שמנסח תשובה למשתמש
```

## התקנה

```bash
cd israel-weather-mcp
python -m venv .venv
source .venv/bin/activate        # ב-Windows: .venv\Scripts\activate
pip install -r requirements.txt
playwright install chromium      # מוריד את הדפדפן שה-Playwright מפעיל
```

## חיבור ל-Host (למשל Claude Desktop)

בקובץ הקונפיגורציה של ה-MCP (למשל `claude_desktop_config.json`) יש להוסיף:

```json
{
  "mcpServers": {
    "israel-weather-forecast": {
      "command": "python",
      "args": ["/נתיב-מלא/israel-weather-mcp/server.py"]
    }
  }
}
```

לאחר שמירה יש להפעיל מחדש את ה-Host. ה-tools יופיעו ברשימת הכלים הזמינים,
וניתן יהיה לבקש למשל: *"מה התחזית להיום בחיפה?"* וה-Host יפעיל את ה-tools
בזה אחר זה כדי לענות.

## הערה חשובה על הסלקטורים (Selectors)

מבנה ה-HTML המדויק של אתר ims.gov.il (שמות ה-class/id של תיבת החיפוש,
פריטי ההשלמה האוטומטית ואזור התחזית) יכול להשתנות עם עדכוני האתר, ולכן
כל הסלקטורים מרוכזים במילון `SELECTORS` בראש `server.py`, עם כמה
אלטרנטיבות (fallback) לכל אלמנט. מומלץ:

1. להריץ עם `HEADLESS = False` בקובץ `server.py` (שורה ליד ההגדרות
   הכלליות) כדי לראות את הדפדפן בפועל.
2. לפתוח את אתר התחזית בדפדפן רגיל, ללחוץ קליק ימני → "בדוק" (Inspect)
   על תיבת החיפוש / רשימת ההשלמה / אזור התחזית, ולעדכן בהתאם את
   הרשימות במילון `SELECTORS`.

כך אפשר להתאים את השרת גם אם מחליטים להפנות אותו לאתר תחזית ישראלי אחר
(למשל אתר של גוף פרטי) במקום ims.gov.il - רק צריך לעדכן את `IMS_FORECAST_URL`
ואת `SELECTORS`.

## העלאה ל-GitHub

הפרויקט כבר מוכן כ-git repo מקומי (יש בו commit ראשוני). כדי להעלות אותו
ל-GitHub ולקבל קישור לשליחה למרצה/מורה:

1. כנסו ל-[github.com](https://github.com) ולחצו על **New repository**
   (בלי לסמן "Add README" / ".gitignore" / "license" - כבר יש לנו את אלה).
2. תנו שם, לדוגמה `israel-weather-mcp`, ולחצו **Create repository**.
3. בטרמינל, בתוך תיקיית הפרויקט (`israel-weather-mcp/`), הריצו:

   ```bash
   git remote add origin https://github.com/<שם-המשתמש-שלכם>/israel-weather-mcp.git
   git branch -M main
   git push -u origin main
   ```

4. לאחר ה-push, הקישור שתשלחו למרצה הוא כתובת ה-repository:
   `https://github.com/<שם-המשתמש-שלכם>/israel-weather-mcp`

אם עוד לא הגדרתם git בפעם הראשונה על המחשב, ייתכן שתצטרכו להריץ פעם אחת:

```bash
git config --global user.name "השם שלכם"
git config --global user.email "האימייל שלכם"
```

## הרצה ישירה לבדיקה (ללא Host)

ניתן גם להריץ בדיקה מהירה עם ה-MCP CLI:

```bash
mcp dev server.py
```

זה פותח ממשק בדיקה מקומי (MCP Inspector) שבו ניתן לקרוא ל-tools ישירות
ולראות את הפלט, בלי צורך בחיבור ל-Claude Desktop.