Claude + Garmin Connect
This connects Claude Desktop to your Garmin account. You can then ask it about your actual runs — splits, pace, heart rate, resting HR trends — and have it build structured workouts and put them on your watch.
How technical is this, honestly?
There's no installer to double-click. You'll copy one line into an app called Terminal, press Return, and then answer a few questions it asks you. If you can follow a recipe, you can do this. Nothing here can break your Mac, and every step is undoable.
There's a hosted alternative, MissingMCP, that needs no terminal at all — you paste one address into Claude's connector settings and sign in. It works on the web and on your phone, which this doesn't.
Two differences worth knowing. It reads your data but can't create workouts or put them on your watch. And because Garmin offers no "sign in with Garmin" button, you type your Garmin password into someone else's website — they discard it and keep only the access tokens, but it does leave your account reachable from their server. Everything on this page runs on your own Mac instead, and your password never leaves it. Pick whichever trade you prefer.
Press Cmd + Space, type Terminal, press Return. A window with a blinking cursor appears. That's it — it's just a place to paste instructions.
$ curl -fsSL https://raw.githubusercontent.com/Bartolome69/garmin-mcp/main/scripts/bootstrap.sh | bash
It downloads the code, sets up Python, and gets everything ready. Two to three minutes the first time. Lots of text will scroll past — that's normal.
It will ask for your Garmin email, then your password, then a code if you have two-factor turned on.
Your password will not appear as you type it. No dots, no stars, nothing. That's deliberate, not a frozen screen — type it and press Return.
Your password goes straight to Garmin and is never written to your disk. Only the session token Garmin hands back is saved, in a file readable just by you.
Claude Desktop overwrites its own settings when it closes, so it has to be fully quit for this to stick. Press Cmd + Q — closing the window isn't enough. Then back in Terminal:
$ ~/garmin-mcp/scripts/install-claude-desktop.sh
If Claude is still open it will tell you so and change nothing, so you can't get this wrong. Skip this step entirely if step 2 already said "Done".
Start a new chat. Try one of these — if it answers with your real numbers, you're finished.
Out of the box Claude will answer questions about your data. It gets considerably more useful if you tell it how you want it to work first.
Paste this at the start of a conversation, or put it in a Claude Project's custom instructions so every chat starts there. Read the bracketed lines and replace them — a prompt describing someone else's training is worse than none.
You have access to my Garmin Connect account through the `garmin` MCP server. Use it as my running coach and training analyst. Always pull the data before forming a view. Don't ask me what my paces or heart rates were, and don't reason from memory of earlier messages — call the tools and look. get_activities for recent sessions, get_activity_details for splits and HR zones within one run, get_daily_summary for resting heart rate, body battery and stress. What you should know about my data: - [If you don't wear the watch overnight, say so here: "I don't wear the watch overnight, so get_sleep_data returns nothing and I have no HRV or sleep score. Don't build recommendations on recovery metrics I don't have." Delete this bullet if you do sleep in it.] - [Roughly where your training sits — typical distance, pace and heart rate, and the date you're describing. Tell it to verify rather than assume.] - [Anything it would otherwise get wrong: injuries you're working around, a race you're training for, sports it will see that aren't running.] How I want you to work: - Be direct about what the data does and doesn't support. If three runs isn't enough to call a trend, say so rather than producing a confident narrative. - Notice the boring things that matter: pace drifting up at the same heart rate, cadence dropping late in runs, every run landing in the same narrow effort band, resting heart rate creeping. - When I ask for a session, build it with create_workout and schedule it with schedule_workout so it reaches my watch. Show me the structure and wait for me to confirm before you create it — those write to my real account. - Prefer one specific, well-argued recommendation over a menu of options. - You're not a doctor or physio. If something looks like an injury or health question, say so plainly and stop there. Start by pulling my last three weeks and telling me what you actually see.
This is the most common one, and it isn't your password. Garmin blocks sign-in attempts by network address before it ever checks your credentials. Office wifi, university networks and VPNs get hit hardest, because everyone there shares one address.
The reliable fix: turn off wifi, connect your Mac to your phone's personal hotspot, and run the command again. You only need the clean connection for that one sign-in — afterwards the saved session is used instead.
Almost always step 4. Claude Desktop has to be fully quit (Cmd + Q) when the settings are written, otherwise it replaces them with its own copy when it closes and the connection silently disappears.
Quit it properly, run the step 4 command again, then reopen. Starting a brand new chat afterwards helps too.
That's Garmin's two-factor authentication. The code goes to the email address on your Garmin account, or to your authenticator app — check spam if it's email. Run the command again once you have it; nothing is lost by retrying.
Then your watch wasn't on your wrist overnight, or hasn't synced. Sleep, HRV and overnight body battery only exist if you wear it while asleep. Everything else — runs, splits, heart rate, resting HR — works regardless.
Claude reads what's in Garmin Connect, not what's on the watch. Open the Garmin Connect app on your phone and let it sync, then ask again.
Delete the garmin-mcp folder in your home directory and the
hidden .garmin-mcp folder next to it — that's the saved session
gone. Then remove the "garmin" entry from Claude Desktop's settings file.
Nothing is installed anywhere else, and nothing changes on Garmin's side.
Nothing here is Claude-specific underneath — it speaks MCP, an open standard.
Any app that can start a local MCP server will run it: Claude Code, Cursor,
VS Code, Zed, Windsurf. Point them at python -m garmin_mcp over
stdio; the
repo
has the config to copy.
ChatGPT is the exception, and it's a hard no. Its connectors need a public web address to call, because ChatGPT runs on OpenAI's servers and can't start a program on your laptop. There's no setting that changes that. If you want Garmin data in ChatGPT today, MissingMCP is hosted, so it fits — read-only, and you sign in with your Garmin password on their site.
Everything runs on your own Mac. Your Garmin data is never sent anywhere except between your computer and Garmin, and your password is never stored.
Reading is unrestricted: daily summaries, sleep, activities, splits, heart-rate zones. Writing is deliberately limited to two things — creating a workout and putting it on a date. There is no ability to delete or overwrite anything in your Garmin account, by design. The worst it can do is leave you a workout you don't want, which you delete in the Garmin app like any other.