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: Garmin 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.
Latest Blog Posts
- 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