Weather MCP Server
Wetter-MCP-Server
Ein Model Context Protocol-Server, der Echtzeit-Wetterdaten bereitstellt und mit AWS Cognito OAuth 2.1 Bearer-Token-Authentifizierung gesichert ist.
Implementiert die vollständige MCP-Autorisierungsspezifikation (25.11.2025):
RFC 9728 — Erkennung geschützter Ressourcen-Metadaten (PRM)
RFC 6750 — Verwendung von Bearer-Tokens
RFC 7591 — Dynamische Client-Registrierung (DCR), verbunden mit Cognito
Architektur
Client / AI Agent
│
├─ GET /.well-known/oauth-protected-resource → discover auth server
├─ POST /register → dynamic client registration (optional)
├─ POST Cognito /oauth2/token → exchange credentials for JWT
└─ POST /mcp Authorization: Bearer <token> → call MCP toolsWetterdaten werden von Open-Meteo bezogen — kostenlos, kein API-Schlüssel erforderlich.
Related MCP server: Python MCP Weather Server with OAuth 2.1 Authentication
Projektstruktur
weather-mcp/
├── weather_mcp/
│ ├── __init__.py
│ ├── config.py # Env var loading (COGNITO_REGION/USER_POOL_ID/DOMAIN_PREFIX, SERVER_URL)
│ ├── auth.py # JWT validation, middleware, PRM + DCR handlers
│ ├── tools.py # MCP instance + weather tools
│ └── main.py # Starlette app factory + uvicorn entrypoint
├── infra/
│ └── cognito.yaml # CloudFormation — Cognito User Pool, IAM role
├── docs/
│ └── deploy-ecs-express.md # ECS Express Mode deployment guide
├── pyproject.toml
├── Dockerfile
├── .env.example
└── README.mdVoraussetzungen
Python 3.13+ und uv
AWS-Konto mit konfiguriertem CLI (
aws configure)Docker (optional, für containerisierte Bereitstellung)
Schnellstart
1 — AWS Cognito bereitstellen
aws cloudformation deploy \
--template-file infra/cognito.yaml \
--stack-name weather-mcp \
--region us-east-1 \
--capabilities CAPABILITY_NAMED_IAMDie Ausgabewerte abrufen:
aws cloudformation describe-stacks \
--stack-name weather-mcp \
--query "Stacks[0].Outputs" \
--output table2 — Umgebung konfigurieren
cp .env.example .env
# Fill in COGNITO_REGION, COGNITO_USER_POOL_ID, COGNITO_DOMAIN_PREFIX from CloudFormation Outputs3 — Ausführen
Lokal:
uv sync
uv run python -m weather_mcp.mainDocker:
docker build -t weather-mcp:local .
docker run --env-file .env -p 8000:8000 weather-mcp:localDer Server startet unter http://0.0.0.0:8000.
Bereitstellung im AWS ECS Express-Modus:
Siehe docs/deploy-ecs-express.md für die vollständige Anleitung — erstellt das Image, pusht es zu ECR und erstellt einen öffentlichen HTTPS-Dienst mit Auto-Scaling.
API-Endpunkte
Endpunkt | Authentifizierung | Beschreibung |
| Keine | Gesundheitsprüfung |
| Keine | RFC 9728 Discovery-Dokument |
| Keine | RFC 7591 Dynamische Client-Registrierung |
| Bearer-Token | MCP-Tools (streambares HTTP) |
MCP-Tools
Tool | Beschreibung |
| Aktuelles Wetter für jeden Standort nach Breitengrad/Längengrad |
Verwendung
Dynamische Client-Registrierung (keine Vorkonfiguration erforderlich)
# 1. Register a new client
curl -s -X POST http://localhost:8000/register \
-H "Content-Type: application/json" \
-d '{"client_name":"my-agent","grant_types":["client_credentials"],"scope":"weather-mcp/read"}'
# 2. Get a token
curl -s -X POST https://weather-mcp-auth.auth.us-east-1.amazoncognito.com/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>&scope=weather-mcp/read"
# 3. Call MCP
curl -s -X POST http://localhost:8000/mcp \
-H "Authorization: Bearer <TOKEN>" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Umgebungsvariablen
Variable | Beschreibung |
| AWS-Region (z. B. |
| Cognito User Pool ID |
| Hosted-UI-Domain-Präfix |
| Öffentliche URL dieses Servers (Standard: |
Funktionsweise der Authentifizierung
Eine Anfrage trifft ohne Token bei
/mcpein → der Server antwortet mit401und einemWWW-Authenticate-Header, der auf/.well-known/oauth-protected-resourceverweist.Der Client ruft das Discovery-Dokument ab, um den Cognito-Autorisierungsserver zu finden.
Der Client erhält ein JWT-Zugriffstoken von Cognito (via
client_credentialsoder dynamischer Client-Registrierung).Der Client fügt bei nachfolgenden Anfragen
Authorization: Bearer <token>hinzu.Die Middleware validiert die JWT-Signatur gegen den JWKS-Endpunkt von Cognito (RS256, 1 Stunde zwischengespeichert).
Hinweise
Der MCP-Server bindet an
0.0.0.0:8000mit deaktiviertem DNS-Rebinding-Schutz (host="0.0.0.0"). Dies ist erforderlich, wenn der Betrieb hinter einem Load Balancer (z. B. ECS Express Mode ALB) erfolgt, bei dem derHost-Header die öffentliche Domain und nichtlocalhostist.Bei der Bereitstellung im ECS Express-Modus ist das Image per Digest fixiert — siehe die Bereitstellungsanleitung für Informationen zur Aktualisierung.
This server cannot be deployed
Maintenance
Related MCP Connectors
NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Weather MCP — wraps Open-Meteo API (free, no auth)
Open-Meteo MCP — weather forecast + historical reanalysis + sister APIs
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables real-time weather data streaming through a secure MCP server. Features authentication using Descope and can be deployed to Fly.io for remote access.4 npm-
- FlicenseNot gradedqualityDmaintenanceProvides weather information from the National Weather Service API with full MCP OAuth 2.1 compliance, including weather alerts and forecasts for US locations through secure Azure AD authentication.28-
- AlicenseNot gradedqualityDmaintenanceDemonstrates how to secure an MCP server with OAuth 2.1 using AWS Cognito, with support for dynamic client registration and client ID metadata documents.68MIT
- FlicenseNot gradedqualityDmaintenanceEnables MCP clients like Kiro and Claude to access current weather conditions and forecasts for any location using the OpenWeatherMap API.-