WillRaphaelson/garmin-mcp
If you are the rightful owner of garmin-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Garmin Connect MCP Server is a comprehensive FastMCP server that provides access to all Garmin Connect data and functionality through the Model Context Protocol (MCP).
Garmin Connect MCP Server
A comprehensive FastMCP server that provides access to all Garmin Connect data and functionality through the Model Context Protocol (MCP).
Features
This server provides tools for accessing and managing all aspects of your Garmin Connect data:
User Profile and Basic Information
get_full_name()- Get user's full nameget_unit_system()- Get user's unit system preferenceget_user_profile()- Get all user settingsget_userprofile_settings()- Get user settings
Device Management
get_devices()- Get all available devicesget_device_last_used()- Get device last used informationget_device_settings(device_id)- Get device settings for a specific deviceget_device_alarms()- Get list of active alarms from all devicesget_primary_training_device()- Get detailed information about primary training devicesget_device_solar_data(device_id, startdate, enddate)- Get solar data for compatible devices
Health and Wellness Data
get_stats(cdate)- Get user activity summary for a specific dateget_user_summary(cdate)- Get user activity summary for a specific dateget_steps_data(cdate)- Get steps data for a specific dateget_daily_steps(start, end)- Get steps data between two datesget_heart_rates(cdate)- Get heart rate data for a specific dateget_rhr_day(cdate)- Get resting heart rate data for a specific dateget_hrv_data(cdate)- Get Heart Rate Variability (HRV) data for a specific dateget_sleep_data(cdate)- Get sleep data for a specific dateget_stress_data(cdate)- Get stress data for a specific dateget_all_day_stress(cdate)- Get all day stress data for a specific dateget_body_battery(startdate, enddate)- Get body battery values between datesget_body_battery_events(cdate)- Get body battery events for a specific dateget_body_composition(startdate, enddate)- Get body composition data between datesget_stats_and_body(cdate)- Get activity data and body composition for a specific dateget_hydration_data(cdate)- Get hydration data for a specific dateget_respiration_data(cdate)- Get respiration data for a specific dateget_spo2_data(cdate)- Get SpO2 data for a specific dateget_floors(cdate)- Get floors data for a specific dateget_intensity_minutes_data(cdate)- Get Intensity Minutes data for a specific dateget_max_metrics(cdate)- Get max metric data (like vo2MaxValue and fitnessAge)get_fitnessage_data(cdate)- Get Fitness Age data for a specific dateget_training_readiness(cdate)- Get training readiness data for a specific dateget_training_status(cdate)- Get training status data for a specific dateget_hill_score(startdate, enddate)- Get hill score data between datesget_endurance_score(startdate, enddate)- Get endurance score data between dates
Weight and Body Composition Management
get_weigh_ins(startdate, enddate)- Get weigh-ins between two datesget_daily_weigh_ins(cdate)- Get weigh-ins for a specific dateadd_weigh_in(weight, unitKey, timestamp)- Add a weigh-inadd_weigh_in_with_timestamps(weight, unitKey, dateTimestamp, gmtTimestamp)- Add a weigh-in with explicit timestampsdelete_weigh_ins(cdate, delete_all)- Delete weigh-ins for a specific datedelete_weigh_in(weight_pk, cdate)- Delete a specific weigh-inadd_body_composition(timestamp, weight, ...)- Add body composition dataadd_hydration_data(value_in_ml, timestamp, cdate)- Add hydration data in ml
Blood Pressure and Medical Data
get_blood_pressure(startdate, enddate)- Get blood pressure data between datesset_blood_pressure(systolic, diastolic, pulse, timestamp, notes)- Add blood pressure measurementdelete_blood_pressure(version, cdate)- Delete specific blood pressure measurementget_menstrual_calendar_data(startdate, enddate)- Get menstrual calendar data between datesget_menstrual_data_for_date(fordate)- Get menstrual data for a specific dateget_pregnancy_summary()- Get pregnancy summary data
Gear and Equipment Management
get_gear(userProfileNumber)- Get all user gearget_gear_defaults(userProfileNumber)- Get gear defaults for a user profileget_gear_ativities(gearUUID, limit)- Get activities where specific gear was usedget_gear_stats(gearUUID)- Get statistics for specific gearset_gear_default(activityType, gearUUID, defaultGear)- Set gear as default for an activity type
Goals and Challenges
get_goals(status, start, limit)- Get goals based on statusget_adhoc_challenges(start, limit)- Get adhoc challenges for current userget_available_badge_challenges(start, limit)- Get available badge challengesget_badge_challenges(start, limit)- Get badge challenges for current userget_non_completed_badge_challenges(start, limit)- Get non-completed badge challenges for current userget_earned_badges()- Get earned badges for current userget_personal_record()- Get personal records for current userget_inprogress_virtual_challenges(start, limit)- Get in-progress virtual challenges for current user
Workouts and Training
get_workouts(start, end)- Get workouts from start to endget_workout_by_id(workout_id)- Get workout by IDdownload_workout(workout_id)- Download workout by IDget_race_predictions(startdate, enddate, _type)- Get race predictions for 5k, 10k, half marathon and marathonget_progress_summary_between_dates(startdate, enddate, metric, groupbyactivities)- Get progress summary data between specific dates
Activity Management and Upload/Download
get_activities(start, limit, activitytype)- Get recent activitiesget_activities_by_date(startdate, enddate, activitytype, sortorder)- Get activities between specific datesget_activities_fordate(fordate)- Get activities for a specific dateget_activity(activity_id)- Get basic activity informationget_last_activity()- Get the last activityget_activity_details(activity_id, maxchart, maxpoly)- Get detailed activity informationget_activity_splits(activity_id)- Get splits for an activityget_activity_typed_splits(activity_id)- Get typed splits for an activityget_activity_split_summaries(activity_id)- Get split summaries for an activityget_activity_weather(activity_id)- Get weather data for an activityget_activity_hr_in_timezones(activity_id)- Get heart rate data in different time zones for an activityget_activity_gear(activity_id)- Get gear data used for an activityget_activity_exercise_sets(activity_id)- Get exercise sets for strength training activitiesget_activity_types()- Get available activity typesdownload_activity(activity_id, dl_fmt)- Download activity in requested formatupload_activity(activity_path)- Upload activity in FIT format from filedelete_activity(activity_id)- Delete activity with specified IDset_activity_name(activity_id, title)- Set name for activity with IDset_activity_type(activity_id, type_id, type_key, parent_type_id)- Set activity typecreate_manual_activity(start_datetime, timezone, type_key, distance_km, duration_min, activity_name)- Create a manual activitycreate_manual_activity_from_json(payload)- Create a manual activity from JSON payload
Utility and System Methods
get_all_day_events(cdate)- Get available daily events data for a specific dateget_daily_wellness_events_data(startdate)- Get daily wellness events data for a specific daterequest_reload(cdate)- Request reload of data for a specific datequery_garmin_graphql(query)- Query Garmin GraphQL endpointslogout()- Log user out of session
Usage
The server will start and be available for MCP clients to connect to. All tools are automatically available and can be called with appropriate parameters.
Configuration
Update the following variables in a .env:
GARMIN_EMAIL: Your Garmin Connect emailGARMIN_PASSWORD: Your Garmin Connect password
Notes
- The server uses the Garmin Connect Python library for authentication and data access
- All date parameters should be in YYYY-MM-DD format
- Activity IDs can be obtained from the activity list methods
- Some methods may require specific device types or data availability