Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

MCP server that exposes Garmin Connect health and activity data (steps, sleep, stress, activities, etc.) via tools for querying, analysis, and visualization.

README.md

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"].

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.

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use Other servers.