SMHI天气预报MCP服务器
MCP(模型上下文协议)服务器,为瑞典的日常规划提供SMHI(瑞典气象与水文研究所)的天气预报。
概述
该服务器将瑞典天气预报直接集成到您的AI助手工作流程中,提供斯德哥尔摩当地时间和人类可读天气描述的实时天气数据。
特性
- ✅ 结构化数据输出 -所有天气参数保存在类型化的Pydantic模型中
- ✅ 人类可读文本 -带表情符号指示器的格式标记
- ✅ 斯德哥尔摩当地时间 -CEST/CET中的所有时间戳(没有UTC混淆!)
- ✅ 天气符号含义 -所有27个SMHI天气符号的人类可读描述
- ✅ 无信息丢失 -每小时14个参数,包括天气符号含义
- ✅ 日间焦点 -默认情况下,仅显示清醒时间(08:00-23:59)以进行实际计划
- ✅ 可选夜间 -需要时包括夜间时间或使用“完整”细节级别
- ✅ 灵活的细节级别 -在摘要、详细或完整输出之间进行选择
- ✅ 基于天气状况的规划重点提示
安装
使用紫外线(推荐)
uv pip install fastmcp httpx pydantic loguru使用pip
pip install fastmcp httpx pydantic loguru配置
添加到您的MCP设置中(例如。, .cursor/mcp.json 光标):
{
"mcpServers": {
"smhi_weather": {
"command": "uv",
"args": ["run", "python", "path/to/smhi_weather_mcp/server.py"],
"enabled": true
}
}
}或者直接运行:
python server.py测试(开发)
uv sync --group dev
uv run pytest用法
服务器提供了一个工具: get_weather_forecast
参数
lat(浮动):纬度(55.0-70.0,默认值:斯德哥尔摩/Södermalm为59.32)lon(浮动):经度(10.0-25.0,默认值:斯德哥尔摩/Södermalm为18.04)forecast_hours(int):要预测的小时数(1-120,默认值:24)detail_level(str):格式化文本输出的详细级别
- "summary":只是总结统计数据和规划技巧 - "detailed":摘要+每3小时一次的日间小时数(默认值,08:00-23:59) - "full":总结+包括夜间在内的所有时间+额外细节
include_night(bool):在输出中包含夜间时间(00:00-07:59)(默认值:False)
示例查询
- “今天天气怎么样?我应该骑自行车上班吗?”
- “查看天气预报,规划我的一天”
- “今天下午我计划休息的时候会下雨吗?”
- “根据天气情况,我今天应该穿什么?”
输出示例
# 🌤️ Weather Forecast for Planning
**Current time:** 2025-10-05 09:15
**Location:** Lat 59.32, Lon 18.04
**Forecast updated:** 2025-10-05 08:00
**Showing:** Next 24 hours
## Today's Summary
- **Temperature range:** 8.5°C to 14.2°C
- **Precipitation:** Rain
- **Wind:** 4.2 m/s average, up to 6.8 m/s (gusts: 9.1 m/s)
## Detailed Forecast
**09:00** - 10.2°C, Rain (0.8 mm/h), Wind 4.5 m/s (gusts 7.2)
**12:00** - 12.8°C, Rain (1.2 mm/h), Wind 5.2 m/s (gusts 8.1)
**15:00** - 13.5°C, Drizzle, Wind 6.1 m/s
**18:00** - 11.0°C, Wind 4.8 m/s
## Planning Tips
- 🧥 Cold temperatures - bring warm layers
- ☔ Rain expected - bring umbrella, consider indoor activities数据结构
工具返回a WeatherForecast 对象具有:
- 结构化数据:完成每小时14个参数的每小时预测
- 汇总统计:最低/最高温度、风、降水类型
- 规划技巧:根据情况提供可采取行动的建议
- 格式化文本:人类可读的降价输出
每小时预测包括:
- 温度、风(速度/方向/阵风)
- 降水量(雪1主要类型0-12,平均量mm/h)
- 湿度、能见度、压力
- 云量、雷电概率
- 天气符号及其含义
天气符号
SMHI提供27个天气符号,自动解码为人类可读的描述:
| 符号 | 含义 |
|---|---|
| 1 | 晴朗的天空 |
| 2 | 近乎晴朗的天空 |
| 3 | 云量可变 |
| 4 | 半晴朗的天空 |
| 5 | 多云的天空 |
| 6 | 覆盖 |
| 7 | 雾 |
| 8-10 | 小雨/中雨/大雨 |
| 11 | 雷暴 |
| 12-14 | 轻度/中度/重度雨夹雪阵雨 |
| 15-17 | 小雪/中雪/大雪阵雨 |
| 18-20 | 小雨/中雨/大雨 |
| 21 | 雷声 |
| 22-24 | 轻度/中度/重度雨夹雪 |
| 25-27 | 小雪/中雪/大雪 |
API信息
- 许可证:知识共享署名4.0
- 速率限制:未为开放数据指定
- 文档: https://opendata.smhi.se/apidocs/
- 覆盖:瑞典(纬度:55-70°,经度:10-25°)
用例
🚴 通勤规划
- 检查是否预计会下雨或下雪
- 自行车骑行的风力条件
- 选择衣服的温度
🌳 休息计划
- 户外休息的最佳时间
- 何时避免外出
- 温度注意事项
📅 活动安排
- 如果预计天气恶劣,请重新安排户外会议
- 规划室内与室外任务
- 调整时间以获得更好的天气窗口
🧥 准备
- 今天穿什么
- 是否带雨伞
- 结冰条件下的额外通勤时间
日志记录
日志存储在 logs/smhi_weather_mcp.log 与:
- 1周轮换
- 保留1个月
- 信息级别及以上
故障排除
服务器未启动
- 检查是否安装了依赖项
- 检查登录
logs/smhi_weather_mcp.log - 验证目录是否正确
未返回数据
- 检查坐标是否在瑞典境内(纬度:55-70,经度:10-25)
- SMHI API可能暂时关闭
- 检查日志中的特定错误
天气似乎过时了
- SMHI每隔几个小时更新一次预测
- 检查“预测更新”时间戳
- 重新运行该工具以获取最新数据
学分
- 天气数据: SMHI - 瑞典气象和水文研究所
- 许可证:知识共享署名4.0国际
- 内置: FastMCP
许可证
MIT许可证
______________________________________________________________________
注: SMHI数据在CC-BY 4.0许可下使用,并具有适当的归属。
