Skip to main content
Glama
nitinmms

Garmin MCP Server

by nitinmms

Garmin MCP Server

A read-only MCP server that lets an AI agent query your own Garmin Connect data through Garmin's official Personal API.

1. Create a personal API key

  1. Sign in to Garmin Connect Web and open https://connect.garmin.com/app/settings/personalApiToken.

  2. Create Key, accept the terms, pick an expiry (30 days – 1 year), and copy the key. It is shown only once — treat it like a password.

The server exchanges the key for a 24-hour access token and renews it automatically. When the key itself expires (Garmin emails you a week ahead), create a new one and update your config.

Related MCP server: garth-mcp-server

2. Install and verify

Requires uv and Python 3.11+.

cd c:\temp\garmin-mcp-server
uv sync

Check the key works (prints only field counts, no personal data):

$env:GARMIN_PERSONAL_API_KEY = "<your key>"; uv run garmin-mcp check

3. Connect an MCP client

Claude Code

claude mcp add garmin --scope user -e GARMIN_PERSONAL_API_KEY=<your key> -- uv --directory c:\temp\garmin-mcp-server run garmin-mcp

Then run /mcp in Claude Code to confirm garmin is connected.

Any other MCP client (stdio)

Most clients accept a JSON server entry like this:

{
  "mcpServers": {
    "garmin": {
      "command": "uv",
      "args": ["--directory", "c:\\temp\\garmin-mcp-server", "run", "garmin-mcp"],
      "env": { "GARMIN_PERSONAL_API_KEY": "<your key>" }
    }
  }
}

Tools

All tools are read-only. Dates are YYYY-MM-DD; a missing date means today. Ranged tools accept up to 366 days and split requests to fit Garmin's per-call limits (28/31 days). Tools marked † drop large intraday time series unless called with include_samples=true.

Area

Tools

Activities

search_activities, get_activity, get_activity_workouts

Daily health

get_daily_summary, get_daily_summaries, get_steps, get_stress, get_heart_rate†, get_body_battery†, get_spo2†, get_hydration, get_wellness_activities

Sleep & recovery

get_sleep, get_sleep_summaries, get_hrv†, get_hrv_range, get_fitness_age

Body & profile

get_weight, get_weight_goals, get_heart_rate_zones, get_profile_settings

Not available in the Personal API (so not offered here): training readiness, training status, VO2 max, personal records, and device lists.

Security notes

  • The key is read only from the GARMIN_PERSONAL_API_KEY environment variable and is never logged or included in error messages.

  • Revoke access at any time by deleting the key on Garmin Connect Web.

  • The Personal API is licensed for personal use with your own data only.

Development

uv run pytest

License

Licensed under the Apache License 2.0.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that provides access to Garmin Connect fitness, health, and training data through 61 specialized tools. It enables users to query activities, sleep metrics, and performance stats directly within AI clients like Claude or Cursor.
    97
    117 npm
    185
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Exposes personal Garmin Connect data to MCP-capable clients like Claude and Gemini. Enables querying daily stats, heart rate, sleep, activities, and managing workouts.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that exposes your Garmin Connect data—sleep, HRV, training readiness, workouts, and more—to any MCP-compatible AI assistant. Runs entirely on your machine and keeps your Garmin credentials private.
    MIT