garmin-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_EMAIL | Yes | Your Garmin Connect login email | |
| GARMIN_PASSWORD | Yes | Your Garmin Connect login password | |
| MCP_AUTH_PASSWORD | Yes | Password used for OAuth authorization to access the MCP server |
Capabilities
Features and capabilities supported by this server
| 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_sleepA | Sleep duration, sleep stages, sleep score, and overnight HRV. Args: date: Calendar date in YYYY-MM-DD format. Defaults to last night (yesterday). Pass today's date to get the most recent recorded sleep when you wake up. |
| get_recent_activitiesA | List recent activities with type, duration, distance, and average heart rate. Args: limit: How many of the most recent activities to return. Capped at 50. |
| get_activity_detailsA | Detailed metrics for one activity, including splits and HR zones. Args:
activity_id: The activity's numeric Garmin ID, as returned by
|
| get_training_loadB | Daily training load with acute and chronic load and current status. Args: days: Number of recent days to summarise. Capped at 28. |
| get_hrv_statusA | Current HRV status, baseline range, and the last 7 nights of readings. |
| get_body_batteryA | Body battery values across the day, plus min, max, charged, and drained totals. Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. |
| get_steps_and_caloriesA | Daily step total, distance, calories, floors, and intensity minutes. Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. |
| get_resting_heart_rateA | Resting heart rate trend over the last Args: days: How many recent days to include. Capped at 28. |
| get_stressB | Stress levels across the day with average, max, and time-in-zone breakdown. Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. |
| get_training_readinessA | Daily training readiness score (0-100) with contributing factors. The score reflects how prepared the user is to train, drawing on sleep, HRV status, recovery time, and recent training load. Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. |
| get_daily_briefingA | One-call morning snapshot: sleep, HRV, Body Battery, readiness, load, and RHR. Fuses the individual recovery and training-load tools into a single payload so
you can reason across them in one shot instead of making six separate calls.
Each section is fetched independently and concurrently; a section that fails
comes back The server returns facts only and computes no training advice — interpret the numbers yourself (e.g. weigh readiness, HRV status, and Body Battery together). Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. The sleep, Body Battery, and training-readiness sections honour this date; the HRV, training-load, and resting-HR sections always report their own most-recent trailing window. For the default (this-morning) call everything lines up; passing a past date yields a mixed snapshot. |
| get_fitness_metricsA | VO2 max (running and cycling), fitness age, and predicted race times. Combines Garmin's "max metrics" tile (VO2 max, fitness age) with current race-time predictions for 5K, 10K, half marathon, and marathon. Args: date: Calendar date for the VO2 max snapshot in YYYY-MM-DD format. Defaults to today. |
| get_personal_recordsA | Personal records across activity types (fastest 1K/5K/10K, longest run, etc.). |
| get_body_compositionA | Weight, body fat, and muscle-mass trend over recent days. Returns one row per day Garmin has a reading for, plus the latest weight and average over the window. Args: end_date: End of the window in YYYY-MM-DD format. Defaults to today. days: Window size in days. Capped at 90. |
| get_respirationA | Daily respiration rate: average, min, max, and waking vs. sleeping averages. Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. |
| get_weekly_summaryA | Weekly aggregates for a single metric. Args: metric: One of "steps", "stress", or "intensity_minutes". weeks: How many recent weeks to include. Capped at 12. end_date: End of the window in YYYY-MM-DD format. Defaults to today. |
| preview_strength_workoutA | Assemble a strength workout and show what WOULD be created — no network call. Resolves each exercise name to Garmin's catalog and returns a readable
summary, the resolved Garmin name + confidence per exercise, warnings for
anything that did not map cleanly, and a Args: workout: the workout definition (name, blocks of sets/exercises). |
| create_strength_workoutA | Create a strength workout in your Garmin Connect library (a WRITE). Requires writes to be enabled (GARMIN_WRITE_ENABLED) and a matching
Args:
workout: the workout definition (same shape as preview).
confirmation_token: token returned by |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tyler-Irving/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server