weather-mcp-server

ShaySarussiElshten/weather-mcp-server

3.1

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.

Tools
2
Resources
0
Prompts
0

📘 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() הפעלת השרת