Garmin Connect MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_EMAIL | Yes | Your Garmin Connect email address | |
| GARMIN_PASSWORD | Yes | Your Garmin Connect password |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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_activitiesB | Get a list of recent activities from Garmin Connect. Returns activity summaries including name, type, distance, duration, and date. |
| get_activity_detailsB | Get detailed information about a specific activity including splits, heart rate zones, and GPS data. |
| get_health_metricsB | Get daily health metrics including heart rate data and step count for a specific date. |
| get_sleep_dataB | Get detailed sleep information including duration, sleep stages, and quality score. |
| 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_profileB | Get user profile information including display name and account details. |
| get_training_statusB | 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_workoutsB | Get list of scheduled/planned workouts from Garmin Connect. |
| get_activity_splitsB | Get split/lap data for a specific activity including pace, distance, and time for each split. |
| get_stress_dataB | Get stress level data for a specific date. Returns stress levels throughout the day (0-100 scale), with 0-25 resting, 26-50 low, 51-75 medium, 76-100 high stress. Includes overall stress level, durations by category, and detailed timestamp values. |
| 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_idB | 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_workoutB | 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_workoutB | 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_activityB | Upload an activity file (FIT, GPX, TCX format) to Garmin Connect. |
| create_manual_activityB | Create a manual activity entry in Garmin Connect. |
| set_activity_nameB | 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_settingsB | Get settings for a specific Garmin device. |
| get_all_day_stressC | Get detailed all-day stress data with full breakdown. |
| get_floorsA | Get floors climbed and descended for a specific date, with the 15-minute breakdown. |
| 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_metricsB | 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_scoreC | Get endurance score based on recent training load. |
| get_fitness_ageB | Get fitness age estimation based on VO2 max and other metrics. |
| get_weigh_insB | Get weigh-in records for a date range. |
| add_weigh_inA | Add a new weigh-in record with optional body composition data. |
| delete_weigh_inC | Delete a weigh-in record. |
| get_blood_pressureB | Get blood pressure readings for a date range. |
| set_blood_pressureC | 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_weatherB | 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_challengesB | Get ad-hoc challenges history. |
| get_badge_challengesC | Get available badge challenges. |
| get_earned_badgesA | Get all badges earned by the user. |
| get_personal_recordsB | 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_predictionsB | 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_activityB | 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_summaryC | 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_summaryC | Get comprehensive user activity summary for a specific date including steps, calories, distance, active minutes, and more. |
| get_steps_dataB | 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_dateB | Get all activities within a date range with optional filtering by type. |
| get_activity_typed_splitsA | Get typed splits for an activity (more detailed than regular splits, useful for bouldering, strength training, etc.). |
| get_rhr_dayB | Get resting heart rate for a specific day. |
| get_hill_scoreC | Get hill score data indicating climbing/vertical performance. |
| get_all_day_eventsB | Get all daily events including auto-detected activities that may not have been recorded. |
| get_body_battery_eventsB | 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. |
| get_in_progress_badgesA | Get badges that are currently in progress (started but not completed). |
| get_available_badge_challengesC | Get available badge challenges to join. |
| get_non_completed_badge_challengesC | Get badge challenges that have not been completed yet. |
| get_in_progress_virtual_challengesB | 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_activitiesA | Get activities where a specific piece of gear was used. Note: Requires the gear UUID from Garmin Connect web interface. |
| get_training_plansA | Get all available training plans. |
| get_training_plan_by_idB | Get detailed information about a specific training plan. |
| get_menstrual_dataB | 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_statsC | 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_collectionA | 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_commentsA | 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. |
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/sedoglia/garmin-mcp-ts'
If you have feedback or need assistance with the MCP directory API, please join our Discord server