Skip to main content
Glama

Garmin MCP

MCP server that exposes Garmin Connect data (steps, sleep, stress, activities, etc.) via garth and fastMCP. Auth: set GARMIN_EMAIL and GARMIN_PASSWORD in env, or use a saved session at ~/.garth (or GARTH_SESSION_PATH).

MCP config

Use full path to uvx (e.g. which uvx). Example for Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) or Cursor:

{
  "mcpServers": {
    "garmin": {
      "command": "/Users/YOUR_USER/.local/bin/uvx",
      "args": ["--refresh", "--from", "git+https://github.com/lokranjanp/garminmcp", "garmin-mcp"],
      "env": {
        "GARMIN_EMAIL": "your-garmin-email@example.com",
        "GARMIN_PASSWORD": "your-password",

        "SMTP_HOST": "smtp.gmail.com",
        "SMTP_PORT": "587",
        "SMTP_USER": "your-email@gmail.com",
        "SMTP_PASSWORD": "your-app-password",
        "SMTP_TO": "recipient@example.com",
        "OUTPUT_DIR": "/Users/user.mac/garmin_data/",

        "LLM_API_BASE": "http://localhost:1234/v1",
        "LLM_API_KEY": "lm-studio",
        "LLM_MODEL": "your-loaded-model-name"
      }
    }
  }
}

From PyPI (if published): "args": ["garmin-mcp"].

Related MCP server: Garmin MCP Server

Commands

uv sync                    # install from uv.lock
uv run garmin-mcp          # run server locally
uv lock                    # refresh lock after changing pyproject.toml

Tools (17 base + 3 opt-in)

#

Tool

Description

Utility

1

garmin_current_datetime

Current date/time (local & UTC, ISO, weekday)

Auth

2

garmin_login

Log in and save session to disk

3

garmin_resume_session

Load saved session

User

4

garmin_user_profile

Profile (display name, timezone, etc.)

5

garmin_user_settings

Settings (units, preferences)

Metrics (daily/weekly series)

6

garmin_metric

Fetch daily or weekly stat series. metric: steps, sleep, stress, hydration, intensity_minutes, hrv. period: daily or weekly. count: number of periods.

Detailed health data

7

garmin_data

Fetch detailed data (single day or list). data_type: sleep, hrv, weight, body_battery_events, body_battery_stress. Use day for single-day or end_date+days for a range.

Activities

8

garmin_activities

List activities (start, limit)

9

garmin_activity_details

Full details for one activity by ID

10

garmin_activity_types

List all activity types (type IDs and keys)

Biomarkers & summary

11

garmin_daily_summary

One-day wellness: RHR, HR, stress, steps, SpO2, respiration, body battery, calories

12

garmin_resting_heart_rate

Resting heart rate for a date range

13

garmin_summary_report

Comprehensive biomarker + activity report (daily/weekly/biweekly/monthly)

Delivery

14

garmin_email_summary

Generate summary report and send via SMTP email (HTML + plain-text)

Statistical analysis

15

garmin_stats

Run a stats operation on numeric data. operation: describe, percentiles, correlation, trend, compare, moving_average, outliers.

Visualization (matplotlib)

16

garmin_viz

Render a chart. chart_type: line, bar, scatter, histogram, pie, heatmap, multi_line. Returns file path + base64 PNG.

Raw API

17

garmin_connect_api

Call any Connect API path (GET/POST)

LIDA / AI visualization (opt-in, requires LLM_API_KEY)

18

garmin_lida_visualize

AI-driven chart generation -- auto-picks the best chart type

19

garmin_lida_goals

Suggest N visualization goals for a dataset (EDA)

20

garmin_lida_explain

Explain a visualization's code in natural language

Dates: use YYYY-MM-DD; omit end date for "today" where supported.

SMTP env vars (for delivery tools)

Variable

Required

Description

SMTP_HOST

yes

SMTP server (e.g. smtp.gmail.com)

SMTP_PORT

no

Port, default 587 (STARTTLS)

SMTP_USER

yes

Login username / email

SMTP_PASSWORD

yes

Password or app-password

SMTP_FROM

no

Sender address (defaults to SMTP_USER)

SMTP_TO

no

Default recipient(s), comma-separated

SMTP_USE_SSL

no

"true" for implicit SSL (port 465); default uses STARTTLS

LLM env vars (for LIDA visualization tools -- opt-in)

The 3 LIDA tools (garmin_lida_*) are only registered when LLM_API_KEY is set. If omitted, the server loads with 17 tools instead of 20, reducing context overhead for the AI client.

Variable

Default

Description

LLM_PROVIDER

"openai"

LLM provider for LIDA

LLM_API_BASE

(none)

Custom endpoint -- set to http://localhost:1234/v1 for LM Studio

LLM_API_KEY

(none)

API key (use "lm-studio" for LM Studio). Setting this enables LIDA tools.

LLM_MODEL

"gpt-4o-mini"

Model name (for LM Studio: whatever model is loaded)

Visualization output is saved to output/viz/ (or OUTPUT_DIR env var) and also returned as base64 PNG in the JSON response.

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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/lokranjanp/garminmcp'

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