weather-alert-mcp-v2
weather-alert-mcp v2 – ein MCP-Tool, zwei Implementierungen
Ein MCP (Model Context Protocol)-Server, der Live-Warnungen des U.S. National Weather Service als aufrufbares Tool bereitstellt, sodass jeder MCP-Client – Claude Desktop, Claude Code oder ein SDK-Client – aktive Wetterwarnungen nach Bundesstaat abfragen kann.
Zweimal implementiert: einmal in Python, einmal in TypeScript, gegen denselben Tool-Vertrag. Ein Client kann nicht erkennen, mit welchem er spricht. Das ist der Sinn davon, gegen ein Protokoll statt gegen eine API zu entwickeln, und die beiden Implementierungen zeigen die interessanten Teile von MCP.
v1 (nur Python) befindet sich unter weather-alert-mcp und bleibt unverändert. Dieses Repo ist die Fortsetzung.
Das Tool
Tool | Argument | Rückgabe |
|
| Bis zu 5 aktive Warnungen: Ereignis, Schweregrad, betroffenes Gebiet, Überschrift |
Datenquelle: https://api.weather.gov/alerts/active – öffentlich, kein API-Schlüssel, keine Anmeldung.
Derselbe Vertrag, auf zwei Arten abgeleitet
Python ( | TypeScript ( | |
Schema-Quelle | aus Typannotationen generiert | aus einem |
Argumentvalidierung | vertraut auf die Schema-Konformität des Clients | validiert an der Grenze, lehnt vor jedem HTTP-Aufruf ab |
Transport | stdio | stdio |
Offline-Modus |
|
|
Tool-Vertrag |
|
|
Beide leiten das JSON-Schema, das der Client sieht, aus der Implementierung ab, anstatt es separat zu pflegen, sodass der Vertrag nicht vom Code abweichen kann.
Der TypeScript-Server validiert zusätzlich an der Protokollgrenze. {"state": "Illinois"} wird als Fehler auf Protokollebene zurückgegeben, bevor eine Netzwerkanfrage gestellt wird, sodass ein fehlerhafter Tool-Aufruf nichts kostet:
MCP error -32602: Input validation error: Invalid arguments for tool get_alertsPython
pip install -r requirements.txt
python server.py # speaks MCP over stdio; a client launches thisÜberprüfen – test_client.py ist ein echter MCP-Client: Er startet den Server als Unterprozess, führt den initialize-Handshake durch, listet die beworbenen Tools auf und ruft eines auf.
python test_client.py # live
WX_MOCK=1 python test_client.py # protocol only, no networkTOOLS: ['get_alerts']
DESC: Get active National Weather Service alerts for a US state.
SCHEMA: {'properties': {'state': {'title': 'State', 'type': 'string'}}, 'required': ['state'], ...}
RESULT for IL:
Severe Thunderstorm Warning (Severe) — Lake County, IL
Severe Thunderstorm Warning issued for Lake County until 7:15 PM CDTTypeScript
cd ts
npm install
npm run build
node build/index.js # speaks MCP over stdioÜberprüfen – ts/test-client.mjs führt denselben Roundtrip durch und stellt zusätzlich sicher, dass ein fehlerhaftes Argument abgelehnt wird:
cd ts
WX_MOCK=1 node test-client.mjs # protocol only, no network
node test-client.mjs TX # live NWS dataTOOLS: [ 'get_alerts' ]
SCHEMA: {"type":"object","properties":{"state":{"type":"string","minLength":2,"maxLength":2,
"pattern":"^[A-Za-z]{2}$","description":"Two-letter US state code, e.g. \"IL\" or \"CA\""}},
"required":["state"],"additionalProperties":false}
RESULT:
Severe Thunderstorm Warning (Severe) — Lake County, IL
Severe Thunderstorm Warning issued for Lake County until 7:15 PM CDT
VALIDATION: rejected bad input as expected — MCP error -32602: Input validation errorSiehe ts/README.md für Details zur TypeScript-Implementierung.
Verwendung mit Claude Desktop
Fügen Sie eines (oder beide) zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"weather-alerts": {
"command": "python",
"args": ["/absolute/path/to/server.py"]
},
"weather-alerts-ts": {
"command": "node",
"args": ["/absolute/path/to/ts/build/index.js"]
}
}
}Beide registrieren denselben Tool-Namen, also führen Sie jeweils nur eines aus, es sei denn, Sie möchten sie vergleichen.
Hinweise
stdoutist der Protokollkanal. Alles, was dort geschrieben wird, beschädigt den JSON-RPC-Stream, weshalb Startprotokollierung nachstderrgeht.Fehler werden sichtbar gemacht, nicht verschluckt. Ein Fehler der vorgelagerten API wird an den Client weitergegeben, anstatt „keine Warnungen“ zurückzugeben, was von einem wirklich ruhigen Zustand nicht zu unterscheiden wäre.
WX_MOCK=1führt den vollständigen Pfad ohne Netzwerkaufruf aus – nützlich in CI und um bei einem Fehler einen Protokollfehler von einem vorgelagerten API-Fehler zu unterscheiden.Warnungen werden auf die ersten 5 Features gekürzt, um die Tool-Ausgabe innerhalb eines angemessenen Kontextbudgets zu halten.
Bekannte Einschränkungen
Ein schreibgeschütztes Tool. Keine Ressourcen, keine Prompts, kein Sampling – die Teile von MCP jenseits der Tool-Registrierung werden hier nicht genutzt.
Nur stdio-Transport; kein HTTP/SSE-Transport.
Der NWS-Endpunkt erfordert einen
User-Agent; er wird in beiden Implementierungen auf eine Kontaktzeichenfolge gesetzt, gemäß der angegebenen Richtlinie der API.
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 Connectors
Get US weather forecasts, active alerts, and current observations.
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.
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/rainygold25/weather-alert-mcp-v2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server