garmin-connect-mcp
garmin-connect-mcp
MCP server for Garmin Connect. Access your fitness, health, and training data from Claude Code, Claude Desktop, Cursor, Windsurf, or any MCP client.
61 tools across 7 categories: activities, daily health, trends, sleep, body composition, performance/training, and profile/devices.
API endpoints and authentication flow based on python-garminconnect by cyberjunky.
Requirements
Node.js 20+
A Garmin Connect account (email and password)
Installation
Claude Code
claude mcp add garmin -e GARMIN_EMAIL=you@email.com -e GARMIN_PASSWORD=yourpass -- npx -y @nicolasvegam/garmin-connect-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}Any MCP Client
Run the server with environment variables:
GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npx -y @nicolasvegam/garmin-connect-mcpThe server communicates over stdio using the Model Context Protocol.
Available Tools
Activities (12 tools)
Tool | Description |
| List recent activities with pagination |
| Search activities within a date range |
| Get the most recent activity |
| Get total number of activities |
| Summary data for a specific activity |
| Detailed metrics: HR, pace, elevation time series |
| Per-km or per-mile split data |
| Weather conditions during activity |
| Time in each heart rate zone |
| Strength training sets (reps, weight) |
| All available activity types |
| Fitness stats over a date range by activity type |
Daily Health (14 tools)
Tool | Description |
| Full daily summary (steps, calories, distance, etc.) |
| Step count for a date |
| Intraday step data throughout the day |
| Heart rate data (resting, max, zones, time series) |
| Resting heart rate for a date |
| Stress levels and time series |
| Body Battery energy levels (date range) |
| Battery charge/drain events for a day |
| Breathing rate data |
| Blood oxygen saturation |
| Moderate/vigorous intensity minutes |
| Floors climbed chart data |
| Daily hydration/water intake |
| Daily wellness events |
Trends (4 tools)
Tool | Description |
| Daily step counts over a date range |
| Weekly step aggregates |
| Weekly stress aggregates |
| Weekly intensity minutes |
Sleep (2 tools)
Tool | Description |
| Sleep stages, score, bed/wake times |
| Raw sleep data with HR and SpO2 |
Body Composition (5 tools)
Tool | Description |
| Weight, BMI, body fat %, muscle mass (date range) |
| Most recent weight entry |
| All weigh-ins for a date |
| Weigh-in records over a date range |
| Blood pressure readings (date range) |
Performance & Training (11 tools)
Tool | Description |
| VO2 Max estimate (running/cycling) |
| Training Readiness score |
| Training status and load |
| Heart Rate Variability |
| Endurance fitness score |
| Climbing performance score |
| 5K/10K/half/full marathon predictions |
| Estimated fitness age |
| All personal records |
| Lactate threshold HR and pace |
| Functional Threshold Power (cycling) |
Profile & Devices (13 tools)
Tool | Description |
| User social profile and preferences |
| User settings, measurement system, sleep schedule |
| Registered Garmin devices |
| Settings for a specific device |
| Last used device info |
| Primary training device |
| Solar charging data |
| All tracked gear/equipment |
| Usage stats for a gear item |
| Active goals and progress |
| Earned badges and achievements |
| Saved workouts |
| Specific workout by ID |
Authentication
Uses Garmin Connect credentials (email/password) via environment variables. OAuth tokens are cached in ~/.garmin-mcp/ to avoid re-authentication on each request.
MFA (Multi-Factor Authentication)
If your Garmin account has MFA enabled (required for devices with ECG capabilities), you need to run the interactive setup once before using the MCP server:
GARMIN_EMAIL='you@email.com' GARMIN_PASSWORD='yourpass' npx -y @nicolasvegam/garmin-connect-mcp setupThis will:
Log in to Garmin Connect
Prompt you for the MFA code sent to your email or authenticator app
Save OAuth tokens to
~/.garmin-mcp/
After setup, the MCP server will use the saved tokens automatically — no MFA prompt needed until the tokens expire. When they do, simply run the setup command again.
Development
git clone https://github.com/Nicolasvegam/garmin-connect-mcp.git
cd garmin-connect-mcp
npm install
npm run buildTo test locally:
GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npm startCredits
API endpoints and authentication flow based on
python-garminconnectby cyberjunky
License
MIT
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/Nicolasvegam/garmin-connect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server