mcp-garmin-connect
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_EMAIL | Yes | Your Garmin Connect email address. | |
| OPENAI_API_KEY | No | API key for OpenAI provider demo (optional). | |
| GARMIN_PASSWORD | Yes | Your Garmin Connect password. | |
| DEEPSEEK_API_KEY | No | API key for DeepSeek provider demo (optional). | |
| ANTHROPIC_API_KEY | No | API key for Anthropic Claude provider demo (optional). |
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_recoveryB | Current recovery state: readiness, HRV, sleep, body battery, and status. |
| get_sleepB | Sleep duration and sleep scores for the last N days. |
| get_resting_heart_rateB | Daily resting heart rate with 7-day and 30-day trend summaries, up to 30 days. |
| get_stressB | Daily all-day stress levels and stress duration buckets. |
| get_recent_activitiesC | Recent Garmin activities with normalized sport-aware summary fields. |
| get_activity_detailC | Detailed summary for one activity by Garmin activity ID. |
| get_recent_loadB | Training volume aggregated by sport over the last N days. |
| get_training_loadB | Garmin training load status, acute/chronic load, and load focus. |
| get_fitnessB | VO2 max, cycling FTP, and race predictions. |
| get_zonesB | Heart-rate zones and thresholds from Garmin user settings when available. |
| get_personal_recordsC | Personal records returned by Garmin Connect. |
| get_running_summaryC | Running summary: sessions, distance, pace, HR, longest run, fastest run, monthly split. |
| get_monthly_running_statsC | Monthly running stats for the last N calendar-ish months based on recent activities. |
| get_health_summaryB | Compact health snapshot combining recovery, sleep, and stress. |
| get_full_snapshotC | Comprehensive Garmin data snapshot for holistic analysis. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| recovery_check | Use Garmin recovery data to decide whether today should be easy or hard. |
| weekly_training_review | Review recent training volume, sport balance, recovery, and risk. |
| activity_analysis | Analyze one recent workout using its activity details. |
| race_plan_context | Gather Garmin context before creating a race or training plan. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target distinct data domains (sleep, stress, HRV, zones), but several aggregate tools overlap heavily: get_health_summary recombines get_recovery/get_sleep/get_stress, get_full_snapshot subsumes nearly everything, and get_running_summary vs get_monthly_running_stats vs get_recent_load blur the line on running/training aggregation. An agent could reasonably pick the wrong summary tool.
Every tool follows the same get_<noun> snake_case convention with no deviations. Predicable and easy to scan.
15 tools is well within a healthy range for a multi-domain fitness server, and each surface maps to a real Garmin data area. Slightly heavy on overlapping summary/snapshot tools, but not excessive.
Broad read coverage: activities, fitness, recovery, sleep, stress, RHR, zones, PRs, and running stats. As a read-only analytics server it is fairly complete, though there is no way to list workouts/planned activities or fetch raw timeseries detail beyond the summaries.