mcp-garmin
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 |
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_server_versionA | Return the installed version of the mcp-garmin server. |
| get_daily_summaryB | Get daily activity summary (steps, calories, distance, active minutes). Args: date: Date in YYYY-MM-DD format. |
| get_heart_ratesA | Get heart rate data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_sleep_dataB | Get sleep stages and metrics for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_stress_dataC | Get stress levels throughout the day. Args: date: Date in YYYY-MM-DD format. |
| get_body_batteryB | Get Body Battery (energy) levels for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_steps_dataB | Get detailed step data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_hrv_dataA | Get Heart Rate Variability (HRV) data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_spo2_dataA | Get blood oxygen saturation (SpO2) data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_respiration_dataB | Get respiratory rate data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_training_readinessA | Get training readiness score for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_intensity_minutesB | Get intensity minutes data for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_resting_heart_rateB | Get resting heart rate for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_activitiesC | List recent activities, newest first. Args: start: Zero-based index to start from. limit: Maximum number of activities to return (1-100). |
| get_activities_by_dateA | Get activities within a date range, optionally filtered by type. Args: start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. activity_type: Optional activity type filter (e.g. "running", "cycling"). |
| get_last_activityB | Get the most recent activity. |
| get_activityB | Get a single activity by its ID. Args: activity_id: Garmin activity ID. |
| get_activity_detailsC | Get detailed metrics for an activity (laps, charts, etc.). Args: activity_id: Garmin activity ID. |
| get_activity_splitsC | Get split/lap data for an activity. Args: activity_id: Garmin activity ID. |
| get_activity_weatherC | Get weather conditions during an activity. Args: activity_id: Garmin activity ID. |
| get_activity_hr_zonesB | Get heart rate zone distribution for an activity. Args: activity_id: Garmin activity ID. |
| get_activity_gearB | Get equipment/gear used in an activity. Args: activity_id: Garmin activity ID. |
| get_activity_exercise_setsA | Get strength training exercise sets for an activity. Args: activity_id: Garmin activity ID. |
| get_workoutsA | List saved workout templates. |
| get_workoutC | Get a saved workout template by ID. Args: workout_id: Garmin workout ID. |
| get_body_compositionB | Get body composition data for a date range. Args: start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. |
| get_weigh_insB | Get weight measurements for a date range. Args: start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. |
| get_user_profileA | Get the user's Garmin Connect profile information. |
| get_max_metricsA | Get VO2 max and related fitness metrics for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_fitness_ageA | Get calculated fitness age for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_training_statusC | Get current training status for a given date. Args: date: Date in YYYY-MM-DD format. |
| get_personal_recordsA | Get personal best records across all activities. |
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 32 tools
Each tool has a distinct and well-defined purpose, with clear differentiation among activity sub-tools (details, splits, gear, etc.) and between list/single retrieval functions. No two tools appear to do the same thing.
All tools follow a consistent 'get_<specific_data>' pattern using snake_case, with no mixing of conventions or verb styles. This makes the tool set highly predictable.
32 tools is on the higher side, but given the comprehensive nature of Garmin data (many distinct metrics like HRV, SpO2, body battery, etc.), the count is justifiable for a read-only data retrieval server. Slight over-scoping but not excessive.
The server covers virtually all major Garmin data categories: activities (with detailed breakdowns), daily summaries, body metrics, sleep, heart rate, stress, training readiness, and more. No obvious gaps for a read-only interface.