mcpField
P
pp-weather-goat

pp-weather-goat

github.com/mvanhorn其他2.1k502 次安装今天更新
代码仓库

关于 pp-weather-goat

pp-weather-goat 是用于操作 Weather GOAT CLI 的技能,面向需要天气查询和基于天气的活动建议的 Agent。它将预报、美国国家气象局警报、空气质量与活动专属的行动判断整合在一起。

主要功能

  1. 01查询当前天气和多日预报
  2. 02按活动给出行动判断及理由
  3. 03查看并持续监测恶劣天气警报
  4. 04比较天气与历史同期水平
  5. 05查询空气质量、花粉和 UV

适用场景

  1. 01判断当天是否适合骑行或徒步
  2. 02获取所在地的早间天气简报
  3. 03比较旅行目的地的天气
  4. 04监测风暴期间更新的警报

MCP 相关

README 提供 weather-goat-pp-mcp 的安装和客户端配置命令。此服务将 Weather GOAT 的天气与警报能力提供给 MCP 客户端。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-weather-goat

安装后在 Claude Code 中输入/pp-weather-goat确认已加载。

详细介绍

Weather GOAT — Printing Press 命令行工具

前置条件:安装命令行工具

此技能由 weather-goat-pp-cli 二进制文件驱动。**调用此技能中的任何命令前,必须确认命令行工具已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到 $HOME/.local/bin;在 Windows 上,默认安装到 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install weather-goat --cli-only
    
  2. 验证:weather-goat-pp-cli --version
  3. 确保报告的安装目录位于将调用此技能的 Agent/运行时的 $PATH 中。

如果 npx 安装失败(没有 Node、离线等),请改用直接 Go 安装(需要 Go 1.26.6 或更高版本):

go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-cli@latest

如果安装后 --version 报告“command not found”,说明运行时无法访问 $PATH 中的二进制文件目录。验证成功前,请勿执行技能命令。

何时使用此命令行工具

当用户想查询天气、查看风暴或警报、了解空气质量、根据当前状况获取活动建议(骑车、徒步、散步、通勤、驾车),或比较“今天在每年这个时候是否正常”时,请使用此工具。它尤其适合作为晨间简报信息源:使用 weather-goat-pp-cli(不带参数时,会显示配置的居家位置当前天气、今日预报和有效警报)。

如果用户需要超本地或商业级气象信息(请使用 Tomorrow.io 或 ECMWF 等付费服务),或国际严重天气警报(NWS 仅覆盖美国),则不应使用此工具。

独特功能

活动判定 — 差异化优势
  • go walk|bike|hike|commute|drive [location] — 针对特定活动给出 GO / CAUTION / STOP 判定,并说明原因。

    将“看看天气”变成“我该做什么”。每种活动都有各自的判定阈值。

    • walk — 准备建议(带伞?穿夹克?涂防晒霜?穿多层衣物?)
    • bike — 针对骑行优化的风力、降雨、AQI 和结冰阈值
    • hike — 雷电、失温风险、高海拔紫外线
    • commute — 比较早晨出发和傍晚返程时的天气(考虑时间)
    • drive — 能见度、结冰、阵风、NWS 警告
严重天气信息
  • alerts [location] — 当前有效的 NWS 警告:龙卷风、风暴、洪水、高温。以结构化格式输出严重程度和区域多边形。

  • watch [location] — 严重天气期间,每 60 秒轮询一次 NWS。收到新警报或更新警报时打印出来。适用于风暴期间运行。

情境与比较
  • normal [location] — 今天在每年这个时候是否正常?将今天的最高温、最低温和降水量与同一日期的历史平均值进行比较。

  • compare <location1> <location2> [...] — 并排比较 2 个或更多地点的天气预报。适用于旅行规划,或比较“这个周末哪个城市的天气更好”。

  • morning-brief(或者,如果已运行 config set-location,则直接运行不带参数的 weather-goat-pp-cli)— 一次调用即可获取当前天气、今日预报和有效的 NWS 警报。每日晨间启动命令。

空气、紫外线和花粉
  • breathe [location] — AQI、花粉和紫外线信息,以及运动建议。

  • air-quality [location] — 详细 AQI 信息,包括 PM2.5、臭氧等。

  • weather_codes — Open-Meteo 天气代码映射参考(内部参考,但处理 --json 输出时很有用)。

命令参考

核心:

  • weather-goat-pp-cli — 晨间简报(需要先运行 config set-location,或传入 [location])
  • weather-goat-pp-cli forecast [location] — 多日预报
  • weather-goat-pp-cli alerts [location] — 当前有效的 NWS 恶劣天气警报
  • weather-goat-pp-cli history [location] — 历史天气

活动:

  • weather-goat-pp-cli go <activity> [location] — walk、bike、hike、commute、drive

空气 / 环境:

  • weather-goat-pp-cli breathe [location] — AQI + 花粉 + UV 简报
  • weather-goat-pp-cli air-quality [location] — 详细 AQI

背景信息:

  • weather-goat-pp-cli normal [location] — 今日天气与历史平均值对比
  • weather-goat-pp-cli compare <loc1> <loc2> — 并列对比
  • weather-goat-pp-cli watch [location] — 实时 NWS 监控循环

配置 + 实用工具:

  • weather-goat-pp-cli config set-location <place> — 设置家庭位置
  • weather-goat-pp-cli geocoding <name> — 将地名解析为坐标
  • weather-goat-pp-cli doctor — 验证连接

使用示例

“今天适合骑车上班吗?”
weather-goat-pp-cli go bike --agent

返回结构化的 GO/CAUTION/STOP 判定及理由,综合考虑风速、降水、AQI、气温和结冰风险,并针对骑行情况进行加权评估。

设置家庭位置后的晨间简报
weather-goat-pp-cli config set-location "Seattle, WA"
weather-goat-pp-cli --agent  # morning brief — no args

保存位置后,不带参数运行即可返回当前天气状况、今日预报和当前有效的 NWS 警报。可在 shell 启动脚本或 cron 中设置为早上 7 点运行。

旅行决策 — 这个周末去哪个城市更好?
weather-goat-pp-cli compare "Portland, OR" "San Francisco, CA" --agent

并列显示两地的当前天气状况。一眼即可选出旅行目的地。

天气预警期间监控恶劣天气
weather-goat-pp-cli watch --agent &  # background poll every 60s

持续运行;警报发生变化时,将 JSON 事件输出到 stdout。可将输出传入日志工具或 Slack webhook,以便接收警报。

今天是不是异常炎热?
weather-goat-pp-cli normal --agent

返回今日最高 / 最低气温和降水情况,并与同一日历日期的 30 年历史平均值对比。可轻松判断“这是不是热浪”。

身份验证设置

无需身份验证。 Open-Meteo 免费且不限量;NWS 免费,使用美国公开数据。auth 命令仅为保持一致而存在,实际不执行任何操作。

可选配置:

  • WEATHER_GOAT_CONFIG — 覆盖配置文件路径
  • 家庭位置通过 config set-location 持久化保存至 ~/.config/weather-goat-pp-cli/config.toml

Agent 模式

在任何命令中添加 --agent。它会展开为 --json --compact --no-input --no-color --yes。在 forecast 中使用 --forecast-days N,使用 --no-cache 可绕过 15 分钟的 GET 缓存。

筛选输出

--select 接受点分隔路径,用于深入访问嵌套响应;遍历数组时会逐项处理:

weather-goat-pp-cli <command> --agent --select id,name
weather-goat-pp-cli <command> --agent --select items.id,items.owner.name

使用此选项可将庞大的负载缩小到实际所需的字段,对于深度嵌套的 API 响应尤其重要。

退出代码

代码含义
0成功
2用法错误
3未找到位置(地理编码失败)
5API 错误(Open-Meteo 或 NWS 出现问题)
7请求受限(极少见;Open-Meteo 不限量)

安装

go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-cli@latest
weather-goat-pp-cli config set-location "Your City, ST"
weather-goat-pp-cli doctor
MCP 服务
go install github.com/mvanhorn/printing-press-library/library/other/weather-goat/cmd/weather-goat-pp-mcp@latest
claude mcp add weather-goat-pp-mcp -- weather-goat-pp-mcp

参数解析

给定 $ARGUMENTS:

  1. 为空、help 或 --help → 运行 weather-goat-pp-cli --help
  2. install → CLI;install mcp → MCP
  3. 活动相关查询(“should I bike/walk/hike...”) → go <activity> [location] --agent
  4. 恶劣天气(“any tornado warnings”、“storms coming”) → alerts [location] --agent
  5. 地点对比(“better weather in X or Y”) → compare <loc1> <loc2> --agent
  6. 其他所有情况 → forecast [location](如果未传入位置且已配置家庭位置,则运行晨间简报)

Agent 工作流功能

此 CLI 提供了三项共享的 Agent 工作流能力,移植自 cli-printing-press PR #218。

命名配置

按名称保存一组标志,并在多次调用时重复使用。

# Save the current non-default flags as a named profile
weather-goat-pp-cli profile save <name>

# Use a profile — overlays its values onto any flag you don't set explicitly
weather-goat-pp-cli --profile <name> <command>

# List / inspect / remove
weather-goat-pp-cli profile list
weather-goat-pp-cli profile show <name>
weather-goat-pp-cli profile delete <name> --yes

标志优先级:显式标志 > 环境变量 > 配置 > 默认值。

--deliver

将命令输出路由到 stdout 以外的接收端。当 Agent 需要将结果交给文件、webhook 或其他进程,而不想手动接线时,此功能很有用。

weather-goat-pp-cli <command> --deliver file:/path/to/out.json
weather-goat-pp-cli <command> --deliver webhook:https://hooks.example/in

文件接收端会以原子方式写入(临时文件 + 重命名)。Webhook 接收端会发送 application/json(设置 --compact 时则发送 application/x-ndjson)。遇到未知协议时,会返回结构化拒绝信息,并列出支持的协议。

feedback

从 Agent 端记录有关此 CLI 的带内反馈。默认仅限本地,无需配置即可安全调用。

weather-goat-pp-cli feedback "what surprised you or tripped you up"
weather-goat-pp-cli feedback list         # show local entries
weather-goat-pp-cli feedback clear --yes  # wipe

条目会以 JSON 行格式追加到 ~/.weather-goat-pp-cli/feedback.jsonl。设置 WEATHER_GOAT_FEEDBACK_ENDPOINT 且传入 --send 或设置 WEATHER_GOAT_FEEDBACK_AUTO_SEND=true 时,也会将条目 POST 到上游(非阻塞——本地写入始终成功)。

评论

支持 Markdown