Garmin Connect MCP Server
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 |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| query_activitiesA | Query activities with flexible parameters and pagination support. This unified tool supports multiple query patterns:
All queries can be filtered by activity_type (e.g., 'running', 'cycling'). Pagination: For large time ranges, use pagination to retrieve all activities:
Returns: JSON string with structure: { "data": { "activity": {...} // Single activity mode OR "activities": [...], // List mode "count": N }, "pagination": { // List mode only (when paginated) "cursor": "...", // Use for next page (null if no more) "has_more": true, "limit": 20, "returned": 20 }, "metadata": {...} } |
| get_activity_detailsA | Get comprehensive details for a specific activity. Fetch exactly the information you need about an activity with flexible detail options. By default, includes splits, weather, HR zones, and gear. Exercise sets are only included when explicitly requested (useful for strength training). When include_splits=True and the activity has only 1 lap, estimated km/mile splits will be computed based on average pace. |
| get_activity_socialB | Get social details for an activity (likes, comments, kudos). |
| compare_activitiesA | Compare multiple activities side-by-side. Analyzes 2-5 activities and provides:
Example: activity_ids="12345678,12345679,12345680" |
| find_similar_activitiesA | Find activities similar to a reference activity. Finds activities matching specified criteria:
Returns similarity scores and comparisons. Example: criteria="type,distance" |
| query_health_summaryA | Get comprehensive daily health snapshot with pagination support. Includes stats, user summary, training readiness, training status, Body Battery, and Body Battery events. Supports single date or date range queries with pagination. Pagination: For large date ranges, use pagination:
Returns: JSON string with structure: { "data": { "summaries": [...], // Range mode (paginated) "count": N OR {...} // Single date mode }, "pagination": { // Range mode only "cursor": "...", "has_more": true, "limit": 30, "returned": 30 }, "metadata": {...} } |
| query_sleep_dataA | Get sleep data and analysis. Retrieves sleep duration, sleep stages (deep, light, REM), sleep scores, HRV, resting heart rate, and body battery impact. Supports single date or date range queries. |
| query_heart_rate_dataA | Get heart rate data. Retrieves heart rate data including resting HR, average HR, min/max values. Supports single date or date range queries. |
| query_activity_metricsA | Get activity metrics (steps, stress, etc.). Includes steps, stress, respiration, SpO2, floors climbed, hydration, blood pressure, and body composition. Select specific metrics to retrieve using the metrics parameter. Default: steps and stress. |
| query_devicesB | Query Garmin devices. Get comprehensive device information including last used device, primary training device, settings, solar data, and alarms. |
| query_gearA | Query gear and equipment. Get comprehensive gear information including defaults and usage stats. |
| get_user_profileA | Get comprehensive user profile with optional stats, personal records, and devices. |
| query_goals_and_recordsA | Get goals, personal records, and race predictions. Returns your activity goals, personal best performances, and predicted race times based on recent training. |
| query_challengesA | Query challenges and badges. Filters by status (active/available/earned) and type (badge/adhoc/virtual). |
| analyze_training_periodA | Analyze training over a specified period with comprehensive insights. Provides:
Example periods: "30d", "this-month", "2024-01-01:2024-01-31" |
| get_performance_metricsA | Get comprehensive performance metrics. Includes VO2 max, hill score, endurance score, heart rate variability, and fitness age data. Supports both single-date and date-range queries. |
| get_training_effectA | Get training effect and progress summary. Supports:
|
| query_weight_dataA | Query weight data. Get weight measurements for a specific date or date range. |
| manage_weight_dataA | Add or delete weight entries. Actions:
|
| manage_workoutsB | Manage structured workouts. Actions:
|
| log_health_dataB | Log health data entries. Data types:
All data should be provided as a JSON string. |
| query_womens_healthA | Query women's health data. Data types:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_recent_training | Analyze Garmin training for a given period. |
| sleep_quality_report | Analyze sleep quality over a period. |
| training_readiness_check | Check if I'm ready to train today. |
| activity_deep_dive | Provide comprehensive analysis of an activity. |
| compare_recent_runs | Compare recent runs to identify trends. |
| health_summary | Provide comprehensive health overview. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| athlete_profile_resource | Provide athlete profile with stats and zones for context-aware clients. |
| training_readiness_resource | Provide current training readiness, Body Battery, and recovery status. |
| health_today_resource | Provide today's health snapshot (steps, sleep, stress, HR). |
Latest Blog Posts
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/eddmann/garmin-connect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server