天气预测服务

一个提供瑞典SMHI天气预测的MCP服务器,用于日常计划和AI助手工作流集成。

  • by Leopaexd
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Leopaexd/smhi-mcp

使用说明

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信息

  • 数据源:SMHI 雪1gv1 API气象预报(snow1g/version/1 点端点)。传统PMP3G v2已被弃用,取而代之的是SNOW1;看见 SMHI公告(2025-09-12) 和 SNOW1参数参考.
  • 许可证:知识共享署名4.0
  • 速率限制:未为开放数据指定
  • 文档: https://opendata.smhi.se/apidocs/
  • 覆盖:瑞典(纬度:55-70°,经度:10-25°)

用例

🚴 通勤规划

  • 检查是否预计会下雨或下雪
  • 自行车骑行的风力条件
  • 选择衣服的温度

🌳 休息计划

  • 户外休息的最佳时间
  • 何时避免外出
  • 温度注意事项

📅 活动安排

  • 如果预计天气恶劣,请重新安排户外会议
  • 规划室内与室外任务
  • 调整时间以获得更好的天气窗口

🧥 准备

  • 今天穿什么
  • 是否带雨伞
  • 结冰条件下的额外通勤时间

日志记录

日志存储在 logs/smhi_weather_mcp.log 与:

  • 1周轮换
  • 保留1个月
  • 信息级别及以上

故障排除

服务器未启动

  1. 检查是否安装了依赖项
  2. 检查登录 logs/smhi_weather_mcp.log
  3. 验证目录是否正确

未返回数据

  1. 检查坐标是否在瑞典境内(纬度:55-70,经度:10-25)
  2. SMHI API可能暂时关闭
  3. 检查日志中的特定错误

天气似乎过时了

  • SMHI每隔几个小时更新一次预测
  • 检查“预测更新”时间戳
  • 重新运行该工具以获取最新数据

学分

许可证

MIT许可证


注: SMHI数据在CC-BY 4.0许可下使用,并具有适当的归属。