mcpField
G
Garmin Workouts MCP

Garmin Workouts MCP

本地服务
github.com健康医疗233 周前更新

关于 Garmin Workouts MCP

Garmin Workouts MCP 是用于 Garmin Connect 训练的独立 MCP 服务,重点支持结构化力量训练及练习映射。它通过 stdio 提供服务,不是公开的 HTTP MCP 端点。

主要功能

  1. 01创建力量训练步骤并支持次数条件
  2. 02支持 Garmin 枚举和友好别名映射
  3. 03上传前预览训练数据
  4. 04验证训练结构和练习映射
  5. 05查询训练输入架构
  6. 06列出、获取、删除和安排训练

适用场景

  1. 01为 Garmin Connect 准备力量训练
  2. 02检查上传前的训练数据载荷
  3. 03确认力量练习名称的 Garmin 映射
  4. 04查看训练日历和活动

MCP 相关

它是通过 stdio 运行的 MCP 服务,向 MCP 客户端提供训练创建与预览、验证、映射查询,以及训练列表、日历和活动等工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"pranciskus-garmin-workouts": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GARMIN_EMAIL",
"-e",
"GARMIN_PASSWORD",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
],
"env": {
"GARMIN_EMAIL": "<GARMIN_EMAIL>",
"GARMIN_PASSWORD": "<GARMIN_PASSWORD>"
}
}
}
}
启动命令docker run -i --rm -e GARMIN_EMAIL -e GARMIN_PASSWORD ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2
需要配置的环境变量
GARMIN_EMAIL密钥Garmin Connect account email.
GARMIN_PASSWORD密钥Garmin Connect account password.

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

安装包
ocighcr.io/pranciskus/garmin-workouts-mcp:0.1.2

工具

还没有获取到工具列表

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

详细介绍

Garmin Workouts MCP

garmin-workouts-mcp 是一个用于 Garmin Connect 训练的独立 MCP 服务。

它旨在作为专用扩展,为需要对 Garmin 训练数据进行更多结构化处理的工作流提供支持,尤其是力量训练。

此项目打包为 stdio MCP 服务,可发布为 OCI 镜像,供 MCP 注册表和 Glama 部署。它不是独立的公共 HTTP MCP 端点。

Garmin Workouts MCP server

新增功能

  • 支持 Garmin 力量训练步骤的 reps 结束条件。
  • 支持通过显式 Garmin 枚举值或易记别名设置运动元数据。
  • 新增 preview_workout_payload,可在上传前检查数据。
  • 新增 validate_workout,用于提前发现架构和映射错误。
  • 新增 resolve_supported_strength_exercise,可快速检查映射。
  • 新增 get_workout_input_schema,用于机器可读的客户端集成。
  • 将 walking 纳入支持的运动类型,并同步更新提示词/架构。
  • 保留熟悉的列表、获取、删除、安排、日历和活动工具。

环境

基于 Garmin 的工具会在调用时按需进行身份验证:

  • 身份验证方式:GARMIN_EMAIL 和 GARMIN_PASSWORD

服务可以在没有凭据的情况下启动。不与 Garmin 通信的工具(例如数据预览和架构检查)仍可在没有密钥的情况下使用。

训练输入

上传和预览工具接受如下结构的 JSON 对象:

{
  "name": "Upper Day",
  "type": "strength",
  "steps": [
    {
      "stepType": "warmup",
      "endConditionType": "lap.button",
      "stepDescription": "General warm-up"
    },
    {
      "stepType": "interval",
      "exercise": "incline db press",
      "endConditionType": "reps",
      "stepReps": 8,
      "stepDescription": "8-10 reps"
    },
    {
      "stepType": "rest",
      "endConditionType": "time",
      "stepDuration": 120
    }
  ]
}

对于力量训练动作,可以传入易记别名:

{ "exercise": "t bar row" }

也可以传入显式 Garmin 枚举值:

{
  "exercise": {
    "category": "ROW",
    "exerciseName": "T_BAR_ROW"
  }
}

你也可以通过 get_workout_input_schema 以编程方式检查接受的结构,或使用 resolve_supported_strength_exercise 查询可能的 Garmin 力量训练映射。

开发

在 Docker Compose 中运行测试:

docker compose run --rm tests

构建运行时镜像:

docker build -t garmin-workouts-mcp:local .

在没有 Garmin 凭据的情况下,对 stdio 服务启动进行冒烟测试:

python - <<'PY'
import subprocess

proc = subprocess.Popen(
    ["bash", "-lc", "tail -f /dev/null | docker run --rm -i garmin-workouts-mcp:local"]
)
try:
    proc.wait(timeout=5)
    print(f"container exited early with code {proc.returncode}")
finally:
    if proc.poll() is None:
        proc.terminate()
        proc.wait()
        print("container stayed up for 5 seconds")
PY

发布

预期的 OCI 镜像位置:

ghcr.io/pranciskus/garmin-workouts-mcp

注册表元数据位于 server.json 中。OCI 镜像包含所需标签:

io.modelcontextprotocol.server.name=io.github.pranciskus/garmin-workouts-mcp

Glama 所有权元数据位于 glama.json 中。该文件声明了可认领和管理 Glama 条目的 GitHub 维护者账号。

评论

支持 Markdown

第一次接触 MCP?

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

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