Weather MCP Server
MCP-сервер погоды
Сервер Model Context Protocol, предоставляющий данные о погоде в реальном времени, защищенный аутентификацией по токену AWS Cognito OAuth 2.1 Bearer.
Реализует полную спецификацию авторизации MCP (2025-11-25):
RFC 9728 — Обнаружение метаданных защищенных ресурсов (PRM)
RFC 6750 — Использование токенов Bearer
RFC 7591 — Динамическая регистрация клиентов (DCR), связанная с Cognito
Архитектура
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 toolsДанные о погоде поступают из Open-Meteo — бесплатно, ключ API не требуется.
Related MCP server: MCP Authentication Example
Структура проекта
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.mdПредварительные требования
Python 3.13+ и uv
Учетная запись AWS с настроенным CLI (
aws configure)Docker (опционально, для контейнеризированного развертывания)
Быстрый старт
1 — Развертывание AWS Cognito
aws cloudformation deploy \
--template-file infra/cognito.yaml \
--stack-name weather-mcp \
--region us-east-1 \
--capabilities CAPABILITY_NAMED_IAMПолучите выходные значения:
aws cloudformation describe-stacks \
--stack-name weather-mcp \
--query "Stacks[0].Outputs" \
--output table2 — Настройка окружения
cp .env.example .env
# Fill in COGNITO_REGION, COGNITO_USER_POOL_ID, COGNITO_DOMAIN_PREFIX from CloudFormation Outputs3 — Запуск
Локально:
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:localСервер запускается по адресу http://0.0.0.0:8000.
Развертывание в AWS ECS Express Mode:
Полное руководство см. в docs/deploy-ecs-express.md — оно описывает сборку образа, отправку в ECR и создание публичного HTTPS-сервиса с автоматическим масштабированием.
API-эндпоинты
Эндпоинт | Аутентификация | Описание |
| Нет | Проверка работоспособности |
| Нет | Документ обнаружения RFC 9728 |
| Нет | Динамическая регистрация клиентов RFC 7591 |
| Bearer token | Инструменты MCP (потоковый HTTP) |
Инструменты MCP
Инструмент | Описание |
| Текущая погода для любого местоположения по широте/долготе |
Использование
Динамическая регистрация клиентов (без предварительной настройки)
# 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}'Переменные окружения
Переменная | Описание |
| Регион AWS (например, |
| ID пула пользователей Cognito |
| Префикс домена Hosted-UI |
| Публичный URL этого сервера (по умолчанию: |
Как работает аутентификация
Запрос поступает на
/mcpбез токена → сервер отвечает401и заголовкомWWW-Authenticate, указывающим на/.well-known/oauth-protected-resourceКлиент получает документ обнаружения, чтобы найти сервер авторизации Cognito
Клиент получает токен доступа JWT от Cognito (через
client_credentialsили динамическую регистрацию клиентов)Клиент включает
Authorization: Bearer <token>в последующие запросыПромежуточное ПО проверяет подпись JWT по эндпоинту JWKS в Cognito (RS256, кэшируется на 1 час)
Примечания
MCP-сервер привязывается к
0.0.0.0:8000с отключенной защитой от DNS-ребиндинга (host="0.0.0.0"). Это необходимо при работе за балансировщиком нагрузки (например, ECS Express Mode ALB), где заголовокHostявляется публичным доменом, а неlocalhost.При развертывании в ECS Express Mode образ закрепляется по дайджесту — см. руководство по развертыванию для получения информации о том, как его обновить.
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
- -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.21
- FlicenseNot gradedqualityDmaintenanceDemonstrates OAuth2/OIDC authentication for MCP servers using Asgardeo, with JWT validation and a sample weather tool to showcase secured API access.
- 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.27
- AlicenseNot gradedqualityCmaintenanceDemonstrates 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
Related MCP Connectors
NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.
Open-Meteo MCP — weather forecast + historical reanalysis + sister APIs
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
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/sauravkumar329/weather-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server