garmin-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | HTTP bind address | 0.0.0.0 |
| PORT | No | HTTP bind port | 8000 |
| GARMIN_EMAIL | No | Fallback login email; fails if your account has MFA | |
| GARMIN_IS_CN | No | Use garmin.cn | false |
| GARMIN_TOKENS | No | Token JSON from `garmin-mcp-login` | |
| GARMIN_PASSWORD | No | Fallback login password; fails if your account has MFA | |
| KV_REST_API_URL | No | Upstash Redis URL for refreshed tokens instead of disk | |
| MCP_AUTH_SECRET | No | Required for HTTP mode, 24+ characters | |
| GARMIN_CACHE_TTL | No | Seconds to cache Garmin responses | 300 |
| GARMIN_TOKEN_DIR | No | Where refreshed tokens are kept (use a volume) | ~/.garmin-tokens |
| KV_REST_API_TOKEN | No | Upstash Redis token for refreshed tokens instead of disk | |
| MCP_ALLOWED_HOSTS | No | Comma-separated public hostnames for Host header checks | |
| GARMIN_ALLOW_WRITES | No | Enable write tools | false |
| UPSTASH_REDIS_REST_URL | No | Upstash Redis URL for refreshed tokens instead of disk (alternative to KV_REST_API_URL) | |
| UPSTASH_REDIS_REST_TOKEN | No | Upstash Redis token for refreshed tokens instead of disk (alternative to KV_REST_API_TOKEN) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_profileB | The user's name, unit system, devices and heart-rate zones. |
| get_daily_summaryC | Steps, calories, resting HR, stress, Body Battery, intensity minutes, SpO2 for one day. |
| get_sleepB | Sleep for the night ending on |
| get_hrvB | Overnight HRV: last-night average, 7-day average, baseline and status. |
| get_body_batteryB | Body Battery charged/drained/high/low per day (defaults to the last 7 days). |
| get_stressB | Average and max stress for one day. |
| get_heart_rateA | Resting, min and max heart rate for one day (raw=true for the intraday series). |
| get_body_compositionB | Weight and body composition entries (defaults to the last 30 days). |
| get_health_rangeA | Per-day table of health metrics for trend questions (defaults to the last 7 days). One row per day; much cheaper for the conversation than calling the day tools in a loop. |
| get_training_readinessC | Training readiness score and its contributing factors for a day. |
| get_training_statusC | Training status, acute/chronic load, load focus, VO2max and fitness age. |
| get_race_predictionsC | Garmin's predicted 5K, 10K, half marathon and marathon times. |
| get_personal_recordsB | The user's personal records across sports. |
| list_activitiesB | Activities between two dates, newest first (defaults to the last 14 days). |
| get_recent_activitiesC | The most recent activities. |
| get_activityB | One activity in detail: summary plus optional laps/splits, time in HR zones, weather. |
| list_workoutsC | Saved workouts in the user's Garmin library. |
| get_scheduled_workoutsB | Workouts and other items on the Garmin calendar for a month. |
| create_workoutA | Create a structured workout in Garmin Connect, optionally scheduling it on a date. |
| schedule_workoutA | Put an existing saved workout on the Garmin calendar. |
| unschedule_workoutA | Remove a workout from the calendar (the saved workout itself stays). |
| delete_workoutC | Delete a saved workout from the user's Garmin library. |
| update_activityB | Rename an activity and/or set its description. |
| add_weigh_inC | Log a weight measurement. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| morning_check | How recovered am I today, and what should I train? |
| weekly_review | Review my last week of training and recovery. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Most tools have clearly distinct purposes by resource and action, such as sleep, HRV, stress, and training readiness. The main overlap is between list_activities and get_recent_activities, and to a lesser extent get_daily_summary versus the individual day-level metric tools, but the descriptions make the intended use mostly clear.
Tool names consistently use snake_case with predictable verb_noun or get_noun patterns: get_sleep, list_activities, create_workout, schedule_workout, delete_workout, update_activity. Minor verb variation such as add_weigh_in does not meaningfully break the pattern.
At 24 tools the surface is somewhat heavy, but the breadth is justified by a wide health and fitness domain spanning daily metrics, training, activities, and workouts. It is near the upper reasonable range but not excessive for a comprehensive Garmin integration.
The server covers core Garmin workflows: health metrics, trends, sleep, HRV, body battery, training status, activities, and workout scheduling/deletion. Minor gaps remain, such as updating an existing workout or retrieving a single saved workout in detail, but agents can work around these for most tasks.