Skip to main content
Glama
sauravkumar329

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 — 桥接到 Cognito 的动态客户端注册 (DCR)


架构

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

  • 配置了 CLI 的 AWS 账户 (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 table

2 — 配置环境变量

cp .env.example .env
# Fill in COGNITO_REGION, COGNITO_USER_POOL_ID, COGNITO_DOMAIN_PREFIX from CloudFormation Outputs

3 — 运行

本地运行:

uv sync
uv run python -m weather_mcp.main

Docker 运行:

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 模式:

请参阅 docs/deploy-ecs-express.md 获取完整指南 — 该指南涵盖构建镜像、推送到 ECR 以及创建带有自动扩缩容的公共 HTTPS 服务。


API 端点

端点

身份验证

描述

GET /health

健康检查

GET /.well-known/oauth-protected-resource

RFC 9728 发现文档

POST /register

RFC 7591 动态客户端注册

POST /mcp

Bearer 令牌

MCP 工具 (流式 HTTP)


MCP 工具

工具

描述

get_current_weather

通过经纬度获取任何位置的当前天气


使用方法

动态客户端注册(无需预先配置)

# 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}'

环境变量

变量

描述

COGNITO_REGION

AWS 区域 (例如 us-east-1)

COGNITO_USER_POOL_ID

Cognito 用户池 ID

COGNITO_DOMAIN_PREFIX

托管 UI 域名后缀

SERVER_URL

此服务器的公共 URL (默认: http://localhost:8000)


身份验证工作原理

  1. 请求在没有令牌的情况下到达 /mcp → 服务器响应 401 并返回指向 /.well-known/oauth-protected-resourceWWW-Authenticate 标头

  2. 客户端获取发现文档以找到 Cognito 授权服务器

  3. 客户端从 Cognito 获取 JWT 访问令牌(通过 client_credentials 或动态客户端注册)

  4. 客户端在后续请求中包含 Authorization: Bearer <token>

  5. 中间件根据 Cognito 的 JWKS 端点验证 JWT 签名 (RS256,缓存 1 小时)


注意事项

  • MCP 服务器绑定到 0.0.0.0:8000,并禁用了 DNS 重绑定保护 (host="0.0.0.0")。当在负载均衡器(例如 ECS Express 模式 ALB)后运行且 Host 标头为公共域名而非 localhost 时,这是必需的。

  • 部署到 ECS Express 模式时,镜像通过摘要 (digest) 锁定 — 请参阅 部署指南 了解如何更新它。


F
license - not found
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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)

View all MCP Connectors

Latest Blog Posts

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