garmin-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_EXPORT_DIR | No | Directory for downloaded activity files | ~/garmin-exports |
| GARMIN_TOKEN_STORE | No | Directory where OAuth tokens are stored | ~/.garminconnect |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_recent_activitiesB | Get the most recent activities/workouts. Returns activity name, type, date, duration, distance, calories, and average HR. |
| get_activities_by_dateA | Get activities within a date range (YYYY-MM-DD). Optionally filter by activity type (running, cycling, swimming, etc.). Returns activity name, type, date, duration, distance, and key metrics. |
| get_activity_detailsB | Get detailed information for a specific activity by its ID. Returns comprehensive data including splits, HR zones, pace, elevation, etc. |
| get_activity_splitsA | Get split/lap data for a specific activity. Returns per-split pace, distance, elevation, heart rate. |
| get_weightA | Get weight/weigh-in data for a date range (YYYY-MM-DD). Returns weight measurements, BMI, body fat percentage if available. |
| get_body_compositionA | Get body composition data for a date range (YYYY-MM-DD). Returns weight, body fat %, muscle mass, bone mass, body water %. |
| get_hydrationA | Get hydration data for a date (YYYY-MM-DD). Returns water intake in ml and progress toward daily goal. |
| get_devicesA | Get information about connected Garmin devices. Returns device names, models, firmware versions, and last sync times. |
| get_daily_stepsA | Get daily step counts for a date range (YYYY-MM-DD). Returns step count per day, useful for trend analysis. |
| get_personal_recordsA | Get personal records (PRs) across all activities. Returns fastest times, longest distances, and other personal bests. |
| get_respirationA | Get respiration/breathing rate data for a date (YYYY-MM-DD). Returns breathing rate throughout the day. |
| get_spo2A | Get SpO2 (blood oxygen) data for a date (YYYY-MM-DD). Returns blood oxygen saturation readings. |
| get_goalsA | Get active fitness goals. Returns current goals for steps, distance, calories, etc. and progress toward each. |
| download_activity_fitA | Download a FIT file for a specific activity. Saves the original FIT file (as ZIP) and returns the file path. The FIT file contains the raw sensor data from the Garmin device. |
| download_activity_gpxA | Download a GPX file for a specific activity. Saves the GPX track file and returns the file path. GPX files contain GPS coordinates and are useful for mapping. |
| download_activity_tcxA | Download a TCX file for a specific activity. Saves the TCX file and returns the file path. TCX files contain GPS + heart rate + cadence data. |
| download_activity_kmlB | Download a KML file for a specific activity. Saves the KML file and returns the file path. KML files can be opened in Google Earth and similar tools. |
| download_activity_csvA | Download a CSV file for a specific activity. Saves the CSV file and returns the file path. CSV files contain tabular activity data for spreadsheet analysis. |
| get_training_readinessA | Get training readiness score for a date (YYYY-MM-DD). Returns readiness score, HRV status, sleep quality, recovery time, and training load. |
| get_vo2maxA | Get VO2 Max / max metrics data for a date (YYYY-MM-DD). Returns estimated VO2 Max for running and cycling. |
| get_training_statusB | Get training status for a date (YYYY-MM-DD). Returns training load, training effect, and training status classification. |
| get_race_predictionsA | Get race time predictions based on current fitness. Returns predicted times for 5K, 10K, half marathon, and marathon. |
| get_hrvA | Get Heart Rate Variability (HRV) data for a date (YYYY-MM-DD). Returns HRV status, weekly average, and baseline. |
| get_endurance_scoreB | Get endurance score for a date range (YYYY-MM-DD). Returns endurance score reflecting aerobic fitness over time. |
| get_daily_summaryB | Get daily activity summary for a date (YYYY-MM-DD). Returns steps, distance, calories, floors climbed, active minutes, and more. |
| get_heart_rateB | Get heart rate data for a date (YYYY-MM-DD). Returns resting heart rate, min/max HR, and heart rate zones. |
| get_sleepA | Get sleep data for a date (YYYY-MM-DD). Returns sleep duration, sleep stages (deep, light, REM, awake), sleep score. |
| get_stressA | Get all-day stress data for a date (YYYY-MM-DD). Returns stress levels throughout the day, average stress, and stress duration breakdown. |
| get_body_batteryA | Get body battery data for a date (YYYY-MM-DD). Returns body battery levels showing energy reserves throughout the day. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 29 tools
Most tools map to distinct Garmin data categories, but a few boundaries are fuzzy: get_weight and get_body_composition overlap on weight and body fat, and get_daily_summary overlaps with get_daily_steps and get_heart_rate on daily metrics. Still, an agent can usually select the right tool from the descriptions.
The naming follows a consistent verb_noun pattern: get_* for data retrieval and download_activity_* for file exports. Plural/singular variations are minor and do not affect predictability.
29 tools is excessive for a Garmin data server. Many could be consolidated, such as the five download_activity_format tools into a single exporter, and get_weight/get_body_composition into one body metrics tool. The broad scope helps justify the number, but the surface still feels over-split.
The server covers a comprehensive read-only Garmin domain: activities, daily summaries, body metrics, health metrics, training readiness, sleep, stress, devices, and file downloads. Minor gaps exist, such as lacking date-range endpoints for some metrics (e.g., sleep, stress) and no way to search activities beyond recent/date-based retrieval.