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. |
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": 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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