Garmin MCP
Provides tools to access Garmin Connect data including steps, sleep, stress, activities, daily summaries, and more. Also offers statistical analysis and visualization of health metrics.
Enables sending email summaries via SMTP, using Gmail as an example provider.
Allows AI-driven chart generation and visualization explanations using an OpenAI-compatible LLM.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Garmin MCPshow my steps for the last 7 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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: garth-mcp-server
Commands
uv sync # install from uv.lock
uv run garmin-mcp # run server locally
uv lock # refresh lock after changing pyproject.tomlTools (17 base + 3 opt-in)
# | Tool | Description |
Utility | ||
1 |
| Current date/time (local & UTC, ISO, weekday) |
Auth | ||
2 |
| Log in and save session to disk |
3 |
| Load saved session |
User | ||
4 |
| Profile (display name, timezone, etc.) |
5 |
| Settings (units, preferences) |
Metrics (daily/weekly series) | ||
6 |
| Fetch daily or weekly stat series. |
Detailed health data | ||
7 |
| Fetch detailed data (single day or list). |
Activities | ||
8 |
| List activities (start, limit) |
9 |
| Full details for one activity by ID |
10 |
| List all activity types (type IDs and keys) |
Biomarkers & summary | ||
11 |
| One-day wellness: RHR, HR, stress, steps, SpO2, respiration, body battery, calories |
12 |
| Resting heart rate for a date range |
13 |
| Comprehensive biomarker + activity report (daily/weekly/biweekly/monthly) |
Delivery | ||
14 |
| Generate summary report and send via SMTP email (HTML + plain-text) |
Statistical analysis | ||
15 |
| Run a stats operation on numeric data. |
Visualization (matplotlib) | ||
16 |
| Render a chart. |
Raw API | ||
17 |
| Call any Connect API path (GET/POST) |
LIDA / AI visualization (opt-in, requires | ||
18 |
| AI-driven chart generation -- auto-picks the best chart type |
19 |
| Suggest N visualization goals for a dataset (EDA) |
20 |
| 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 |
| yes | SMTP server (e.g. |
| no | Port, default |
| yes | Login username / email |
| yes | Password or app-password |
| no | Sender address (defaults to |
| no | Default recipient(s), comma-separated |
| no |
|
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 for LIDA |
| (none) | Custom endpoint -- set to |
| (none) | API key (use |
|
| 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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Garmin Connect that provides read-only access to daily health metrics, activities, workouts, and body composition data.Last updated32MIT
- Alicense-qualityCmaintenanceMCP server to interact with Garmin Connect, enabling retrieval of health, activity, and device data through natural language.Last updated63MIT
- Alicense-qualityCmaintenanceExposes personal Garmin wellness data through MCP tools for accessing summary, sleep, HRV, heart rate, stress, body battery, and historical data.Last updatedMIT
- Alicense-qualityCmaintenancePersonal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.Last updated1MIT
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
MCP server for Altmetric APIs - track research attention across news, policy, social media, and more
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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