go garmin
Garmin Connect API的Go客户端库和CLI。
安装
先决条件
- 转到1.25或更高版本(安装Go)
$GOPATH/bin(通常~/go/bin)在你的路径中
安装CLI
go install github.com/llehouerou/go-garmin/cmd/garmin@latest验证安装:
garmin --version从源代码构建
git clone https://github.com/llehouerou/go-garmin.git
cd go-garmin
go build -o garmin ./cmd/garmin
./garmin --helpCLI使用情况
认证
# Login to Garmin Connect
garmin login -email=your@email.com -password=yourpassword
# Logout
garmin logout命令
# Sleep data
garmin sleep [date]
# Wellness data
garmin wellness stress [date]
garmin wellness body-battery [date]
garmin wellness heart-rate [date]
garmin wellness spo2 [date]
garmin wellness respiration [date]
garmin wellness intensity-minutes [date]
# Activities
garmin activities list [--start=0] [--limit=20]
garmin activities get
garmin activities types
garmin activities splits
garmin activities weather
garmin activities details
garmin activities hr-zones
garmin activities power-zones
garmin activities exercise-sets
# Weight and HRV
garmin weight daily [date]
garmin weight range --start=YYYY-MM-DD --end=YYYY-MM-DD
garmin hrv daily [date]
garmin hrv range --start=YYYY-MM-DD --end=YYYY-MM-DD
# Training metrics
garmin metrics readiness [date]
garmin metrics vo2max [date]
garmin metrics endurance [date]
garmin metrics hill [date]
garmin metrics training-status [date]
garmin metrics load-balance [date]
garmin metrics acclimation [date]
garmin metrics race-predictions [display-name]
# Fitness age
garmin fitnessage stats --start=YYYY-MM-DD --end=YYYY-MM-DD
# Fitness stats
garmin fitnessstats get [--start=YYYY-MM-DD] [--end=YYYY-MM-DD] [--aggregation=weekly] [--metrics=calories,distance,duration]
garmin fitnessstats activities [--start=YYYY-MM-DD] [--end=YYYY-MM-DD] [--activity_type=running] [--metrics=name,startLocal,activityType]
# Biometric data
garmin biometric lactate-threshold
garmin biometric ftp
garmin biometric hr-zones
garmin biometric power-weight [date]
# Devices
garmin devices list
garmin devices settings
# User profile
garmin profile social
garmin profile settings
garmin profile display
# Workouts
garmin workouts list [--start=0] [--limit=20]
garmin workouts get
garmin workouts create --file=workout.json
garmin workouts create --json='{"workoutName": "..."}'
cat workout.json | garmin workouts create
garmin workouts update --file=workout.json
garmin workouts delete
garmin workouts schedule
garmin workouts unschedule
# Exercise Library (for strength training workouts)
garmin exercises categories # List all exercise categories
garmin exercises muscles # List all muscle groups
garmin exercises equipment # List all equipment types
garmin exercises list [--category=BENCH_PRESS] [--muscle=CHEST] [--equipment=DUMBBELL]
garmin exercises get # Get exercise details
# Calendar (month is 0-indexed: January=0)
garmin calendar get --year=2026 [--month=0] [--day=28] [--start=1]所有命令都输出JSON以便于解析。
MCP服务器(LLM集成)
CLI包括一个MCP(模型上下文协议)服务器,允许Claude等LLM助手访问您的Garmin数据。
先决条件
- 安装CLI(请参阅 安装)
- 登录一次以创建会话:
garmin login -email=your@email.com -password=yourpasswordMCP服务器重用您的CLI会话,因此您只需登录一次。
克劳德代码
增添 ~/.claude.json (全球)或 .claude/settings.json (项目):
{
"mcpServers": {
"garmin": {
"command": "garmin",
"args": ["mcp"]
}
}
}克劳德桌面版
增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"garmin": {
"command": "garmin",
"args": ["mcp"]
}
}
}光标
添加到光标设置(设置>MCP服务器):
{
"garmin": {
"command": "garmin",
"args": ["mcp"]
}
}故障排除
如果MCP服务器不工作:
- 验证CLI是否在您的PATH中:
which garmin - 检查您是否已登录:
garmin sleep应返回数据 - 如果需要,请使用二进制文件的完整路径:
{
"mcpServers": {
"garmin": {
"command": "/full/path/to/garmin",
"args": ["mcp"]
}
}
}可用工具
配置后,您可以向Claude提出以下问题:
- “我昨晚睡得怎么样?”
- “我今天的训练准备情况如何?”
- “显示我最近的活动”
- “我目前的最大摄氧量是多少?”
- “我今天的压力水平怎么样?”
MCP服务器公开了这些类别中的52个工具:
| 类别 | 工具 |
|---|---|
| 睡觉 | get_sleep |
| 健康 | get_stress, get_body_battery, get_heart_rate, get_spo2, get_respiration, get_intensity_minutes |
| 活动 | list_activities, get_activity, get_activity_types, get_activity_splits, get_activity_weather, get_activity_details, get_activity_hr_zones, get_activity_power_zones, get_activity_exercise_sets |
| 重量 | get_weight |
| HRV | get_hrv |
| 设备 | list_devices, get_device_settings |
| 指标 | get_training_readiness, get_training_status, get_vo2max, get_endurance_score, get_hill_score, get_training_load_balance, get_heat_altitude_acclimation, get_race_predictions |
| 健身年龄 | get_fitness_age_stats |
| 健身统计 | get_fitness_stats, get_fitness_stats_activities |
| 生物识别 | get_lactate_threshold, get_cycling_ftp, get_heart_rate_zones, get_power_to_weight |
| 锻炼 | list_workouts, get_workout, create_workout, update_workout, delete_workout, schedule_workout, unschedule_workout |
| 练习题 | list_exercise_categories, list_muscle_groups, list_equipment_types, list_exercises, get_exercise |
| 日历 | get_calendar |
| 个人资料 | get_social_profile, get_user_settings, get_profile_settings |
| 公用事业 | get_current_date |
LLM动力训练创建
MCP集成支持对话式锻炼创建。让克劳德用自然语言创建训练:
跑步训练:
“创建一个45分钟的间歇训练,包括5分钟的热身、6x3分钟的阈值训练和2分钟的恢复,以及冷却”
“在心率2区为我进行90分钟的长跑锻炼”
力量训练计划:
“创建推压日训练:卧推4x8,顶推3x10,三头肌深蹲3x12,两组之间休息90秒”
“通过复合动作,针对胸部、背部和腿部进行全身力量训练”
“创建一个我可以在家做的仅哑铃上半身锻炼”
智能锻炼计划:
“看看我最近的活动,制定一个适合明天的恢复训练”
“根据我的训练负荷,为我的下一次训练提出建议并制定锻炼计划”
LLM使用锻炼库(1794个锻炼)查找有效的锻炼类别和名称,然后构建格式正确的锻炼,直接同步到您的Garmin设备。
对话示例
You: Create a chest and triceps workout with 3 exercises each, 4 sets of 10 reps
Claude: I'll create that workout for you. Let me first find the best exercises...
[Uses list_exercises with muscle=CHEST, then muscle=TRICEPS]
I've found good options. Creating your workout now...
[Uses create_workout with the structured JSON]
Done! I've created "Chest & Triceps" workout with:
Chest:
- Barbell Bench Press: 4x10
- Incline Dumbbell Press: 4x10
- Cable Flyes: 4x10
Triceps:
- Tricep Dips: 4x10
- Skull Crushers: 4x10
- Tricep Pushdowns: 4x10
Rest: 90 seconds between sets
The workout is now in your Garmin Connect account. Would you like me to schedule it?锻炼类型参考
MCP工具支持所有Garmin锻炼类型:
| 运动类型 | ID | 功能 |
|---|---|---|
| 跑步 | 1 | 速度区、心率区、距离/时间目标 |
| 自行车 | 2 | 动力区、节奏目标、距离/时间 |
| 游泳 | 4 | 泳姿类型、设备、游泳池长度 |
| 力量训练 | 5 | 练习库、重复次数、集合、休息时间 |
| 有氧运动 | 6 | HR区域,时间目标 |
| 瑜伽 | 7 | 基于时间的流动 |
| 普拉提 | 8 | 基于时间的序列 |
| HIIT | 9 | 间隔、工作/休息比率 |
图书馆使用情况
package main
import (
"context"
"fmt"
"time"
"github.com/llehouerou/go-garmin"
)
func main() {
client := garmin.New(garmin.Options{})
// Login
err := client.Login(context.Background(), "email", "password")
if err != nil {
panic(err)
}
// Get today's sleep data
sleep, err := client.Sleep.GetDaily(context.Background(), time.Now())
if err != nil {
panic(err)
}
fmt.Printf("Sleep score: %d\n", sleep.SleepScores.Overall.Value)
}建筑
此项目使用 声明性端点注册表 系统。所有端点都是一次性定义的 endpoint/definitions/ 并自动生成:
- CLI命令(通过
endpoint.CLIGenerator) - MCP工具(通过
endpoint.MCPGenerator) - 验证规则(通过
endpoint.Validator)
看 CLAUDE.md 有关添加新端点的说明。
许可证
麻省理工学院
