Garmin MCP

Garmin MCP

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

Category
Visit Server

README

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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured