๐ค๏ธ โ ืชืืืืช ืืื ืืืืืจ ืืืฉืจืื
ืคืจืืืงื ืืืืื ืืคืืชืื MCP (Model Context Protocol): ืกืืื (Agent) ืืืืกืก LLM ืฉืืืืข ืืฉืืืฃ ืชืืืืช ืืื ืืืืืจ ืืขืจืื ืืืฉืจืื ืืืืจื"ื, ืืืขื ืืช ืขืืื ืืฉืคื ืืืคืฉืืช ืืฆ'ืื ืฉืืืจืืื ื.
๐ฏ ืืืจืช ืืคืจืืืงื
ืืื ืืช ืฉืจืช MCP ืืืขืืื ืฉ"ืืืื" ืืช ื-LLM ืืืฆืข ืืฉืืื ืฉืืื ืื ืืืืข ืืื โ ืืฉืืืฃ ืชืืืืช ืืื ืืืืืจ ืืืชืจ ืืฉืจืืื ืฉืืื ืื API.
ืืกืืื ืขืืฉื ืืืช ืืฉืชื ืืจืืื:
- ืฉืจืช ืืฉืจืื (
weather-Israel) โ ืืืืื ืืคืืคื ืืืืชื ืขื Playwright: ืคืืชื ืืช weather2day.co.il/forecast, ืืืคืฉ ืขืืจ, ืืืืจ ืืืชื, ืืื ืืืืฅ ืืช ืชืืื ืืฃ ืืชืืืืช ืืืืื ืืืชื ื-LLM ืืื ืฉืืขื ื ืืขืฆืื (ืืืฉืช RAG). - ืฉืจืช ืืจื"ื (
weather-USA) โ ืฉืืืฃ ืชืืืืช ืืืชืจืขืืช ืืจื ื-API ืืจืฉืื ืฉื ื-NWS (National Weather Service).
ื-Host ืืืืจ ืืช ืื ืืฉืจืชืื ื-LLM (Gemini, ืืจื ื-API ืืชืืื-OpenAI), ืืืกืฃ ืืื ืืืืืืืืช ืืช ืื ื-Tools, ืืืจืืฅ ืืืืืช ืฆ'ืื ืฉืื ื-LLM ืืืืจ ืืืืื ืืื ืืืฉืชืืฉ ืืืคืขืื ืืืชื ืืื ืืืจ ืื ืขื ืฉืืชืงืืืช ืชืฉืืื.
๐๏ธ ืืื ื ืืคืจืืืงื
project-template/
โโโ host.py # ืฆ'ืื ืืืจืืื ื ืฉืืืืจ ืืช ื-LLM ืืื ืฉืจืชื ื-MCP
โโโ client.py # MCP Client ืื ืจื (ืืชืืืจ ืืฉืจืช, ืืจืืฅ Tools)
โโโ weather_USA.py # ืฉืจืช MCP ืืืจื"ื โ ืืจื NWS API
โโโ weather_Israel.py # ืฉืจืช MCP ืืืฉืจืื โ ืืจื ืืืืื ืืคืืคื (Playwright)
โโโ pyproject.toml # ืชืืืืืช ืืคืจืืืงื
โโโ README.md
ื-Tools ืฉื ืฉืจืช ืืฉืจืื
| # | Tool | ืชืคืงืื |
|---|---|---|
| 1 | open_weather_forecast_israel |
ืคืืชื ืืคืืคื Chromium ืืื ืืื ืืืชืจ ืืชืืืืช |
| 2 | enter_weather_forecast_city_israel |
ืืงืืื ืฉื ืขืืจ ืืฉืื ืืืืคืืฉ |
| 3 | select_weather_forecast_city_israel |
ืืืืจ ืืช ืืขืืจ ืืจืืฉืื ื ืืจืฉืืืช ืืืฆืขืืช |
| 4 | get_weather_forecast_content_israel |
ืืืืฅ ืืช ืชืืื ืืฃ ืืชืืืืช (ืืืื iframes) ืืืืืืจ ืืืชื ื-LLM |
๐ก ืฉืืืฉืช ืืจืืฉืื ืื ืืืืงืื ืืืชื ืืคืืคื ืืจื ืืฆื ืืืืืื (
_page), ืื ืืืื ืจืฆืื ืืืืชื ืชืืืื-ืฉืจืช. ืืจืืืขื ืขืืืจ ืขื ืื ื-frames ืืืฃ, ืื ืืชืืืืช ืขืฆืื ื ืืขื ืช ืืชืื<iframe>ืฉื-bodyืืจืืฉื ืื ืจืืื.
โ๏ธ ืืชืงื ื ืืืจืฆื
ืืจืืฉืืช ืืงืืืืืช
- Python โฅ 3.13
- uv (ืื ืื ืืกืืืื ืืืชืืืืืช)
- ืืคืชื API ื-Gemini (ืงืืืช ืืคืชื ืืื ืื)
ืฉืืืื
# 1. ืืชืงื ืช ืืชืืืืืช ืืืงืืช ืกืืืืช ืืขืืืื
uv sync
# 2. ืืชืงื ืช ืืคืืคื Chromium ืขืืืจ Playwright
uv run playwright install chromium
ืืืืจืช ืืฉืชื ื ืกืืืื
ืฆืจื ืงืืืฅ .env ืืชืืงืืืช ืืคืจืืืงื:
GEMINI_API_KEY=your_api_key_here
GEMINI_MODEL=gemini-2.0-flash
ืืจืฆื
uv run host.py
ืืืืจ ืืืคืขืื ืชืืคืืข ืฉืืจืช Query: โ ืืงืืืื ืฉืืื (ืื quit ืืืฆืืื).
๐ฌ ืืืืืืืช ืืฉืืืืช ืฉืืกืืื ืืืืข ืืขื ืืช ืขืืืื
ืชืืืืช ืืืฉืจืื (Playwright)
ื ืคืชื ืืืื ืืคืืคื ืฉืื ืจืืืื ืืช ืืฃ ืืชืืืืช, ืื-LLM ืื ืขืื ื ืืฆ'ืื.
- "ืื ืืชืืืืช ืืชื ืืืื?"
- "ืืื ืืขืืืช ืฆืคืืืืช ืืืจ ืืืจืืฉืืื?"
- "ืืื ืืื ืืืืืืจ ืืืืคื ืืืื?"
- "ืชืคืชืื ืื ืืช ืืชืืืืช ืืืืจ ืฉืืข"
ืชืืืืช ืืืชืจืขืืช ืืืจื"ื (NWS API)
- "What's the weather forecast for San Francisco?" (latitude/longitude)
- "Are there any weather alerts in California?"
- "Show me active weather alerts for NY"
๐งฉ ืืื ืื ืขืืื (ืชืจืฉืื ืืจืืื)
ืืฉืชืืฉ โ "ืื ืืชืืืืช ืืชื ืืืื?"
โ
โผ
Host โโโบ LLM (Gemini) ืืืืจ Tools ืืืคืขืื
โ
โผ (ืฉืจืช ืืฉืจืื, ืืื ืืืจ ืื)
open โ enter("ืชื ืืืื") โ select โ get_content
โ
โผ
ืชืืื ืืชืืืืช ืืืืจ ื-LLM (RAG)
โ
โผ
LLM ืืืชื ืชืฉืืื ืืฉืคื ืืืคืฉืืช ืืฆ'ืื โจ
๐ ืืขืจืืช
- ื-LLM ืืื ืื ืฉืืืืื ืืืื Tools ืืืคืขืื ืืืืืื ืกืืจ โ ืื ืืชืื ื ืืืืืงื ืงืฉืืื.
- ืฉื ื ืงืืฆื ืฉืจืช = ืฉื ื ืชืืืืืื ื ืคืจืืื, ืืืื ืื ืืฆื ืืฉืืชืฃ (ืืื ืืืคืืคื ืืคืชืื) ืื ืืชืื ืฉืจืช ืืื ืืืื.