Atlas / MCP servers / taxuspt / Garmin

GarminCAUTION

mcp/taxuspt/garmin

MCP server to access Garmin data

Verdict
CAUTION
Grade
B
Trust score
89 /100
Exposed tools
153 112r · 32w · 9d
Transport
streamable-http
License
MIT
Stars
1,236
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://mseep.ai/app/taxuspt-garmin-mcp)

This Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients.

Garmin's API is accessed via the awesome python-garminconnect library.

Features

  • List recent activities with pagination support
  • Get detailed activity information
  • Edit activities: name, type, description/notes, event type, perceived effort (RPE), and feel
  • Access health metrics (steps, heart rate, sleep, stress, respiration)
  • View body composition data
  • Track training status and readiness
  • Access cycling FTP and lactate threshold metrics
  • Manage gear and equipment, including free-text notes returned by get_gear
  • Access workouts and training plans
  • Inspect detailed workout step structures, including repeat groups and swim pace targets
  • Weekly health aggregates (steps, stress, intensity minutes)
  • Advanced cycling analytics: power zones, FIT file analysis, DI2 electronic shift intelligence
  • Training load trend (CTL/ATL/TSB), HRV trend, VO2 max trend, respiration rate trend
  • Power Duration Curve, climb detection with VAM, cardiac drift (aerobic decoupling), W/kg calculations

Tool Coverage

This MCP server implements 110+ tools covering ~90% of the python-garminconnect library (v0.3.2):

  • ✅ Activity Management (20 tools) - includes write tools for type, description, event type, perceived effort, and feel
  • ✅ Health & Wellness (34 tools) - includes custom lightweight summary tools
  • ✅ Training & Performance (13 tools) - includes CTL/ATL/TSB, HRV, VO2 max, and respiration trends
  • ✅ Workouts (8 tools)
  • ✅ Devices (7 tools)
  • ✅ Gear Management (5 tools)
  • ✅ Weight Tracking (5 tools)
  • ✅ Challenges & Badges (10 tools)
  • ✅ Nutrition (9
Read from source at commit 834c5b9b2c16OBSERVED · 2026-09-26
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add garmin-mcp --env GARMINTOKENS=${GARMINTOKENS} --env GARMINTOKENS_BASE64=${GARMINTOKENS_BASE64} --env GARMIN_PASSWORD=${GARMIN_PASSWORD} --env GARMIN_PASSWORD_FILE=${GARMIN_PASSWORD_FILE} -- uvx garmin-mcp
claude-desktop
{
  "mcpServers": {
    "garmin-mcp": {
      "command": "uvx",
      "args": [
        "garmin-mcp"
      ],
      "env": {
        "GARMINTOKENS": "${GARMINTOKENS}",
        "GARMINTOKENS_BASE64": "${GARMINTOKENS_BASE64}",
        "GARMIN_PASSWORD": "${GARMIN_PASSWORD}",
        "GARMIN_PASSWORD_FILE": "${GARMIN_PASSWORD_FILE}"
      }
    }
  }
}
03

Exposed tools (153)

112 read · 32 write · 9 destructive. Blast radius: 9 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
add_body_compositionwriteAdd body composition data
add_gear_to_activitywriteAssociate gear with an activity
add_hydration_datawriteAdd hydration data
add_weigh_inwriteAdd a new weight measurement
add_weigh_in_with_timestampswriteAdd a new weight measurement with specific timestamps
count_activitiesreadGet total count of activities in the user
create_custom_foodwriteCreate a custom food in the user
create_manual_activitywriteLog a manual activity in Garmin Connect — useful for activities done without a watch.
create_run_interval_workoutwriteCreate a repeat-based interval run workout and upload it to Garmin Connect.
create_run_workoutwriteCreate a continuous run workout and upload it to Garmin Connect.
create_strength_workoutwriteCreate a strength workout and upload it to Garmin Connect.
create_walk_run_workoutwriteCreate a walk/run interval workout and upload it to Garmin Connect.
create_z2_walk_workoutwriteCreate a steady Z2 walking workout and upload it to Garmin Connect.
delete_coursedestructiveDelete a course from Garmin Connect.
delete_custom_fooddestructiveDelete a custom food from the user
delete_food_logdestructiveDelete a food log entry
delete_weigh_insdestructiveDelete weight measurements for a specific date
delete_workoutdestructiveDelete a workout from Garmin Connect
delete_workoutsdestructiveDelete multiple workouts from Garmin Connect in a single call
download_activity_filewriteDownload an activity and save it to disk as a file.
download_course_gpxreadDownload the exact official GPX file for a Garmin Connect course.
download_workoutreadDownload a workout as a FIT file
get_acclimationreadGet heat and altitude acclimation status for a given date.
get_activitiesreadGet activities with pagination support.
get_activities_by_datereadGet activities between specified dates with pagination support.
get_activities_fordatereadGet activities for a specific date
get_activityreadGet detailed information for a single activity.
get_activity_exercise_setsreadGet exercise sets for strength training activities
get_activity_fit_datareadDownload and parse FIT file for an activity to expose advanced cycling data.
get_activity_fit_messagesreadRetrieve and generically parse an activity
get_activity_gearreadGet gear data used for an activity
get_activity_hr_in_timezonesreadGet heart rate data in different time zones for an activity
get_activity_power_in_timezonesreadGet power distribution across training zones for an activity.
get_activity_split_summariesreadGet split summaries for an activity
get_activity_splitsreadGet splits for an activity
get_activity_typed_splitsreadGet typed splits for an activity
get_activity_typesreadGet all available activity types
get_activity_weatherreadGet weather data for an activity.
get_adhoc_challengesreadGet user-created social/group challenges (e.g., step competitions with friends)
get_all_day_eventsreadGet daily wellness events data
get_all_day_stressreadGet all-day stress data
get_available_badge_challengesreadGet official Garmin badge challenges available to join
get_badge_challengesreadGet all badge challenges the user has joined (completed and in-progress)
get_blood_pressurereadGet blood pressure data
get_body_batteryreadGet body battery data with events
get_body_battery_eventsreadGet body battery events data
get_body_compositionreadGet body composition data for a single date or date range
get_calendar_eventsreadGet races and events on the Garmin Connect calendar between two dates
get_course_detailsreadGet full details of a Garmin Connect course by ID.
get_coursesreadList all courses saved on Garmin Connect.
get_custom_food_serving_unitsreadGet available serving units for custom foods
get_custom_foodsreadSearch or list user
get_cycling_ftpreadGet the latest cycling Functional Threshold Power (FTP) data.
get_daily_stepsreadGet steps data for a date range
get_daily_weigh_insreadGet weight measurements for a specific date
get_device_alarmsreadGet alarms from all Garmin devices
get_device_last_usedreadGet information about the last used Garmin device
get_device_settingsreadGet settings for a specific Garmin device
get_device_solar_datareadGet solar data for a specific device
get_devicesreadGet all Garmin devices associated with the user account
get_earned_badgesreadGet earned badges for user
get_endurance_scorereadGet endurance score data between dates
get_energy_balancereadEstimate a composition-derived TDEE from logged intake, Garmin
get_fitnessage_datareadGet fitness age data
get_floorsreadGet floors climbed data
get_full_namereadGet user
get_garmin_coach_workoutsreadGet Garmin Coach workouts around the given date
get_gearreadGet all gear registered with the user account
get_goalsreadGet Garmin Connect goals (active, future, or past).
get_heart_rate_zonesreadGet the user
get_heart_ratesreadGet full heart rate time-series data
get_heart_rates_summaryreadGet heart rate summary with essential metrics (lightweight version)
get_hill_scorereadGet hill score data between dates
get_hrv_datareadGet Heart Rate Variability (HRV) data
get_hrv_trendreadGet HRV (Heart Rate Variability) trend over a date range.
get_hydration_datareadGet hydration data
get_inprogress_virtual_challengesreadGet in-progress virtual challenges/expeditions
get_lactate_thresholdreadGet lactate threshold data
get_lifestyle_logging_datareadGet lifestyle logging data for a specific date
get_menstrual_calendar_datareadGet menstrual calendar data between specified dates
get_menstrual_data_for_datereadGet menstrual data for a specific date
get_morning_training_readinessreadGet morning training readiness score
get_non_completed_badge_challengesreadGet badge challenges currently in progress (not yet completed)
get_nutrition_daily_food_logreadGet daily food consumption records for a date
get_nutrition_daily_mealsreadGet daily meal summaries for a date
get_nutrition_daily_settingsreadGet nutrition plan/settings for a date
get_nutrition_summary_between_datesreadGet per-day nutrition totals for every day in a date range.
get_personal_recordreadGet personal records for user
get_power_duration_curvereadGet season-best Power Duration Curve across recent activities.
get_pregnancy_summaryreadGet pregnancy summary data
get_primary_training_devicereadGet information about the primary training device
get_progress_summary_between_datesreadGet progress summary for a metric between dates
get_race_predictionsreadGet predicted race times based on current fitness level
get_recovery_time_remainingreadGet remaining recovery time in hours for a day.
get_respiration_datareadGet full respiration time-series data
get_respiration_summaryreadGet respiration summary with essential metrics (lightweight version)
get_respiration_trendreadGet overnight respiration rate trend over a date range.
get_rhr_dayreadGet resting heart rate data
get_running_tolerancereadGet Running Tolerance for a single day.
get_running_tolerance_trendreadGet Running Tolerance trend over a date range.
get_scheduled_workoutsreadGet scheduled workouts between two dates with curated summary list
get_sleep_datareadGet full sleep data with all details
get_sleep_summaryreadGet sleep summary with only essential metrics (lightweight version)
get_sleep_summary_rangereadGet lightweight sleep summaries for every night in a date range.
get_spo2_datareadGet SpO2 (blood oxygen) data
get_statsreadGet daily activity stats with curated essential metrics
get_stats_and_bodyreadGet stats and body composition data
get_stats_rangereadGet lightweight per-day calorie and step totals for a date range.
get_steps_datareadGet detailed steps data with 15-minute intervals
get_stress_datareadGet full stress time-series data
get_stress_summaryreadGet stress summary with essential metrics (lightweight version)
get_training_effectreadGet training effect data for a specific activity.
get_training_load_balancereadGet Garmin
get_training_load_trendreadGet the Performance Management Chart (CTL/ATL/TSB) over a date range.
get_training_plan_workoutsreadCompatibility alias for get_garmin_coach_workouts
get_training_readinessreadGet training readiness data with curated metrics
get_training_statusreadGet training status with curated metrics
get_unit_systemreadGet user
get_user_profilereadGet user profile information
get_user_summaryreadGet user summary data (compatible with garminconnect-ha)
get_userprofile_settingsreadGet user profile settings
get_vo2max_trendreadGet VO2 max trend over a date range.
get_weekly_intensity_minutesreadGet weekly intensity minutes data aggregates
get_weekly_stepsreadGet weekly step data aggregates
get_weekly_stressreadGet weekly stress data aggregates
get_weigh_insreadGet weight measurements between specified dates
get_workout_by_idreadGet detailed information for a specific workout
get_workoutsreadGet all workouts with curated summary list
log_custom_foodreadLog a food item to a meal on a date
log_foodwriteQuick-add a food entry with macro values to the nutrition log
remove_gear_from_activitydestructiveRemove gear association from an activity
request_reloadreadRequest reload of epoch data
schedule_weekwriteSchedule a list of workouts for the week in a single call.
schedule_workoutwriteSchedule a workout to a specific calendar date
schedule_workoutswriteSchedule multiple workouts to specific calendar dates
search_foodsreadSearch Garmin
set_activity_descriptionwriteSet or update the free-text description (notes) of an activity.
set_activity_event_typewriteSet the event type of an activity.
set_activity_feelwriteSet how an activity felt (
set_activity_namewriteSet or update the name of an activity.
set_activity_typewriteChange the activity type (sport) of an activity.
set_blood_pressurewriteSet blood pressure values
set_fit_download_dirwriteSet and persist the default directory for downloaded activity files.
set_heart_rate_zoneswriteSet an account-level heart-rate training-zone configuration for one sport.
set_nutrition_daily_settingswriteUpdate daily nutrition goals (calorie target and macronutrient targets).
set_perceived_effortwriteSet the perceived effort (RPE) for an activity.
unschedule_workoutdestructiveRemove a scheduled workout from the Garmin Connect calendar
unschedule_workoutsdestructiveRemove multiple scheduled workouts from the Garmin Connect calendar
update_custom_foodwriteUpdate an existing custom food in the user
upload_coursewriteUpload a GPX file as a Garmin Connect Course.
upload_workoutwriteUpload a workout from JSON data
upload_workoutswriteUpload multiple workouts from JSON data in a single call
upsert_and_logwriteFind-or-create a custom food then log it in one step
04

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (6)

MEDIUMInventory / provenance · inv.binary · CWE-1104
garmin-mcp.dxt
garmin-mcp.dxt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.dockerignore
.dockerignore
Why it matters. link not followed
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_course, delete_custom_food, delete_food_log, delete_weigh_ins, delete_workout, delete_workouts, remove_gear_from_activity, unschedule_workout, unschedule_workouts
Why it matters. 9 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:516
Your Garmin Connect credentials are read from environment variables:
Why it matters. asks the agent to read credentials
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:391
[email protected] GARMIN_PASSWORD=secret garmin-mcp-auth
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:663
Install the Garmin MCP server from https://github.com/Taxuspt/garmin_mcp, authenticate with garmin-mcp-auth, and add it to my MCP configuration without storing my Garmin email or password.
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-09-26 · audit v0.4.1 · source sha 834c5b9b2c16full audit observations/trust-audit/mcp-server/taxuspt__garmin.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-09-26834c5b9b2c16CAUTIONB89first audit
06

Questions

What is the Garmin MCP server?

MCP server to access Garmin data

What tools does Garmin expose?

153 in total: 112 read-only, 32 that write, and 9 that can delete or overwrite (delete_course, delete_custom_food, delete_food_log, delete_weigh_ins, delete_workout). Every one is listed on this page with its risk.

Is Garmin safe to connect to an agent?

With care. The audit graded it B (89/100) and found 6 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 9 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Garmin need?

It reads GARMINTOKENS, GARMINTOKENS_BASE64, GARMIN_PASSWORD, GARMIN_PASSWORD_FILE and PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Garmin run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as garmin-mcp.

How current is this page?

The grade is for one exact copy of the source (834c5b9b2c16), read on 2026-09-26. The repository is watched and re-audited when it changes.

Advertisement