garmin-connect-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_EMAIL | Yes | The email address associated with your Garmin Connect account. | |
| GARMIN_PASSWORD | Yes | The password associated with your Garmin Connect account. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_activitiesA | Get recent activities with pagination. Returns activity summaries: type, duration, distance, calories, heart rate |
| get_activities_by_dateB | Search activities within a date range, optionally filtered by activity type (running, cycling, etc.) |
| get_last_activityC | Get the most recent activity |
| count_activitiesA | Get total number of activities |
| get_activityB | Get summary data for a specific activity |
| get_activity_detailsC | Get detailed activity metrics: HR, pace, elevation, cadence, power time series data |
| get_activity_splitsB | Get per-km or per-mile split data for an activity |
| get_activity_weatherB | Get weather conditions during an activity: temperature, humidity, wind, condition |
| get_activity_hr_zonesA | Get time spent in each heart rate zone during an activity |
| get_activity_exercise_setsA | Get exercise set details for strength training activities: reps, weight, duration per set |
| get_activity_typesA | Get all available activity types (running, cycling, swimming, etc.) |
| get_activity_gearA | Get gear/equipment used during a specific activity |
| get_activity_typed_splitsA | Get typed split data for an activity (e.g. active vs rest intervals) |
| get_activity_split_summariesB | Get split summary data for an activity with aggregate stats per split |
| get_activity_power_in_timezonesB | Get power time in zones for cycling/running power activities |
| get_progress_summaryB | Get fitness progress stats over a date range: distance, duration, or calories grouped by activity type |
| get_daily_summaryA | Get full daily summary: steps, calories, distance, floors, active minutes, heart rate, stress, body battery |
| get_stepsB | Get step count for a specific date |
| get_steps_chartB | Get detailed intraday step data throughout the day (step chart) |
| get_heart_rateA | Get daily heart rate data: resting HR, max HR, min HR, and time series throughout the day |
| get_resting_heart_rateB | Get resting heart rate data for a specific date |
| get_stressA | Get daily stress levels: overall score, time in rest/low/medium/high stress, and time series. Single date; for ranges use get_stress_range |
| get_body_batteryA | Get Body Battery energy levels: charged, drained, highest, lowest. endDate defaults to startDate if omitted |
| get_body_battery_eventsA | Get Body Battery charge and drain events for a day (what charged/drained your battery) |
| get_respirationA | Get daily respiration rate data throughout the day. Single date; for ranges use get_respiration_range |
| get_spo2A | Get blood oxygen saturation (SpO2) data for a specific date. Single date; for ranges use get_spo2_range |
| get_intensity_minutesA | Get moderate and vigorous intensity minutes for a date |
| get_floorsB | Get floors climbed chart data for a specific date |
| get_hydrationC | Get daily hydration data (water intake) |
| get_daily_eventsC | Get daily wellness events for a specific date |
| get_daily_steps_rangeA | Get daily step counts over a date range for trend analysis. Auto-chunks ranges >28 days |
| get_weekly_stepsA | Get weekly aggregated step counts for trend analysis. Defaults to 52 weeks (1 year). Max 52 weeks |
| get_weekly_stressA | Get weekly aggregated stress data for trend analysis. Defaults to 52 weeks (1 year). Max 52 weeks |
| get_weekly_intensity_minutesC | Get weekly intensity minutes over a date range |
| get_sleep_dataA | Get detailed sleep data for a single night: duration, sleep stages (deep, light, REM, awake), sleep score, bed/wake times. For multiple nights use get_sleep_data_range |
| get_sleep_data_rawB | Get raw sleep data directly from the wellness service with full detail including heart rate and SpO2 during sleep |
| get_body_compositionB | Get body composition data over a date range: weight, BMI, body fat %, muscle mass, bone mass, body water % |
| get_latest_weightB | Get the most recent weight entry |
| get_daily_weigh_insB | Get all weigh-in entries for a specific date |
| get_weigh_insB | Get weigh-in records over a date range |
| get_blood_pressureA | Get blood pressure readings over a date range |
| get_vo2maxA | Get VO2 Max estimate for a date (running and cycling). Data may not be available for today, use yesterday. For ranges use get_vo2max_range |
| get_training_readinessA | Get Training Readiness score: combines sleep, recovery, training load and HRV. Data may not be available for today, use yesterday. For ranges use get_training_readiness_range |
| get_training_statusA | Get Training Status: productive, maintaining, detraining, peaking, recovery, overreaching. Includes training load. Data may not be available for today |
| get_hrvA | Get Heart Rate Variability (HRV) data. Key recovery indicator. Data may not be available for today, use yesterday. For ranges use get_hrv_range |
| get_endurance_scoreA | Get Endurance Score. Single date: omit endDate. Date range: provide both with optional aggregation (daily/weekly/monthly) |
| get_hill_scoreB | Get Hill Score. Single date: omit endDate. Date range: provide both with optional aggregation (daily/weekly/monthly) |
| get_race_predictionsA | Get race time predictions for 5K, 10K, half marathon, and marathon. Omit dates for latest. Provide dates for historical (daily/monthly) |
| get_fitness_ageC | Get Garmin Fitness Age estimate based on fitness level, activity, and body metrics |
| get_personal_recordsA | Get personal records: longest run, fastest 5K/10K/half/full marathon, longest ride |
| get_lactate_thresholdA | Get lactate threshold data: HR and pace. Omit dates for latest. Provide dates for historical trend with aggregation (daily/weekly/monthly) |
| get_cycling_ftpA | Get latest Functional Threshold Power (FTP) for cycling |
| get_user_profileA | Get user social profile: name, location, profile image, activity preferences, level |
| get_user_settingsA | Get user settings: measurement system, time/date format, sleep schedule, HR zones, hydration preferences |
| get_devicesA | Get all registered Garmin devices: model, firmware, last sync |
| get_device_settingsB | Get settings and configuration for a specific Garmin device |
| get_device_last_usedA | Get the last used Garmin device info |
| get_primary_training_deviceC | Get the primary training device info |
| get_device_solar_dataA | Get solar charging data for solar-equipped Garmin devices |
| get_gearA | Get all gear/equipment: shoes, bikes, and other tracked equipment |
| get_gear_statsB | Get usage statistics for a specific gear item (total distance, activities) |
| get_goalsA | Get active goals: step goals, activity goals, weight goals, and their progress |
| get_earned_badgesA | Get all earned badges and achievements |
| get_workoutsB | Get saved workouts/training plans |
| get_workoutA | Get a specific workout definition by ID |
| get_gear_activitiesA | Get activities associated with a specific gear item (e.g. runs with a specific pair of shoes) |
| get_gear_defaultsA | Get default gear assignments per activity type |
| get_sleep_data_rangeA | Get sleep data over a date range (day-by-day). Returns array of {date, data} records with sleep stages, score, duration |
| get_hrv_rangeB | Get HRV data over a date range (day-by-day). Returns array of {date, data} records |
| get_stress_rangeA | Get daily stress data over a date range (day-by-day). Returns array of {date, data} records |
| get_spo2_rangeA | Get SpO2 (blood oxygen) data over a date range (day-by-day). Returns array of {date, data} records |
| get_respiration_rangeA | Get respiration data over a date range (day-by-day). Returns array of {date, data} records |
| get_training_readiness_rangeA | Get Training Readiness data over a date range (day-by-day). Returns array of {date, data} records |
| get_vo2max_rangeA | Get VO2 Max data over a date range (day-by-day). Returns array of {date, data} records |
| get_daily_health_snapshotA | Get complete daily health snapshot in a single call: summary, heart rate, stress, body battery, sleep, HRV, respiration, SpO2, steps, floors, intensity minutes. Calls ~11 endpoints in parallel. Use yesterday if today has no data yet |
| get_training_plansA | Get all training plans from Garmin Coach or custom plans |
| get_training_plan_by_idA | Get a specific training plan by ID with full schedule and workout details |
| get_adaptive_training_plan_by_idB | Get an adaptive (Garmin Coach) training plan by ID |
| get_scheduled_workout_by_idB | Get a specific scheduled workout by ID from a training plan |
| get_menstrual_calendar_dataA | Get menstrual cycle calendar data for a date range: cycle phases, predictions, symptoms |
| get_menstrual_data_for_dateB | Get menstrual cycle day view for a specific date: current phase, symptoms, predictions |
| get_pregnancy_summaryB | Get pregnancy tracking summary data |
| get_lifestyle_logging_dataC | Get daily lifestyle logging data for a date |
| get_available_badgesA | Get all available badges that can be earned |
| get_adhoc_challengesB | Get historical ad-hoc challenges the user has participated in |
| get_badge_challengesA | Get completed badge challenges |
| get_available_badge_challengesB | Get available badge challenges that can be joined |
| get_non_completed_badge_challengesA | Get badge challenges that are started but not yet completed |
| get_inprogress_virtual_challengesB | Get virtual challenges currently in progress |
| set_activity_nameB | Rename an activity |
| create_manual_activityA | Create a manual activity entry. Use get_activity_types to find valid activityTypeKey values |
| delete_activityA | Delete an activity permanently. This action cannot be undone |
| add_weigh_inC | Record a weight measurement |
| set_hydrationC | Set daily hydration intake in milliliters |
| set_blood_pressureB | Record a blood pressure measurement with systolic, diastolic, and pulse |
| add_gear_to_activityB | Link a gear item (shoes, bike) to an activity |
| remove_gear_from_activityB | Unlink a gear item from an activity |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nicolasvegam/garmin-connect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server