mcpField
O
Open-Meteo Weather

Open-Meteo Weather

本地服务
github.com/myAI-2025地图与出行05 天前更新

关于 Open-Meteo Weather

Open-Meteo Weather 是面向需要按地名获取天气数据的客户端的轻量 Python MCP 服务。它通过免费的 Open-Meteo API 提供当前天气和逐小时预报,无需 API 密钥。

主要功能

  1. 01按地名查询当前天气
  2. 02查询 1–48 小时逐时预报
  3. 03预报时间采用当地时区
  4. 04无需 API 密钥
  5. 05仅依赖标准库的 Python 服务

适用场景

  1. 01查询城市当前天气
  2. 02查看未来数小时的降雨概率
  3. 03获取旅行规划所需的预报

MCP 相关

该 MCP 服务通过 stdio 使用 JSON-RPC 2.0 通信,并向 MCP 客户端提供 `get_weather` 和 `get_hourly_forecast` 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"myai-2025-openmeteo": {
"command": "uvx",
"args": [
"myai-weather-mcp"
]
}
}
}
启动命令uvx myai-weather-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimyai-weather-mcp0.1.2

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
locationstring是地点名称,例如 'Seattle' 或 'Paris, France'。

详细介绍

weather-mcp

Python application PyPI

一个精简的模型上下文协议服务,只有一个文件。它通过 stdio 使用 JSON-RPC 2.0,并提供两个工具, get_weather 和 get_hourly_forecast,数据由免费的 Open-Meteo API 提供支持。

没有第三方运行时依赖——仅使用标准库。需要 Python 3.8+。

快速开始:Claude Code

1. 准备终端

每条指令应该粘贴在哪里?

你会用到两个地方:

  • 普通的 Terminal 标签页用于运行设置命令。在 Mac 上,打开 Terminal 应用并按 Command + T 打开新标签页。粘贴一条命令,然后按 Return。
  • Claude Code 对话用于提问,例如 “东京的天气怎么样?”

如果 Claude 已经在和你聊天,请打开新的 Terminal 标签页来运行设置命令。 保留 Claude 对话在原来的标签页中,以便之后返回。

在 macOS/Linux 上打开 Terminal,或在 Windows 上打开 PowerShell。将本指南中的命令块粘贴到其中。天气问题和以 / 开头的命令(例如 /login 和 /mcp)应在 Claude Code 对话中输入。 如果 Claude Code 已经在终端中打开,请使用新的终端标签页进行设置。

  1. 按照官方设置指南安装 Claude Code。 在终端中运行 claude --version,检查是否已可用。 然后运行 claude 并按照登录提示操作;如有需要,在 Claude Code 中输入 /login。为后续步骤保留一个单独的终端标签页。
  2. 按照适用于你操作系统的说明安装 uv。 uv 会提供 uvx,由它为你下载并运行天气软件包。 安装后重新打开终端并运行 uvx --version。 如果任一版本检查提示“command not found”,请先完成相应安装再继续。

你需要连接互联网才能下载软件包并获取天气信息。 无需天气 API 密钥。

2. 添加天气服务

在终端中运行:

claude mcp add --scope user weather -- uvx myai-weather-mcp==0.1.2

weather 是你将在 Claude Code 中看到的名称。myai-weather-mcp 是它运行的已发布软件包。用户级作用域使此设置可用于你的所有 Claude Code 项目。无需克隆仓库或单独安装软件包。 如需了解其他设置选项,请参阅 Claude Code MCP 参考。

==0.1.2 固定选择本指南使用的版本,因此后续发布不会悄然改变你的设置。这是有意为之;想要升级时,请参阅更新版本。

如果 weather 已存在,请使用 claude mcp get weather 检查。 如果它已使用上述命令,请继续下一步。要替换较旧的用户级设置,请按照更新版本中的替换步骤操作。

3. 检查连接并查询天气

在终端中运行:

claude mcp get weather

查看是否显示 Connected。如果显示其他状态或找不到服务,请使用下文的连接故障排除。

运行 claude 启动新的 Claude Code 会话,或在现有会话中输入 /mcp 并重新连接 weather。在 Claude Code 的对话提示符处粘贴:

  • “使用天气工具告诉我东京当前的天气。”
  • “使用逐小时天气预报工具显示东京接下来六小时的天气。”

预期结果包括当前天气状况、以 °F 为单位的温度、以 mph 为单位的风速,以及六行包含当地时间和降雨概率的预报。数值会随天气变化。

更新版本

查看发布说明,并 选择一个已发布的版本。若要替换用户范围的注册项,请先检查 claude mcp get weather,并保存你想保留的自定义设置。然后运行 以下命令,并在添加命令中将 0.1.2 替换为你选择的版本:

claude mcp remove --scope user weather
claude mcp add --scope user weather -- uvx myai-weather-mcp==0.1.2
claude mcp get weather

移除注册项只会删除该客户端配置,不会删除你的仓库 或源文件。如果现有注册项处于本地或项目范围,请在更改前检查 该配置;其中同名的条目可能会覆盖用户范围的条目。

替换后,通过 /mcp 重新连接,或启动新的 Claude Code 会话。 对于 Claude Desktop,请在其配置的 args 中更改版本并重启。

刷新 uv 的缓存不会更改已保存的版本固定项。如果已发布的版本无法找到,请使用你选择的版本运行以下命令:

uvx --refresh myai-weather-mcp==0.1.2

如果终端一直空白且没有报错,说明服务正在等待客户端; 按 Control+C,然后重新连接客户端。请参阅 uv 的工具指南 ,了解有关运行工具和选择版本的更多信息。

连接故障排查
  • **没有名为 weather 的服务:**运行第 2 步中的添加命令,然后再次检查。
  • **连接失败或显示其他非已连接状态:**检查 claude mcp get weather 打印的命令和 参数。尝试直接在终端中运行 uvx myai-weather-mcp==0.1.2,并查看是否有错误。 如果它启动后没有报错并一直等待,请按 Control+C,然后通过 /mcp 重新连接。成功启动可确认软件包能够运行;再询问天气以 检查网络连接。
  • **找不到 uvx:**安装 uv 并重新打开终端。如果终端能找到它,但客户端找不到,请使用 command -v uvx (macOS/Linux)或 where.exe uvx(Windows PowerShell)查找其完整路径。在注册项或配置中使用该路径替代 uvx;路径包含空格时请加引号。
  • **软件包下载失败:**检查你的互联网连接以及软件包名称和版本是否准确。如果选定的版本确实存在,但 uv 无法找到,请使用上面的缓存刷新命令。对于 UnknownIssuer,请参阅下面的 证书错误处理步骤。
  • **已连接,但缺少工具:**启动新的 Claude Code 会话,或使用 /mcp 检查 weather 是否已启用并重新连接。
  • **直接启动服务后终端一片空白:**服务正在等待 MCP 客户端。这是正常现象;请按 Control+C 并使用上面的客户端设置步骤。
  • **Claude Code 提示“Not logged in”:**打开 claude 并运行 /login。
  • **已连接,但天气请求失败:**检查返回的错误以及你的 互联网连接。服务必须能够访问 Open-Meteo 才能获取天气。
  • **找不到位置:**尝试使用知名城市的名称。对于未知地点,应返回易于理解的错误,而不是天气预报。
PyPI 证书错误(UnknownIssuer)

如果终端在 uvx 从 pypi.org 获取内容时显示 invalid peer certificate: UnknownIssuer,说明包启动器无法验证该 HTTPS 连接。这会在天气服务启动前发生,并可能在客户端初始化期间显示为 Connection closed。其他连接错误可能由不同原因引起。

尝试使用操作系统已信任的证书:

uvx --system-certs myai-weather-mcp==0.1.2

这对于证书已存储在系统信任库中的受管网络可能有所帮助。此方法会继续启用证书验证。如果服务启动后一直等待且没有报错,请按 Control+C。要在 Claude Code 中使用相同选项,请按照替换注册步骤,使用以下添加命令:

claude mcp add --scope user weather -- uvx --system-certs myai-weather-mcp==0.1.2

对于 Claude Desktop 的 uvx 设置,将 args 改为 ["--system-certs", "myai-weather-mcp==0.1.2"]。重新连接或重启客户端,然后询问天气以检查完整连接。如果所选包版本与本指南固定的版本不同,请使用你选择的版本。

如果 uvx 无法识别该标记,请使用其安装方式更新 uv。如果证书验证仍然失败,请咨询网络管理员并参阅 uv 的证书文档。 请保持验证启用;不要使用 --allow-insecure-host 绕过错误。如果现有设置可以正常运行,则无需更改配置。

帮助我们测试

尝试上面的两个问题,以及一个虚构地点,例如 ZzzxqqNowhere。如果有任何不清楚的地方,请提交 issue,并附上你的操作系统、客户端、包版本、操作步骤和错误消息。分享前请删除密码、身份验证代码和其他隐私信息。

工具

工具参数返回内容
get_weatherlocation(字符串,必填)——地点名称,例如 "Seattle" 或 "Paris, France"当前天气状况、温度(°F)和风速(mph),以文本块形式返回。未知地点名称会作为带有 isError: true 的结果返回。
get_hourly_forecastlocation(字符串,必填);hours(整数,可选,1–48,默认值为 12)逐小时返回温度(°F)、降水概率和天气状况,每小时一行。时间戳为该地点的本地时间。超出范围的 hours 值会被限制在有效范围内。

用法

以下响应仅为示例快照,不代表当前天气。

将服务接入客户端后,只需用自然语言提问——模型会选择工具并填写参数:

你: 西雅图现在的天气怎么样?

Claude: (调用 get_weather,参数为 location: "Seattle") 西雅图(美国)当前天气:阴天,54.2 °F,风速 1.1 mph。

你: 接下来 6 小时东京会下雨吗?

Claude: (调用 get_hourly_forecast,参数为 location: "Tokyo"、hours: 6) 会——每小时都有毛毛雨,降水概率从 76 % 升至 89 %。

不使用客户端进行尝试

安装 uv 后,将整个代码块粘贴到使用 bash 或 zsh 的 macOS/Linux 终端中。必要时会下载固定版本的包,并且可在任意文件夹中运行;无需克隆项目或单独安装包。此 Shell 示例不是 PowerShell 语法。

它会直接向服务发送一组简单的 JSON-RPC 请求与响应:

printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"cli"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_weather","arguments":{"location":"Seattle"}}}' \
  '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_hourly_forecast","arguments":{"location":"Tokyo","hours":6}}}' \
  | uvx myai-weather-mcp==0.1.2

tools/call 的响应如下:

{"jsonrpc": "2.0", "id": 2, "result": {"content": [{"type": "text",
  "text": "Current weather in Seattle, United States:\n  Conditions:  overcast\n  Temperature: 54.2°F\n  Wind:        1.1 mph"}]}}
Hourly forecast for Tokyo, Japan (next 6 hours):
  2026-09-04 18:00  73.0°F  precip  76%  dense drizzle
  2026-09-04 19:00  72.5°F  precip  76%  dense drizzle
  2026-09-04 20:00  72.2°F  precip  78%  dense drizzle
  2026-09-04 21:00  71.8°F  precip  80%  slight rain
  2026-09-04 22:00  71.7°F  precip  84%  dense drizzle
  2026-09-04 23:00  71.3°F  precip  89%  moderate drizzle

未知地点名称会作为常规结果返回,并带有 "isError": true:

{"jsonrpc": "2.0", "id": 4, "result": {"content": [{"type": "text",
  "text": "Could not find any location named 'Zzzxqq'."}], "isError": true}}

安装

快速入门已通过 uvx 运行已发布的软件包。以下选项是替代方案;无需全部完成。

本指南中始终使用 myai-weather-mcp 作为软件包和启动命令。 openmeteo-mcp 是同一服务的旧版兼容别名。

使用 uv 运行已发布的版本(推荐):

uvx myai-weather-mcp==0.1.2

使用 pipx 安装持久命令:

pipx install myai-weather-mcp==0.1.2
myai-weather-mcp

或者,在已激活的 Python 虚拟环境中使用 python3 -m pip install myai-weather-mcp==0.1.2 安装。

使用 uv 运行 GitHub 上的源码:

uvx --from git+https://github.com/myAI-2025/weather-mcp myai-weather-mcp

此命令使用仓库的默认分支,该分支可能与已发布的版本不同。

运行本地克隆(需要 Git 和 Python 3.8+):

git clone https://github.com/myAI-2025/weather-mcp
python3 weather-mcp/weather_mcp/server.py

在运行 git clone 的同一文件夹中运行第二条命令,或使用脚本的完整路径。在 Windows 上,如果 Python 启动器的名称是 python 而不是 python3,请使用它。

以上命令都会启动服务并等待 MCP 输入。终端空白是正常现象;配置客户端前,按 Control+C 停止服务。

配置客户端

Claude Code

建议使用 快速入门中的 uvx 设置。 如果你已在那里注册了 weather,则无需再次注册。

如果你选择了持久的 pipx 安装方式,可以改用:

claude mcp add --scope user weather -- myai-weather-mcp

对于本地克隆,请将下方示例路径替换为脚本的实际完整路径:

claude mcp add --scope user weather -- python3 /path/to/weather-mcp/weather_mcp/server.py

替换现有注册项时,请先检查,并按照更新版本中的说明操作。重启 Claude Code,或通过 /mcp 重新连接,然后让它使用 get_weather 或 get_hourly_forecast。

Claude Desktop

先按照快速入门中的说明安装 uv。编辑 claude_desktop_config.json (macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\)。 在 mcpServers 下添加 weather 条目,并保留其中已有的其他服务:

{
  "mcpServers": {
    "weather": {
      "command": "uvx",
      "args": ["myai-weather-mcp==0.1.2"]
    }
  }
}

如果 Desktop 找不到 uvx,请将 "uvx" 替换为通过 command -v uvx(macOS)或 where.exe uvx(Windows)找到的完整路径。在 JSON 中,Windows 路径的反斜杠必须加倍,例如 "C:\\Users\\YourName\\.local\\bin\\uvx.exe";请使用你的实际路径。

如果你改用 pipx 安装软件包,请使用 "command": "myai-weather-mcp"(或其完整路径),并省略 args。

退出并重新打开 Claude Desktop,然后让它使用天气工具。本指南的端到端客户端检查是在 Claude Code 中完成的;Desktop 配置是另一种设置方式。

任何其他 MCP 客户端

配置一个 stdio 服务,命令为 uvx,参数为 myai-weather-mcp==0.1.2。如果已进行持久安装,也可以将命令设为 myai-weather-mcp。客户端会启动进程,并通过其 stdin/stdout 交换 JSON-RPC 2.0 消息。请参阅下方的 工作原理。

开发

git clone https://github.com/myAI-2025/weather-mcp
cd weather-mcp
pip install -e ".[dev]"
python3 test_server.py     # one line per check
pytest                     # same checks, pytest-style

测试套件会对网络函数进行猴子补丁,因此可在离线状态下运行。

工作原理

weather_mcp/server.py 从 stdin 读取以换行符分隔的 JSON-RPC 消息,并将响应写入 stdout:

方法行为
initialize回显客户端的 protocolVersion,声明 tools 能力,并返回 serverInfo。
notifications/initialized通知——不返回响应。
tools/list返回 get_weather 和 get_hourly_forecast 工具及其输入架构。
tools/call调用指定的工具:对地点进行地理编码,从 Open-Meteo 获取天气,并格式化为文本块。查询或网络失败时会返回 isError: true,而不是 JSON-RPC 错误。
其他任何方法(带有 id)返回 JSON-RPC 错误 -32601,表示找不到该方法。

上游调用:先调用 Open-Meteo 地理编码接口(geocoding-api.open-meteo.com),再调用天气预报接口(api.open-meteo.com),参数为 current=temperature_2m,wind_speed_10m,weather_code。

致谢

由 Mona (myAI-2025) 创建并维护, 她负责指导项目并在 Claude Code 中进行测试。

在 Claude 和 Claude Code (Anthropic) 以及 ChatGPT 和 Codex (OpenAI) 的 AI 辅助下, 完成了规划、实现、调试、测试、文档编写、打包和发布。

天气数据由 Open-Meteo 提供。 此处致谢所使用的工具和服务,但不表示其提供方赞助或认可本项目。

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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