SuperAPI AI 工具集

garmin-connect-workouts-mcp

garmin-connect-workouts-mcp 是一个 MCP(Model Context Protocol)服务器,用于把自然语言描述的训练课转换为 Garmin Connect 中的结构化训练。用户用普通英语描述一次训练,调用模型会构建带类型的逐步训练,服务器再将其编码为 Garmin 训练 API 格式并直接创建到用户账户中。它支持配速、心率、功率和踏频目标,支持真实重复块(如 5x1km 生成一个重复组而非 5 个重复步骤),支持游泳训练(每种泳姿和装备、泳池长度),并提供创建、列出、获取、更新、删除和排期训练等完整生命周期操作。服务器本身不解析自由文本,所有时长和目标都是显式带单位标记的字段,避免误读。该工具为第三方非官方项目,与 Garmin 无关联。

访问官网

工具介绍

Garmin Connect Workouts MCP 是一个 MCP(Model Context Protocol)服务器,目标是把自然语言形式的训练描述转换为 Garmin Connect 中的结构化训练。用户在调用模型中用自然语言描述一次训练,模型构建带类型的逐步训练,服务器再将其编码为 Garmin 的 workout API 格式,并直接创建到用户账户中。

主要能力:

  • 配速、心率、功率和踏频目标:支持配速范围、心率区间 1-5、明确的 bpm 范围、骑行功率以及踏频,全部基于 Garmin 真实的 workoutTargetType 表进行编码。
  • 真实重复块:5x1km 会生成一个单一重复组,而不是五个重复步骤,因此手表上会显示实际的组数计数器。
  • 游泳训练:支持每步的泳姿(自由泳、仰泳、蛙泳、蝶泳、drill、混合泳或任意泳姿)和装备(脚蹼、打水板、划水掌、浮标、呼吸管),以及训练级别的泳池长度(米或码)。
  • 完整训练生命周期:创建、列出、获取、更新、删除,以及将训练排期到 Garmin Connect 日历。
  • 结构化输入而非文本解析:服务器自身从不解析自由文本;每个时长和目标都是显式的、带单位标记的字段,因此像“10 min”这样的字符串不会被静默误读。

使用方式: 将其添加到配置文件: macOS:~/Library/Application Support/Claude/claude_desktop_config.json Windows:%APPDATA%\Claude\claude_desktop_config.json 然后重启 Claude Desktop。

认证方式: Garmin Connect 的网页客户端使用会话 cookie 加 CSRF token 进行认证,而不是本服务器可以保存的密码授权。因此第一次创建训练时(或会话过期时): 服务器会用一次轻量的已认证请求检查已存储的会话。 如果会话缺失或被拒绝,运行 authenticate_garmin 工具。它会打开一个真实浏览器窗口到 connect.garmin.com,供用户正常登录。 登录完成后,会话被捕获并存储在 ~/.config/garmin-connect-workouts-mcp/auth.json,权限为 600(仅所有者读写)。 不存储任何密码——只保存生成的会话 cookie 和 CSRF token。Garmin 会话会过期,因此可能需要在不同会话之间重新认证;服务器会自动检测并提示何时再次运行 authenticate_garmin。登录浏览器使用位于 ~/.config/garmin-connect-workouts-mcp/browser-profile/ 下的持久、隔离的配置文件,以便 Garmin 在多次登录间记住设备——它从不接触你的个人浏览器配置文件。

示例用法: “Create a 30 minute easy run in zone 2” “10 min warmup zone 3, then 5x1km threshold intervals at 4:00/km with 2 min rest between, then 10 min cooldown zone 2” “8x400m at 5k pace with 60 second recovery, then check what workouts I already have scheduled this week” “Update workout 123456 to add a 5 minute cooldown, then schedule it for next Monday” “Create a 25m pool swim: 200m warmup any stroke, 4x100m freestyle with 30s rest using a kickboard, 100m breaststroke cooldown”

目标的工作方式: 给出的配速会被视为范围中的快端:Garmin 将配速存储为范围而不是单点,因此单独的 4:00/km 会变成 4:00-4:10/km 的范围,向宽方向扩展 10 秒。如果同时明确给出快端和慢端,则得到更窄或不同的范围。 测试会根据从 Garmin 自家网页客户端捕获的 fixture 验证训练编码器(目标、时长、重复嵌套),因此 payload 结构回归会在到达真实账户之前被捕获。

限制与说明: 这是一个非官方第三方项目,与 Garmin Ltd. 及其任何关联公司无关联、未获其认可或赞助,它通过逆向工程官方网页客户端发出的相同请求来与 Garmin Connect 的 web API 通信。如果 Garmin 更改该 API,它可能停止工作。使用风险自负,并且用户对发送到账户的训练和数据承担责任。 致谢:感谢 Charles Frisbee 的 garmin-workouts-mcp 提供了通过 MCP 驱动 Garmin Connect 训练的原始想法。