这是一个基于FastAPI开发的天气查询API服务,同时支持MCP(Machine Callable Program)接口,可以被AI助手直接调用。
# 运行服务
uvicorn main:app --reload --evn-file .env
{
"mcpServers": {
"qweather-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer zishu.co"
}
}
}
}
- 支持通过城市名称查询天气信息
- 提供JWT令牌生成和验证
- 实现了MCP接口,可被AI助手直接调用
- 使用和风天气API作为数据源
- 支持Bearer Token认证
/
- API主页,提供接口概览/generate-jwt
- 生成JWT令牌/city/lookup
- 根据城市名称查询位置ID/weather/now
- 根据位置ID查询当前天气/weather/by-city
- 一站式查询城市天气(只需提供城市名)
本服务实现了MCP接口规范,可以被支持MCP的AI助手直接调用,目前开放的操作为:
get_weather_by_city
- 通过城市名称查询天气
Python 3.8+
pip install -r requirements.txt
uvicorn main:app --reload
服务将在 http://localhost:8000 启动,API文档可访问 http://localhost:8000/docs
docker build -t weather-mcp .
docker run -p 8000:8000 \
-e WEATHER_PRIVATE_KEY="你的私钥" \
-e WEATHER_PROJECT_ID="你的项目ID" \
-e WEATHER_KEY_ID="你的密钥ID" \
-e WEATHER_API_HOST="你的API主机地址" \
-e WEATHER_BEARER_TOKEN="你的Bearer令牌" \
weather-mcp
项目使用环境变量或.env文件进行配置。主要配置项包括:
WEATHER_PRIVATE_KEY
- EdDSA私钥,用于JWT签名WEATHER_PROJECT_ID
- 项目ID,用于JWT的subject声明WEATHER_KEY_ID
- 密钥ID,用于JWT的kid头部WEATHER_API_HOST
- 和风天气API主机地址
WEATHER_BEARER_TOKEN
- API访问令牌
HOST
- 服务器监听地址,默认为0.0.0.0PORT
- 服务器端口,默认为8000DEBUG
- 是否启用调试模式,默认为True
JWT_DEFAULT_EXPIRY
- JWT令牌默认过期时间(秒),默认为900(15分钟)
TOKEN_CACHE_ENABLED
- 是否启用令牌缓存,默认为True
- 创建
.env
文件(参考项目中的.env.example
) - 设置所需的环境变量
# 复制示例配置文件
cp .env.example .env
# 编辑配置文件
vim .env
curl -X POST "http://localhost:8000/weather/by-city" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer zishu.co" \
-d '{"city":"北京"}'
curl -X POST "http://localhost:8000/generate-jwt" \
-H "Content-Type: application/json" \
-d '{"expiry_seconds": 3600}'
API使用标准HTTP状态码表示请求结果:
- 200: 请求成功
- 401: 认证失败
- 404: 资源不存在(如找不到指定城市)
- 500: 服务器内部错误
MIT