Garmin健康数据查询与管理服务

一个Python服务器,用于查询Garmin Connect的健康数据并管理训练计划,支持健康报告生成、训练计划管理和活动查询。

  • by Carlescamarasa
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Carlescamarasa/mcp-garmin

使用说明

麦克普·加明

MCP服务器(Python)用于查询Garmin Connect数据并管理来自AI客户端的锻炼。

当前刀具表面(干净切削)

此服务器现在仅公开 3个MCP工具:

  1. garmin_health_report

    • 汇总一个日期的运行状况和性能数据。
    • 支持 mode=summary (更少的API调用)和 mode=full (最大覆盖范围)。
    • 返回稳定 summary 对象+ availableSections, unavailableSections,以及 errors.
  2. garmin_manage_workout

    • 锻炼管理操作的单一入口点:
      • create
      • list_scheduled
      • list_library
      • update
      • delete
      • apply_week_plan
    • create 和 update 支持结构化 steps 有效载荷(workout_step 和 repeat_group)因此,Garmin设备可以直接引导代表/时间/休息,而不仅仅是显示免费的文字注释。
    • 如果 steps 以重复的速记方式到达(RONDA 1: ..., RONDA 2: ...),服务器将它们标准化为一个重复组,其中包含有序的儿童练习。
    • 解析器还支持传统的重复语法(stepType: "repeat" + repeatIterations)并将其标准化为Garmin RepeatGroupDTO.
    • durationType: "lap_button" 可用于开放式步骤(在LAP出版社提前)。
    • sport_type 接受Garmin风格的别名(cardio_training, strength_training等等)。
    • create 自动检测 Força A/B/C 命名并使用结构化模板(回路/重复组),而不是通用的3步锻炼。
    • 请求时 sport_type=HIIT,Garmin可能不会坚持自定义HIIT锻炼类型。服务器应用 cardio_training 为了提高可靠性并返回明确的元数据(requestedSportType, appliedSportType, warning).
    • 为中的计划会话保留内部本地索引 scheduled_workouts_index.json.
  3. garmin_activity_query

    • action=list 按日期范围显示活动。
    • action=detail 按id进行一项活动。

为什么需要本地计划索引

Garmin Connect公共/私有端点在锻炼CRUD时是稳定的,但在上市时不可靠 在此MCP场景中,按日期范围安排会话。为了保持粒度CRUD的健壮性,服务器 将MCP管理的计划会话存储在 scheduled_workouts_index.json.

配置

  • GARMIN_SESSION_PATH (默认值: session.json)
  • GARMIN_WORKOUT_INDEX_PATH (默认值: scheduled_workouts_index.json)

在本地运行

python3 server.py

测试

python3 -m unittest -v tests/test_server_tool_surface.py tests/test_scheduled_workouts_store.py