garmin-mcp
Provides read-only access to Garmin Connect data, including activities and original FIT files, health metrics such as sleep, HRV, Body Battery and training readiness, training status and trends, race predictions, personal records, gear, and social challenges.
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-mcpWhat was my sleep score last night?"
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
Talk to your Garmin data. A read-only MCP server that lets Claude and ChatGPT answer questions about your training: activities, sleep, HRV, Body Battery, training status, challenge leaderboards - and, unlike other Garmin MCP servers, the original FIT file your watch wrote, including Connect-IQ sensor channels (Stryd, Moxy/SmO2, CORE).
You: How did my last long run compare to the same route in June?
You: Why is my training readiness so low this morning?
You: Where do I stand in the running challenge, and who is ahead of me?
You: Did my Stryd actually record power on Tuesday's session?It never writes to Garmin Connect. Every tool is read-only.
Three ways to use it
1. Guest access | 2. Local | 3. Your own server | |
Status | invitation only, open access planned | available | available |
You need | an invitation | Python 3.12 | a server, a domain, Docker |
You run | nothing | the server on your machine | the server for you and your friends |
Works with | claude.ai, ChatGPT, Claude Desktop, Claude Code | Claude Desktop, Claude Code | everything |
Setup | 5 minutes | 2 minutes | 20 minutes |
Your data lives | on the instance that invited you | only on your machine | on your server |
Guide |
1. Guest access - the only route that needs no infrastructure at all: open the invitation link, create an account, connect your Garmin, done. Like route 3, it works with claude.ai in the browser and with ChatGPT - route 2 cannot, because neither of those can start a program on your computer.
Guest access is not open yet. It currently runs with a small group of testers, by personal invitation. A public way to request an invitation is planned - until then, routes 2 and 3 are ready to use today.
2. Local - nothing leaves your machine, no accounts, no server. Your AI client starts the process when it needs it. Best if you use Claude Desktop or Claude Code anyway and want to keep everything local.
3. Your own server - the same software as behind guest access. Run it for yourself, invite whoever you like, own the data. See docs/self-hosting.md.
Quickstart (local)
uv tool install git+https://github.com/mskerwiderski/mcp-garmingarmin-mcp loginThe login asks for your Garmin e-mail, password and - if you use it - your
multi-factor code. It stores only Garmin's OAuth tokens, in
~/.garmin-mcp/tokens.json with mode 0600. Your password is never written
anywhere.
Then register the server with your client:
claude mcp add garmin -- garmin-mcp serveStart a new session and ask something. Full walkthrough, including Claude Desktop: docs/install-claude.md.
Documentation
Guide | What is in it |
Getting an invitation and using it, start to finish | |
Claude Desktop, Claude Code, claude.ai, troubleshooting | |
Developer mode, custom connector, troubleshooting | |
What to ask, what comes back, what the numbers mean | |
Every tool, its parameters and an example response | |
Server setup, invitations, administration, upgrades | |
Design decisions, and the Garmin quirks behind them |
What it can answer
Activities - list and filter by sport and date, Garmin's own summary of one activity, and the same activity as the device recorded it, straight from the FIT file. Time series for any channel in the file, pool swim detail down to the single length, and which Connect-IQ sensors actually delivered data.
Health - one call per day gives steps, resting heart rate, stress, Body Battery, sleep phases with score, HRV status and training readiness. Plus training status with load focus and VO2max, body composition and blood pressure over a date range.
Trends and plan - a whole month of steps, Body Battery and VO2max in one call instead of one per day; the scheduled side of Garmin with training-plan workouts and races, so "what was planned" and "what happened" can be compared.
Where you stand - race predictions for 5k to marathon, fitness age, endurance and hill score, lifetime totals, and your personal records with the activity that set each one.
Context - your thresholds and heart rate zones, your gear with the activities, kilometres, hours and days behind it, and the social challenges you run against friends, including the one currently in progress.
See docs/tools.md for the full list with parameters.
Why the login happens on your machine
Garmin's SSO sits behind Cloudflare, which since March 2026 answers fresh logins
from datacenter IPs with 429 or 403. So garmin-mcp login runs where you are.
The resulting OAuth1 token is valid for about a year and mints access tokens
against connectapi.garmin.com, so nothing after the login touches
sso.garmin.com again.
A hosted server offers both: a login form (the password is used once and never
stored) and pasting the token blob from garmin-mcp export, which is the way in
when Garmin blocks the server's address.
Good to know
This uses Garmin's internal Connect API - the same one every community tool uses. There is no official API for individuals; Garmin's Health API is a partner programme. Use this for your own account, and keep a hosted instance to people you actually know: all accounts on one server share one address towards Garmin.
Responses are deliberately small. Garmin answers with hundreds of fields per activity and time series of thousands of points; everything is projected down to what a model can actually use, and streams are resampled with min/max/avg per channel. That is not cosmetic - the raw payloads would eat the context window the conversation needs.
Development
python3.12 -m venv .venv && .venv/bin/pip install -e ".[dev]".venv/bin/pytest103 tests, no network access required - the Garmin API and the FIT files are stubbed or synthesised. See docs/architecture.md for how the pieces fit together.
License
MIT. See LICENSE.
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 Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
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/mskerwiderski/mcp-garmin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server