MCP Weather Assistant
MCP Wetter-Assistent
Ein interaktiver Wetter-Assistent, der mit dem Model Context Protocol (MCP) erstellt wurde. Der Host verbindet sich mit zwei lokalen MCP-Servern, veröffentlicht deren Tools an ein OpenRouter-kompatibles Sprachmodell und überlässt dem Modell die Entscheidung, wann Wetterinformationen abgerufen werden sollen.
Funktionen
Wettervorhersagen für Orte in den Vereinigten Staaten über die National Weather Service API.
Aktive Wetterwarnungen für einen Bundesstaat der USA.
Israelische Wettervorhersagen über die Website
weather2day.co.ilund einen sichtbaren Chromium-Browser, der von Playwright gesteuert wird.Eine interaktive Terminal-Chat-Oberfläche.
Mehrere MCP-Server, die über stdio verbunden sind.
Automatische Tool-Erkennung und Namensraumvergabe, um Kollisionen zwischen Servern zu vermeiden.
Related MCP server: MCP Weather Assistant
Projektstruktur
Datei | Zweck |
| Hauptanwendung. Verbindet sich mit MCP-Servern, ruft OpenRouter auf, leitet Tool-Aufrufe weiter und führt die Chat-Schleife aus. |
| Wiederverwendbarer MCP-stdio-Client-Wrapper. Startet einen Server mit dem aktuellen Python-Interpreter und listet dessen Tools auf. |
| MCP-Server, der auf der National Weather Service API basiert. |
| MCP-Server, der auf |
| Python-Projektmetadaten und deklarierte Abhängigkeiten. |
| Gesperrte Abhängigkeitsversionen für uv-basierte Umgebungen. |
| Lokale Umgebungsvariablen. Diese Datei wird von Git ignoriert. |
Anforderungen
Windows, macOS oder Linux.
Python 3.13 oder neuer.
Ein OpenRouter-API-Schlüssel.
Internetzugang zu OpenRouter,
api.weather.govundweather2day.co.il.Chromium, installiert über Playwright, für israelische Wetterabfragen.
Eine virtuelle Umgebung wird empfohlen.
Installation
Mit uv
Aus dem Projektverzeichnis:
uv sync
uv run playwright install chromiumDas Projekt importiert derzeit httpx direkt. Falls es nicht bereits in der gesperrten Umgebung vorhanden ist, installieren Sie es mit:
uv add httpxMit Standard-Python-Werkzeugen
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install anthropic mcp python-dotenv playwright openai google-genai httpx
python -m playwright install chromiumUnter macOS oder Linux aktivieren Sie die Umgebung mit:
source .venv/bin/activateDie deklarierten Abhängigkeiten enthalten mehrere Provider-SDKs, die derzeit nicht von host.py verwendet werden; sie bleiben Teil der Projektmetadaten für die Kompatibilität mit der Vorlage.
Konfiguration
Erstellen Sie eine .env-Datei im Projektstamm:
OPENROUTER_API_KEY=your_openrouter_api_keyhost.py lädt diese Datei mit python-dotenv und sendet den Schlüssel als Bearer-Token an OpenRouter. Committen Sie .env nicht und setzen Sie den Schlüssel nicht in Quellcodeverwaltung, Protokollen, Screenshots oder Fehlerberichten aus.
Das aktuelle Modell ist in host.py konfiguriert:
MODEL = "nvidia/nemotron-3-super-120b-a12b:free"Ändern Sie diese Konstante, wenn Sie ein anderes OpenRouter-Modell verwenden möchten, das Tool-Aufrufe unterstützt.
Ausführen des Assistenten
Mit uv:
uv run python host.pyMit einer aktivierten virtuellen Umgebung:
python host.pySie sollten eine Startmeldung sehen, gefolgt von einer Query:-Eingabeaufforderung. Geben Sie eine Frage ein und drücken Sie die Eingabetaste. Geben Sie quit ein, um die Anwendung zu beenden.
Beispielfragen:
What is the forecast for 34.05, -118.25?
Are there any active weather alerts in California?
What is the weather forecast in Tel Aviv?Der Host gibt Tool-Aufrufe aus, sobald sie auftreten, gefolgt von der endgültigen Antwort des Modells.
MCP-Server und Tools
USA-Server
weather_USA.py startet einen MCP-Server namens weather-USA und bietet:
get_alerts_in_USA(state)state: zweistelliger Staatscode wieCAoderNY.Verwendet den NWS-Endpunkt für aktive Warnungen.
get_forecast_in_USA(latitude, longitude)latitude: dezimale Breite.longitude: dezimale Länge.Löst den Ort über den NWS-Punkte-Endpunkt auf und gibt dann die ersten fünf Vorhersageperioden zurück.
Die NWS-API-Anfrage verwendet Accept: application/geo+json und einen benutzerdefinierten User-Agent.
Israel-Server
weather_Israel.py startet einen MCP-Server namens weather-Israel und bietet:
open_weather_forecast_israel()Öffnet einen nicht-headless Chromium-Browser und navigiert zur israelischen Vorhersage-Website.
enter_weather_forecast_city_israel(city)Gibt einen Stadtnamen ein und wartet auf Autovervollständigungsvorschläge.
select_weather_forecast_city_israel()Wählt den ersten Autovervollständigungsvorschlag aus und wartet auf die Vorhersageseite.
get_forecast_content_israel()Extrahiert sichtbaren Text von der geladenen Seite, bereinigt leere Zeilen und begrenzt das Ergebnis auf 4.000 Zeichen.
Die israelischen Tools sind zustandsbehaftet und müssen in der richtigen Reihenfolge aufgerufen werden. Der Browser muss geöffnet werden, bevor eine Stadt eingegeben wird, und eine Stadt muss ausgewählt werden, bevor die Vorhersage extrahiert wird.
Architektur
User terminal
|
v
host.py (ChatHost)
|-- OpenRouter chat-completions API
|
|-- client.py -> weather_USA.py -> api.weather.gov
|
`-- client.py -> weather_Israel.py -> Playwright -> weather2day.co.ilBeim Start erstellt ChatHost einen MCPClient für jeden Wetterserver. Jeder Client startet seinen Server als untergeordneten Prozess mit demselben Python-Interpreter wie der Host. Der Host erkennt alle MCP-Tools und stellt sie OpenRouter mithilfe von Funktionsaufruf-Schemas zur Verfügung.
Um doppelte Namen zu vermeiden, werden Tools dem Modell wie folgt präsentiert:
<server_script_name>__<tool_name>Beispielsweise wird das USA-Warnungstool als weather_USA__get_alerts_in_USA präsentiert. Wenn OpenRouter ein Tool anfordert, ordnet der Host diesen öffentlichen Namen dem zugehörigen MCP-Client und dem ursprünglichen Toolnamen zu, führt es aus und sendet das Ergebnis zurück in die Modellkonversation.
Ausführen eines einzelnen MCP-Servers
Jeder Server kann direkt für MCP-kompatible Clients oder für grundlegende Smoke-Tests gestartet werden:
python weather_USA.py
python weather_Israel.pyDiese Programme verwenden MCP-stdio-Transport, daher sind sie dafür gedacht, mit einem MCP-Client zu kommunizieren, anstatt eine normale Webseite oder eine Eingabeaufforderung anzuzeigen.
Fehlerbehebung
ModuleNotFoundError: No module named 'httpx'
Installieren Sie die fehlende Abhängigkeit:
uv add httpxoder:
python -m pip install httpxChromium startet nicht
Installieren Sie die Playwright-Browser-Binärdatei:
python -m playwright install chromiumDer israelische Server startet Chromium absichtlich mit headless=False, daher ist für diesen Anbieter eine Desktop-Sitzung erforderlich.
OpenRouter-Authentifizierung schlägt fehl
Überprüfen Sie, dass sich .env im selben Verzeichnis wie host.py befindet, dass die Variable genau OPENROUTER_API_KEY heißt und dass der Schlüssel aktiv ist. Starten Sie den Host neu, nachdem Sie die Datei geändert haben.
Keine Tools verfügbar
Bestätigen Sie, dass beide Server-Skripte im Projektstamm vorhanden sind und dass der Host aus diesem Verzeichnis gestartet wird. Der Host verwendet derzeit die relativen Pfade ./weather_USA.py und ./weather_Israel.py.
Eine Wetteranfrage schlägt fehl
Die Anwendung hängt von externen Diensten ab. Überprüfen Sie den Internetzugang, die NWS-Antwort für die angeforderten Koordinaten oder den Bundesstaat und ob sich die HTML-Selektoren der israelischen Website geändert haben.
Sicherheits- und Betriebshinweise
host.pyund der NWS-Client deaktivieren die TLS-Zertifikatsprüfung mitverify=False. Dies kann in der aktuellen Netzwerkumgebung erforderlich sein, reduziert jedoch die Transportsicherheit und sollte in der Produktion durch eine normale Zertifikatsprüfung ersetzt werden.OpenRouter erhält die Benutzerabfrage und die von den Wettertools zurückgegebenen Ergebnisse.
Der israelische Anbieter öffnet einen sichtbaren Browser und extrahiert den Text des Seitenkörpers. Änderungen am Website-Layout können die Selektoren brechen oder den extrahierten Inhalt verändern.
Die Anwendung hat keinen persistenten Gesprächsverlauf; jede Terminalabfrage startet eine neue Modellnachrichtenliste.
Fehler werden im Terminal ausgegeben und nicht an einen Protokollierungsdienst geschrieben.
Entwicklungshinweise
Die MCP-Server-Skripte stellen Tools über FastMCP-Dekoratoren bereit und verwenden asynchrone Funktionen für Netzwerk- und Browseroperationen. Halten Sie den stdio-Kanal für MCP-Protokollverkehr reserviert, wenn Sie einen Server ändern; Diagnoseausgaben sollten sorgfältig behandelt werden, damit sie die Protokollkommunikation nicht beschädigen.
Derzeit gibt es keine automatisierten Tests im Repository. Eine sinnvolle nächste Testebene wäre, die NWS-Antworten, OpenRouter-Tool-Aufrufantworten und Playwright-Seiteninteraktionen zu mocken, damit die Orchestrierung ohne Netzwerkzugriff oder Browser verifiziert werden kann.
Lizenz
Derzeit ist keine Lizenzdatei in diesem Repository enthalten.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables fetching weather forecasts for the USA via NWS API and for Israel via browser automation using Playwright.
- FlicenseAqualityCmaintenanceEnables users to query weather information for Israel via Playwright browser automation and for the USA via a weather API, allowing an LLM to access real-time weather data and alerts.4
- FlicenseNot gradedqualityCmaintenanceEnables natural language weather queries for Israeli cities with real-time data extracted via Playwright, plus USA weather alerts and forecasts via NWS API, all orchestrated by Groq LLM.
- -licenseNot gradedqualityCmaintenanceMCP server that enables LLMs to retrieve weather forecasts for Israeli cities by automating a browser with Playwright, and also provides US weather alerts and forecasts via NWS API.
Related MCP Connectors
US weather, alerts, earthquakes and elevation for AI agents, from NWS/NOAA and USGS. No API keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Get US weather forecasts, active alerts, and current observations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sara-simi-git/MCP_Weather_Agent-'
If you have feedback or need assistance with the MCP directory API, please join our Discord server