ShaySarussiElshten/weather-mcp-server
If you are the rightful owner of weather-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Weather MCP Server provides weather information using the OpenWeather API, featuring tools for current weather and 5-day forecasts.
📘 Weather MCP Server — הסבר מלא בעברית (כולל @mcp.tool)
שרת MCP המספק מידע על מזג אוויר באמצעות OpenWeather API. הקוד כולל שני כלים (tools):
🔹 כלי למזג אוויר נוכחי
🔹 כלי לתחזית ל־5 ימים
להלן הסבר מלא על כל חלק במערכת.
🔧 1. ייבוא ספריות from fastmcp import FastMCP import httpx import logging import sys from typing import Optional
מה כל אחד עושה?
FastMCP – הספרייה שמאפשרת לבנות MCP server בקלות.
httpx – ספרייה אסינכרונית לקריאות API.
logging – הדפסת אירועים/שגיאות לקונסול.
sys – מאפשר לכתוב ללוג אל stderr (נדרש ב־MCP).
Optional – מאפשר פרמטרים אופציונליים בפונקציות.
🔧 2. הגדרת לוגים logging.basicConfig(...) logger = logging.getLogger("weather-mcp-server")
למה זה חשוב?
ב־MCP:
🛠️ stdout → תקשורת עם ה־Client
🧾 stderr → לוגים
לכן חובה להדפיס לוגים ל־stderr.
▶️ 3. יצירת שרת MCP mcp = FastMCP("Weather MCP Server")
השרת הזה הוא “ניהול העל” של המערכת:
אילו כלים זמינים
איך לקוח כמו ChatGPT יוכל לקרוא להם
איך התקשורת תעבוד
🌐 4. כתובת בסיס של OpenWeatherMap WEATHER_API_BASE = "https://api.openweathermap.org/data/2.5"
ככה לא צריך לכתוב את הכתובת שוב ושוב.
🌀 5. @mcp.tool() — החלק החשוב ביותר ❗ מה זה @mcp.tool()?
דקורטור של FastMCP שמצהיר:
"הפונקציה הזו היא כלי (Tool) שהשרת מפרסם החוצה, ו־ChatGPT יכול לקרוא לה."
כלומר: הופך את הפונקציה ל־API חיצוני של השרת.
📡 למה זה כל כך חשוב?
ללא @mcp.tool():
הפונקציה קיימת רק בתוך הקוד
ChatGPT לא יראה אותה
היא לא מופיעה ב־tools.json
היא לא חלק מה־manifest
עם @mcp.tool():
הפונקציה מקבלת שם רשמי
FastMCP בונה לה JSON Schema אוטומטי
היא הופכת ל־MCP Endpoint
ו־ChatGPT מבין איך להשתמש בה
🧪 דוגמה לאיך ChatGPT רואה את הכלי: { "name": "get_weather", "input_schema": { "type": "object", "properties": { "city": {"type": "string"}, "country_code": {"type": "string"}, "units": {"type": "string"} } } }
הסקמה נבנה אוטומטית מתוך ה־type hints של הפונקציה.
🌤️ 6. Tool ראשון: get_weather @mcp.tool() async def get_weather(...):
מה הפונקציה עושה?
בונה שם עיר + קוד מדינה (אם יש)
קוראת את משתנה הסביבה של ה־API
מבצעת בקשת GET ל־OpenWeather
בודקת שגיאות
מחזירה טקסט יפה ומעוצב
סיכום הלוגיקה:
בניית location
קריאת OPENWEATHER_API_KEY
קריאה ל־/weather
בדיקת תגובה
החזרת תוצאה מעוצבת
📅 7. Tool שני: get_forecast
אותה לוגיקה כמו get_weather, רק:
מבצע קריאה ל־/forecast
מקבץ תחזיות לפי ימים
תומך ב־1–5 ימים
8 נקודות תחזית ליום
▶️ 8. main — הפעלת השרת if name == "main": mcp.run()
מה זה עושה?
מפעיל את MCP server
מאפשר ל־ChatGPT להתחבר דרך stdio transport
(או socket — אם היית בוחר בכך)
🧠 סיכום גדול — מבט על כל המערכת חלק תפקיד FastMCP יצירת שרת MCP וניהול כלים @mcp.tool() פרסום פונקציה ככלי שזמין ללקוחות httpx ביצוע קריאות API אסינכרוניות stderr logging חובה במערכות MCP get_weather אחזור מזג אוויר נוכחי get_forecast תחזית ל־5 ימים קדימה mcp.run() הפעלת השרת