Skip to main content
Glama
sedoglia

Garmin Connect MCP Server

by sedoglia

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMIN_EMAILYesYour Garmin Connect email address
GARMIN_PASSWORDYesYour Garmin Connect password

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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
setup_credentialsA

Store Garmin Connect credentials encrypted in the OS native vault and log in immediately. Use this when the server reports that credentials are missing or invalid. The password is encrypted at rest and never written to a plain text file.

check_credentialsA

Report whether Garmin credentials are configured, which source they come from, where the encrypted data is stored and whether the session is authenticated. Never returns the password.

clear_credentialsA

Delete the encrypted credentials and OAuth tokens from secure storage and end the current session. Credentials supplied through the extension settings are not affected and must be cleared there.

list_recent_activitiesA

Get a list of recent activities from Garmin Connect. Each one is summarised: name, type, date, distance, duration, speed, heart rate, calories, elevation, steps and training effect. Use get_activity_details for one activity in full.

get_activity_detailsA

Get detailed information about a specific activity including splits, heart rate zones, and GPS data.

get_health_metricsA

Get daily health metrics including heart rate data and step count for a specific date.

get_sleep_dataA

Get a night of sleep: duration, sleep stages, quality score and the nightly summary. The per-minute series behind it (movement, heart rate, stress, body battery, HRV, respiration) are reported as counts only; set includeTimeSeries to inline them, or use the dedicated tool for the one series you need.

get_body_compositionA

Get body composition measurements (weight, BMI, body fat, muscle and bone mass) over a period, plus the average across the period.

get_devicesA

List the Garmin devices registered on the account with their id, model, serial and firmware version. Use get_device_settings for the configuration of a single device.

get_user_profileA

Get user profile information: display name, user name, full name and both account ids. profileId is the one other Garmin data is keyed by (the ownerId on an activity, the userProfilePK on wellness records); id is a separate internal identifier.

get_training_statusA

Get the training status for a date: status and feedback phrase, VO2 max, fitness trend, acute and chronic training load and the acute/chronic workload ratio.

get_stepsB

Get step count for a specific date. Returns the total number of steps recorded.

get_heart_rateA

Get detailed heart rate data for a specific date including resting HR, max HR, and HR zones.

get_hydrationA

Get daily hydration/water intake data for a specific date.

get_workoutsA

Get list of scheduled/planned workouts from Garmin Connect.

get_activity_splitsA

Get split/lap data for a specific activity including pace, distance, and time for each split.

get_stress_dataA

Get stress for a date on the 0-100 scale (0-25 resting, 26-50 low, 51-75 medium, 76-100 high). Returns average/max/min and the seconds spent in each band; set includeValues to also get the ~460 three-minute samples. The average and maximum are the day figures Garmin itself reports, so they match the Connect app; the minimum and the band seconds are derived from the samples. Use get_all_day_stress for the same day broken down hour by hour.

get_body_batteryA

Get Body Battery energy level data for a date range. Body Battery tracks energy levels (0-100) throughout the day based on sleep, stress, and activity. Shows charged/drained periods and sleep quality impact.

get_hrv_dataA

Get Heart Rate Variability (HRV) data for a specific date. HRV measures the variation in time between heartbeats, indicating recovery and stress levels.

get_respiration_dataA

Get respiration/breathing rate data for a specific date. Shows breaths per minute throughout the day and during sleep.

get_spo2_dataA

Get SpO2 (blood oxygen saturation) data for a specific date. Shows pulse oximetry readings as percentage (typically 95-100% is normal).

get_workout_by_idA

Get detailed information about a specific workout by its ID.

download_workoutA

Download a workout in FIT format for syncing to a Garmin device.

create_workoutA

Create a new structured workout in Garmin Connect. Supports complex interval workouts with warmup, cooldown, and repeat blocks.

Example for interval running workout: { "workoutName": "5x3min Intervals", "sportType": "running", "description": "Interval training", "workoutSegments": [{ "segmentOrder": 1, "sportType": "running", "workoutSteps": [ { "stepOrder": 1, "stepType": "warmup", "endCondition": "time", "endConditionValue": 600 }, { "stepOrder": 2, "stepType": "interval", "endCondition": "time", "endConditionValue": 180, "targetType": "pace" }, { "stepOrder": 3, "stepType": "recovery", "endCondition": "time", "endConditionValue": 120 }, { "stepOrder": 4, "stepType": "cooldown", "endCondition": "time", "endConditionValue": 600 } ] }] }

update_workoutA

Update an existing workout (name, description, or structure).

delete_workoutB

Delete a workout from Garmin Connect.

schedule_workoutA

Schedule an existing workout on a specific date. Returns a workoutScheduleId that can be used to unschedule.

unschedule_workoutA

Remove a scheduled workout from the calendar. IMPORTANT: Always unschedule before deleting a workout to avoid ghost entries.

upload_activityA

Upload an activity file (FIT, GPX, TCX format) to Garmin Connect.

create_manual_activityC

Create a manual activity entry in Garmin Connect.

set_activity_nameA

Change the name of an existing activity.

set_activity_typeB

Change the type/category of an existing activity.

delete_activityA

Delete an activity from Garmin Connect. WARNING: This action cannot be undone.

download_activityA

Download an activity in various formats (FIT, TCX, GPX, KML, CSV).

get_device_last_usedA

Get the Garmin device that uploaded data most recently, with its id, name and upload time.

get_device_settingsA

Get settings for a specific Garmin device.

get_all_day_stressA

Get the stress of a day hour by hour: average, maximum and stress band for each hour, plus the totals for the day. Use this to see when stress rose or fell; use get_stress_data for the day as a whole, and its includeValues for the individual three-minute samples.

get_floorsA

Get the floors climbed and descended on a date. Returns the daily totals; set includeBreakdown to also get the 96 quarter-hour intervals behind them.

get_intensity_minutesA

Get intensity minutes (moderate and vigorous) for a date, or for a date range when endDate is given, together with the weekly totals and goal.

get_max_metricsC

Get max metrics including VO2 max and related fitness data.

get_training_readinessB

Get training readiness score indicating how prepared your body is for training.

get_endurance_scoreB

Get endurance score based on recent training load.

get_fitness_ageA

Get fitness age estimation based on VO2 max and other metrics.

get_weigh_insA

Get weigh-in records for a date range.

add_weigh_inA

Add a new weigh-in record. Weight and body fat are stored; the water, muscle and bone percentages are accepted but Garmin discards them on a manual entry, keeping them only for measurements a smart scale uploads.

delete_weigh_inA

Permanently delete a single weigh-in record, identified by its weigh-in ID (the samplePk from get_weigh_ins or get_body_composition). The measurement cannot be recovered afterwards. Pass date when the weigh-in was back-dated to a day other than the one it was entered on.

get_blood_pressureA

Get blood pressure readings for a date range.

set_blood_pressureB

Record a blood pressure reading.

delete_blood_pressureA

Delete a blood pressure reading. Use get_blood_pressure with the /all endpoint to find the version ID.

get_activity_weatherC

Get weather conditions during an activity.

get_activity_hr_zonesA

Get time spent in each heart rate zone during an activity.

get_activity_exercise_setsA

Get exercise sets from a strength training activity.

get_goalsA

Get user goals. Without a status every status is queried in turn and the results are merged, each goal carrying the status it was found under.

get_adhoc_challengesC

Get ad-hoc challenges history.

get_badge_challengesB

Get available badge challenges.

get_earned_badgesA

Get all badges earned by the user, as id, key, name, category, difficulty, points and the date earned. Set includeDetails for the full badge records.

get_personal_recordsA

Get all personal records (PRs). Each record carries a typeId identifying its category, its value, the date it was set and, for records set during an activity, that activity.

get_race_predictionsA

Get predicted race times for 5K, 10K, half marathon, and marathon based on current fitness.

get_gear_statsA

Get usage statistics for a specific piece of gear. Note: Requires the gear UUID which can be found in Garmin Connect web interface URL.

link_gear_to_activityA

Link a piece of gear to an activity. Note: Requires the gear UUID which can be found in Garmin Connect web interface URL.

get_progress_summaryB

Get aggregated progress summary between two dates.

get_daily_summaryA

Get a compact daily summary: steps and goal, calories, distance, floors, intensity minutes, resting/min/max heart rate, stress, body battery and time breakdown. Use get_heart_rate for the full heart rate series.

get_user_summaryB

Get comprehensive user activity summary for a specific date including steps, calories, distance, active minutes, and more.

get_steps_dataA

Get detailed step data chart for a specific date with timestamps.

get_daily_stepsA

Get daily step counts for a date range (max 28 days per request, auto-chunked for longer ranges).

get_activities_by_dateA

Get all activities within a date range, optionally filtered by type. Each one is summarised the same way list_recent_activities summarises them.

get_activity_typed_splitsA

Get typed splits for an activity (more detailed than regular splits, useful for bouldering, strength training, etc.).

get_rhr_dayC

Get resting heart rate for a specific day.

get_hill_scoreB

Get hill score data indicating climbing/vertical performance.

get_all_day_eventsA

Get all daily events including auto-detected activities that may not have been recorded.

get_body_battery_eventsA

Get Body Battery events for a date (sleep, activities, naps that affected energy levels).

add_hydration_dataB

Add hydration/water intake data in milliliters.

get_available_badgesA

Get all badges available to earn, as id, key, name, category, difficulty, points and, where set, the active window and progress. Set includeDetails for the full badge records.

get_in_progress_badgesA

Get badges that are currently in progress (started but not completed).

get_available_badge_challengesB

Get available badge challenges to join.

get_non_completed_badge_challengesA

Get badge challenges that have not been completed yet.

get_in_progress_virtual_challengesA

Get virtual challenges that are currently in progress.

remove_gear_from_activityA

Remove/unlink a piece of gear from an activity. Note: Requires the gear UUID from Garmin Connect web interface.

get_gear_activitiesB

Get activities where a specific piece of gear was used. Note: Requires the gear UUID from Garmin Connect web interface.

get_training_plansB

Get all available training plans.

get_training_plan_by_idB

Get detailed information about a specific training plan.

get_menstrual_dataA

Get menstrual cycle data for a specific date.

get_pregnancy_summaryB

Get pregnancy tracking summary/snapshot data.

request_reloadA

Request reload of data for a specific date (useful for older data that was offloaded by Garmin).

get_activity_typesA

Get all activity types available in Garmin Connect.

get_primary_training_deviceB

Get information about the primary training device and device priorities.

count_activitiesA

Count the activities in Garmin Connect, over the whole history or over a date range.

get_fitness_statsA

Get aggregated fitness statistics between two dates.

get_all_gearA

Get complete list of all gear/equipment with their UUIDs. This solves the UUID problem - you can now discover all gear without needing to manually find UUIDs in the web interface.

update_gearC

Update existing gear/equipment details.

delete_gearA

Delete a piece of gear/equipment. WARNING: This cannot be undone.

get_gear_typesA

Get all available gear/equipment types (e.g., Shoes, Bike, Golf Clubs, Other). Returns type names and primary keys used when creating gear.

get_gear_makesA

Get all available gear brands/makes (e.g., Nike, Adidas, ASICS, Brooks). Returns make names and primary keys.

get_gear_collectionsA

Get all gear collections. Collections group gear items that are used together (e.g., running kit, bike components).

get_gear_collectionA

Get detailed information about a specific gear collection, including the gear items in the collection and associated activity types.

create_gear_collectionB

Create a new gear collection to group equipment used together (e.g., running kit, bike components). Requires a name and first use date.

update_gear_collectionA

Update an existing gear collection. Can change name, add/remove gear items, or change associated activity types.

delete_gear_collectionA

Delete a gear collection. WARNING: This cannot be undone. The gear items in the collection will NOT be deleted.

get_activity_commentsB

Get all comments on an activity.

set_activity_privacyA

Change the privacy of an activity. "subscribers" is what Garmin Connect shows as "connections only". Read the current level from accessControlRuleDTO in get_activity_details before changing it.

get_training_loadA

Get the monthly training load balance (low aerobic, high aerobic, anaerobic) against its target ranges. This is a snapshot taken on endDate, not an aggregate over the range.

get_load_ratioB

Get acute/chronic workload ratio indicating training balance and injury risk.

get_performance_conditionA

Get the performance condition score for a date. Garmin records this per activity rather than daily, so it is usually only available through get_activity_details.

get_sleep_movementB

Get movement data during sleep including restless moments.

get_device_alarmsA

Get the alarms configured on a Garmin device, with time, repeat days and whether each one is on. Without a deviceId every registered device is reported.

get_coursesA

Get saved routes/courses from Garmin Connect.

compare_activitiesA

Compare 2-5 activities side by side: distance, duration, speed, heart rate, calories, elevation, steps and training effect.

find_similar_activitiesA

Find activities similar to a reference activity by type, distance and duration (within 20% tolerance). Returns the closest matches first, each with its full metrics and a similarity score.

analyze_training_periodA

Comprehensive analysis of training trends, volume, and patterns over a date range.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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/sedoglia/garmin-mcp-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server