garmin-mcp
Provides tools to access and query Garmin Connect data, including activities, sleep, heart rate variability, body battery, training load, HR zones, weight/hydration, and gear, with a live dashboard.
Click on "Deploy 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 last 5 runs"
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 β Claude Β· Self-Hosted MCP Server + Live Dashboard
Put your Garmin Connect data inside Claude β and run your own private health & triathlon dashboard β on a small server that's entirely yours.
π£οΈ Ask your body data in plain English in Claude (web, desktop, mobile): "How did I sleep?", "Show my last 5 runs", "Am I recovered for a hard session?"
π A live dashboard at
/dashboardβ body battery, sleep, heart rate, stress, VOβ max, training load, HR zones, weight/hydration, and a Swim / Bike / Run view that fills in as you train.π Private by design β runs on your Railway account, locked with your bearer token. Your Garmin password never leaves your own computer.
Built for the community by Sudhakar Reddy Gade Β· π Full step-by-step guide (no coding needed): https://www.nirvedha.com/garmin-dashboard/
Quick start
The easy way β let Claude Code do it
Install Claude Code, open it in an empty folder, and paste the ready-made prompt from the guide. It clones this repo, mints your Garmin token, deploys to Railway, and hands you your connector + dashboard URLs. You only approve the Railway login and type your Garmin password into your own terminal.
The hands-on way
Fork this repo and follow the guide
(8 clicks-and-copy steps, ~20 minutes) or the concise SETUP.md.
In short: fork β deploy on Railway β add a volume at /root/.garminconnect β
set four variables β generate a domain β add to Claude.
Related MCP server: Garmin Connect MCP Server
What you get
MCP tools | 90+ Garmin tools (activities, sleep, HRV, body battery, training, gear, β¦) usable from Claude |
Transport | Streamable HTTP at |
Auth | Bearer token on every request (header or |
Dashboard | Server-rendered, live-on-refresh single page at |
Persistence | Garmin OAuth tokens on a mounted volume, auto-refreshing |
Cost | ~$5/month on Railway's Hobby plan |
Environment variables
Variable | Required | Purpose |
| Yes | Bearer token guarding |
| Recommended | Pre-minted Garmin OAuth blob β avoids logging in from a cloud IP (Garmin blocks those) |
| Yes |
|
| Yes |
|
| Fallback | Full login if no token blob; may trigger MFA |
| Auto | Injected by Railway; the server binds it |
| Optional | Local-day offset for the dashboard (default |
See SETUP.md for the full list, token rotation, and re-auth.
Security model
Fail-closed: the server refuses to start without a strong
MCP_ACCESS_TOKEN, so the endpoint is never exposed unprotected β not even briefly.The bearer check runs before the MCP app, so unauthorized callers get
401and never reach your data.Your Garmin password is only ever used locally to mint a token blob; the deployed server uses the blob (read-scoped OAuth tokens), never the password.
.gitignorekeeps.env, tokens, and caches out of git.
Architecture
Claude (web / desktop / mobile) ββHTTPS + bearer tokenβββΊ Railway service
β
BearerAuthMiddleware βββΊ /healthz (open) Β· /mcp Β· /dashboard
β
FastMCP (90+ tools) + dashboard API
β
garminconnect + garth βββΊ Garmin API
(OAuth tokens on a persistent volume)Local development
uv sync
# stdio (for Claude Desktop config):
GARMIN_MCP_TRANSPORT=stdio uv run garmin-mcp
# streamable HTTP + dashboard:
MCP_ACCESS_TOKEN=$(python3 -c "import secrets;print(secrets.token_urlsafe(32))") \
GARMIN_MCP_TRANSPORT=streamable-http uv run garmin-mcp-http
# mint a Garmin token blob (interactive):
uv run garmin-mcp-mintCredits
Stands on the shoulders of the open-source
garmin_mcp by Taxuspt and the
Docker + streamable-HTTP fork by k8sautom8. This repo adds a bearer-token
security layer, $PORT/proxy fixes, and the live triathlon dashboard.
License
MIT β free to use, change, and share. See LICENSE.
Shared as a community resource by Nirvedha Executive Coaching Solutions, Hyderabad Β· https://nirvedha.com
This server cannot be deployed
Maintenance
Related MCP Connectors
Garmin data in Claude: 135 tools β activities, sleep, HRV, training, workouts. Free, open source.
tri-train is a training platform for triathletes that syncs activities from Strava and Garmin and exposes them to Claude through a remote MCP server. Ask Claude how your last block went, why your run pace dropped, or whether you are fresh enough for Sunday's race, and it answers from your real data: activities with laps and grade-adjusted pace, weekly load and the performance management chart (CTL/ATL/TSB), sleep, HRV and resting heart rate, and your race calendar with predictions. Claude can also act: create and adjust planned workouts with structured intervals, push them to your Garmin watch, add races and write notes. Every change is journaled and can be undone. Read and write access are separate OAuth scopes, and the server enforces them on every call. Built and hosted in Switzerland by a triathlete; data stays on our own servers (Swiss revDSG / GDPR).
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Adaptive running coach MCP server β training data, plans, and recovery for AI assistants.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that connects Garmin Connect data to Claude, enabling training analysis, recovery checks, and personalized plans based on real metrics like HRV, training load, and activities.21MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server for Garmin Connect integration. Access your activities, health data, training metrics, and more through Claude and other LLMs.2265MIT
- AlicenseAqualityDmaintenanceA read-only MCP server that gives Claude Desktop access to your Garmin Connect data β daily health metrics, sleep, activities, training status, and body composition.6MIT
- AlicenseNot gradedqualityBmaintenanceA local, single-user, read-only MCP server that gives Claude Code access to your Garmin health and training data, exposing tools for health snapshots, training status, run details, body metrics, and training analysis.1MIT