garmin-connect-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMINTOKENS | No | Path to the Garmin OAuth tokens file. Defaults to ~/.garminconnect if not set. |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| garmin_get_daily_summaryA | Day-by-day Garmin health metrics as a compact table (max 31 days, default last 7). Columns: date, steps, resting_hr (bpm), hrv_avg (ms overnight), hrv_status (balanced/unbalanced/low), bb_high/bb_low (Body Battery 0-100), stress_avg (0-100), intensity_min (moderate + 2x vigorous), active_kcal. For sleep detail use garmin_get_sleep; for workouts use garmin_list_activities. |
| garmin_get_sleepA | Garmin sleep data per night as a compact table (max 31 days, default last 7). Columns: date (wake-up morning), score (0-100), quality, duration, deep, light, rem, awake (H:MM), overnight_hrv (ms), spo2_avg (%), resting_hr (bpm). Note: if the user also wears an Oura ring, oura_* tools report the same nights and may differ slightly; say which source you're citing. |
| garmin_list_activitiesA | List Garmin activities in a date range as a compact table (max 90 days, default last 30). Columns: activity_id (for garmin_get_activity_detail), date, type, name, distance_km, duration (H:MM), avg_hr, max_hr, pace_or_speed, elev_gain_m, aerobic_te (training effect 0-5), anaerobic_te. |
| garmin_get_activity_detailA | Deep-dive a single Garmin activity: distance, time, HR, pace/speed, cadence, power, elevation, calories, training effect — plus lap splits and heart-rate-zone breakdown in 'detailed' mode. Get activity_id from garmin_list_activities first. |
| garmin_get_training_statusA | Current Garmin training snapshot in one call: training readiness score, training status (e.g. productive/maintaining/strained), acute load, VO2max, HRV status, and race time predictions (5K/10K/half/marathon). Use this for 'how is my training going / how recovered am I' questions; combine with oura_* readiness for cross-source checks. |
| garmin_get_body_compositionA | Body composition entries (Garmin Index scale or manual) as a table (max 90 days, default last 30). Columns: date, weight_kg, body_fat_pct, muscle_mass_kg, body_water_pct, bmi. Only days with a measurement appear. |
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 6 tools
Each tool targets a unique aspect of Garmin data: daily summary, activity detail, training status, body composition, sleep, and activity list. No two tools overlap in purpose, making selection unambiguous.
Tools follow a 'garmin_verb_noun' pattern (e.g., garmin_get_daily_summary, garmin_get_sleep), with 'garmin_list_activities' being the only one using 'list' instead of 'get'. This minor inconsistency is easily understood but breaks the pattern slightly.
With 6 tools covering key health and fitness domains (daily metrics, activities, training, body composition, sleep), the count feels well-scoped and sufficient for a read-only health data API.
The tool surface covers essential read-only operations: retrieving daily summaries, activity details, training status, body composition, sleep, and listing activities. Cross-references between tools indicate thoughtful design, with no obvious missing functionality for the intended purpose.