mcpField
🌦
🌦️ Weekly Weather MCP Server

🌦️ Weekly Weather MCP Server

本地服务
github.com/rossshannon媒体与设计1041 周前更新

关于 🌦️ Weekly Weather MCP Server

这是一个基于 OpenWeatherMap One Call API 3.0 的全球天气 MCP 服务,面向需要在对话中查询天气和规划活动的用户。它提供当前天气、48 小时逐小时预报及含早午晚数据的 8 天预报。

主要功能

  1. 01全球地点天气查询
  2. 02未来 48 小时逐小时预报
  3. 03含早午晚数据的 8 天预报
  4. 04降水概率与天气摘要
  5. 05按时区返回结果

适用场景

  1. 01查询某地当前天气
  2. 02比较本周适合跑步的日期
  3. 03根据降雨安排园艺或浇水
  4. 04寻找适合户外活动的时段

MCP 相关

向 MCP 客户端提供 `get_weather` 和 `get_current_weather` 两个工具,分别返回天气预报和当前天气。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🌦️ 每周天气 MCP 服务

一款天气预报 MCP(Model Context Protocol)服务,使用 OpenWeatherMap One Call API 3.0 提供全球 8 天天气预报和当前天气状况。

本项目基于 Zippland 的早期项目开发,并进行了修改,以支持完整的一周预报和更多时段的数据点。

Claude 调用 MCP 服务

动画展示了 Claude Desktop 如何处理 MCP 服务提供的天气数据


Claude 显示天气预报

Claude Desktop 展示详细天气预报和割草建议

功能

  • 🌍 支持查询全球任意地点的天气状况
  • 🌤️ 提供未来 48 小时的逐小时预报
  • 📅 提供详细的 8 天预报(今天 + 接下来 7 天),包含早晨、下午和晚间的数据点
  • 🌧️ 提供天气摘要和降水概率
  • 🌡️ 提供详细天气信息,包括温度、湿度、风速等
  • 📍 支持以不同时区报告结果
  • 🗂️ 无需单独的配置文件;可通过环境变量或参数直接传入 API 密钥

使用方法

1. 获取具有 One Call API 3.0 访问权限的 OpenWeatherMap API 密钥(免费)
  1. 访问 OpenWeatherMap 并注册账号
  2. 订阅 “One Call API 3.0” 套餐(每天免费提供 1,000 次 API 调用)
  3. 等待 API 密钥激活(最长可能需要 1 小时)
关于 One Call API 3.0

One Call API 3.0 提供全面的天气数据:

  • 当前天气状况
  • 未来 1 小时的分钟级预报
  • 未来 48 小时的逐小时预报
  • 未来 8 天的每日预报(包括今天)
  • 国家级天气预警
  • 历史天气数据
API 使用量和限制
  • 免费套餐:每天 1,000 次 API 调用
  • 默认限制:每天 2,000 次 API 调用(可在账号中调整)
  • 计费:超出每天免费 1,000 次的调用将按照 OpenWeatherMap 的定价收费
  • 使用量上限:可在账号中设置调用次数上限,以防超出预算(也可以将使用量限制为免费套餐的上限,确保不会产生费用)
  • 达到上限后,你会收到 HTTP 429 错误响应

注意:API 密钥激活可能需要几分钟到 1 小时。如果你在订阅或生成新密钥后不久收到身份验证错误,请稍等片刻,然后重试。

2. 克隆代码仓库并安装依赖项
# Clone the repository
git clone https://github.com/rossshannon/weekly-weather-mcp.git
cd weekly-weather-mcp

# Create a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# OR
venv\Scripts\activate  # Windows

# Install dependencies
pip3 install -r requirements.txt

这将安装运行服务和开发工具所需的全部依赖项。

3. 运行服务

提供 API 密钥有两种方式:

方法 1:使用环境变量
# Set environment variables
export OPENWEATHER_API_KEY="your_api_key"  # Linux/Mac
set OPENWEATHER_API_KEY=your_api_key  # Windows

# Run the server
python weather_mcp_server.py
方法 2:调用工具时提供

无需设置环境变量,直接运行:

python weather_mcp_server.py

调用工具时,需要提供 api_key 参数。

4. 在 MCP 客户端配置中使用

将以下配置添加到支持 MCP 的客户端中(例如 Claude Desktop(说明)、Cursor):

{
  "weather_forecast": {
    "command": "python3",
    "args": [
      "/full_path/weather_mcp_server.py"
    ],
    "env": {
      "OPENWEATHER_API_KEY": "your_openweathermap_key_here"
    },
    "disabled": false,
    "autoApprove": ["get_weather", "get_current_weather"]
  }
}

如果使用虚拟环境,配置中应包含虚拟环境内 Python 可执行文件的完整路径:

{
  "weather_forecast": {
    "command": "/full_path/venv/bin/python3",
    "args": [
      "/full_path/weather_mcp_server.py"
    ],
    "env": {
      "OPENWEATHER_API_KEY": "your_openweathermap_key_here"
    },
    "disabled": false,
    "autoApprove": ["get_weather", "get_current_weather"]
  }
}
5. 可用工具

该服务提供两个工具:get_weather 和 get_current_weather。这两个工具接受相同的参数:

  • location:地点名称字符串,例如“Beijing”“New York”“Tokyo”。工具会将其地理编码为经纬度坐标。
  • api_key:OpenWeatherMap API 密钥(可选;如果未提供,则从环境变量中读取)
  • timezone_offset:时区偏移量(小时),例如 Beijing 为 8,New York 为 -4。默认值为 0(UTC 时间)。返回数据中的时间将按此时区准确显示。
get_weather

获取某个地点的综合天气数据,包括当前天气(未来 48 小时)和 8 天预报,并提供详细信息。

返回:

  • 当前天气信息
  • 未来 48 小时的逐小时预报
  • 未来 8 天的逐日预报(今天及之后 7 天)
  • 每天早上(9 AM)、下午(3 PM)和晚上(8 PM)的数据点
  • 天气摘要和降水概率
  • 详细天气信息,包括温度、湿度、风速等

适用于以下场景:

  • “🏃‍♂️ 这周哪几天适合去跑步?”
  • “🪴 这周哪个晚上最适合在花园里干活?”
  • “🪁 接下来哪天风最大,适合放风筝?”
  • “💧 这周我需要给花园浇水吗,还是会下雨?”
get_current_weather

获取指定地点的当前天气。

返回:

  • get_weather 返回数据的精简子集
  • 仅包含当前天气信息(温度、体感温度、天气状况、湿度、风况等);不包含未来时段的预报数据
  • 适用于仅需快速查询当前天气状况的场景
地点查询详情

location 参数使用 OpenWeatherMap 的地理编码功能,将地点名称转换为地理坐标:

  • 可使用简单的地点名称:“Paris”“Tokyo”“New York”
  • 为提高准确性,可添加国家代码:“Paris,FR”“London,GB”“Portland,US”
  • 对于美国城市,可添加州名缩写:“Portland,OR,US”或“Portland,ME,US”
  • 该 API 支持 OpenWeatherMap 可进行地理编码的地球上任何地点
  • 地点名称会在内部转换为经纬度坐标

如果找不到地点,API 将返回错误。如果地点存在歧义,请尝试添加国家或州代码,以获得更准确的结果。

使用示例

示例 1:当前天气
User: What’s the weather like in New York right now?

AI: Let me check the current weather in New York for you.
[Calling get_current_weather("New York", timezone_offset=-4)]

Current weather in New York: 5°C, few clouds, humidity 42%, wind speed 4.1m/s.
示例 2:每周计划
User: I need to mow my lawn this week in Boston. Which day would be best?

AI: Let me check the weather forecast for Boston to find the best day for lawn mowing.
[Calling get_weather("Boston", timezone_offset=-4)]

Looking at the Boston forecast for the week:
- Today (Monday): Light rain (28% chance), 5°C
- Tuesday: Clear, sunny, 10°C
- Wednesday: Light rain (100% chance), 9°C
- Thursday: Moderate rain (100% chance), 10°C
- Friday: Moderate rain (100% chance), 11°C
- Saturday: Partly cloudy, 13°C
- Sunday: Scattered clouds, 17°C

Tuesday would be your best option for mowing the lawn. It will be clear and sunny with no chance of rain, and the temperature will be comfortable at around 10°C.

你可以将此 MCP 服务与其他服务结合使用,以实现多步骤工作流。例如,查询天气后,还可以让 Claude 将其添加为日历事件,以提醒自己相关计划。

Claude 创建的日历事件

Claude 根据天气预报创建的日历事件

故障排除

API 密钥问题

如果遇到“Invalid API key”或授权错误:

  1. 请确保已订阅“One Call API 3.0”套餐。你需要使用借记卡或信用卡启用账户,但只有超出免费额度时才会收费。
  2. 请记住,API 密钥激活最长可能需要一小时
  3. 请确认已在环境变量中正确设置 OPENWEATHER_API_KEY,或者检查调用工具时提供的 api_key 参数是否正确
其他常见问题
  • “Location not found” 错误:

    • 检查地点名称是否有拼写错误
    • OpenWeatherMap 数据库中可能没有某些非常小或偏远的地点
  • 返回的地点不正确:

    • 尝试使用更准确的城市名称,或添加国家代码,例如 “Beijing,CN” 或 “Porto,PT”
    • 对于名称常见的美国城市,请注明州名:“Springfield,IL,US” 或 “Portland,OR,US”
    • 对于不同国家中名称相同的城市,请务必添加国家代码,并在适用时注明州名:“Paris,FR” 表示法国巴黎,“Paris,TX,US” 表示美国得克萨斯州巴黎。
  • 速率限制(429 错误):您已超出 API 调用限制。请检查您的 OpenWeatherMap 账户设置。

开发与测试

测试

本项目包含单元测试、集成测试和模拟客户端测试文件,用于验证 MCP 服务的功能。我们已手动测试该服务,确保它能与 Claude Desktop、Cursor 和其他 MCP 客户端正常配合使用。

手动测试客户端

在 Claude Desktop 或其他 MCP 客户端中配置服务之前,您可以使用随附的测试脚本验证 API 密钥和安装是否正常:

  1. 设置您的 OpenWeatherMap API 密钥:

    export OPENWEATHER_API_KEY="your_api_key"
    
  2. 运行测试客户端:

    python3 test_mcp_client.py
    

测试脚本会直接调用天气函数,检查纽约当前的天气并显示结果。这有助于确认:

  1. 您的 API 密钥正常工作
  2. 可以访问 OpenWeatherMap API
  3. 天气数据函数正常运行

如果测试显示了当前天气数据,您就可以在 Claude Desktop、Cursor 或其他 MCP 客户端中配置服务了!

正在运行本地测试客户端

运行本地测试客户端以验证 API 密钥和安装

自动化测试

仓库包含单元测试和集成测试文件,用于:

  • 测试 API 密钥的处理和验证
  • 验证数据解析和格式化
  • 验证 API 失败时的错误处理
  • 测试公开的两个 MCP 工具:get_weather 和 get_current_weather

这些测试需要正确设置开发环境并安装所有依赖项。它们可作为未来开发的参考。

运行自动化测试:

# Run unit tests
python test_weather_mcp.py

# Run integration tests
python test_mcp_integration.py

测试使用示例 API 响应(test_weather_response.json)来模拟 OpenWeatherMap API 的响应,因此无需 API 密钥或互联网连接即可运行。

这些测试可作为未来开发的参考,并确保 MCP 服务在进行任何修改后仍能正常运行。

致谢

本项目改编自 Zippland 的原始项目 Weather MCP。修改内容包括:

  • 集成 OpenWeatherMap One Call API 3.0
  • 将预报数据范围从 2 天延长至 8 天(今天 + 7 天)
  • 为每天新增上午、下午和晚间的数据点
  • 提供未来 48 小时的逐小时预报
  • 纳入天气摘要、风速和降水概率
  • 添加单元测试、集成测试和模拟客户端测试文件

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。