Skip to main content
Glama

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-mcp

Claude 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-mcp

The server communicates over stdio using the Model Context Protocol.

Available Tools

Activities (12 tools)

Tool

Description

get_activities

List recent activities with pagination

get_activities_by_date

Search activities within a date range

get_last_activity

Get the most recent activity

count_activities

Get total number of activities

get_activity

Summary data for a specific activity

get_activity_details

Detailed metrics: HR, pace, elevation time series

get_activity_splits

Per-km or per-mile split data

get_activity_weather

Weather conditions during activity

get_activity_hr_zones

Time in each heart rate zone

get_activity_exercise_sets

Strength training sets (reps, weight)

get_activity_types

All available activity types

get_progress_summary

Fitness stats over a date range by activity type

Daily Health (14 tools)

Tool

Description

get_daily_summary

Full daily summary (steps, calories, distance, etc.)

get_steps

Step count for a date

get_steps_chart

Intraday step data throughout the day

get_heart_rate

Heart rate data (resting, max, zones, time series)

get_resting_heart_rate

Resting heart rate for a date

get_stress

Stress levels and time series

get_body_battery

Body Battery energy levels (date range)

get_body_battery_events

Battery charge/drain events for a day

get_respiration

Breathing rate data

get_spo2

Blood oxygen saturation

get_intensity_minutes

Moderate/vigorous intensity minutes

get_floors

Floors climbed chart data

get_hydration

Daily hydration/water intake

get_daily_events

Daily wellness events

Tool

Description

get_daily_steps_range

Daily step counts over a date range

get_weekly_steps

Weekly step aggregates

get_weekly_stress

Weekly stress aggregates

get_weekly_intensity_minutes

Weekly intensity minutes

Sleep (2 tools)

Tool

Description

get_sleep_data

Sleep stages, score, bed/wake times

get_sleep_data_raw

Raw sleep data with HR and SpO2

Body Composition (5 tools)

Tool

Description

get_body_composition

Weight, BMI, body fat %, muscle mass (date range)

get_latest_weight

Most recent weight entry

get_daily_weigh_ins

All weigh-ins for a date

get_weigh_ins

Weigh-in records over a date range

get_blood_pressure

Blood pressure readings (date range)

Performance & Training (11 tools)

Tool

Description

get_vo2max

VO2 Max estimate (running/cycling)

get_training_readiness

Training Readiness score

get_training_status

Training status and load

get_hrv

Heart Rate Variability

get_endurance_score

Endurance fitness score

get_hill_score

Climbing performance score

get_race_predictions

5K/10K/half/full marathon predictions

get_fitness_age

Estimated fitness age

get_personal_records

All personal records

get_lactate_threshold

Lactate threshold HR and pace

get_cycling_ftp

Functional Threshold Power (cycling)

Profile & Devices (13 tools)

Tool

Description

get_user_profile

User social profile and preferences

get_user_settings

User settings, measurement system, sleep schedule

get_devices

Registered Garmin devices

get_device_settings

Settings for a specific device

get_device_last_used

Last used device info

get_primary_training_device

Primary training device

get_device_solar_data

Solar charging data

get_gear

All tracked gear/equipment

get_gear_stats

Usage stats for a gear item

get_goals

Active goals and progress

get_earned_badges

Earned badges and achievements

get_workouts

Saved workouts

get_workout

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 setup

This will:

  1. Log in to Garmin Connect

  2. Prompt you for the MFA code sent to your email or authenticator app

  3. 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 build

To test locally:

GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npm start

Credits

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Nicolasvegam/garmin-connect-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server