Claude + Garmin Connect

Let Claude read your running data

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.

Before you start

Computer
A Mac
App
Claude Desktop, installed
Account
Garmin Connect login
Time
About 10 minutes

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.

If even that's more than you want

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.

Setting it up

  1. Open Terminal

    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.

  2. Paste this and press Return

    Terminal
    $ 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.

  3. Sign in to Garmin when it asks

    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.

  4. Quit Claude Desktop, then run one more line

    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:

    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".

  5. Open Claude Desktop and ask it something

    Start a new chat. Try one of these — if it answers with your real numbers, you're finished.

    • "What did my last run look like? Break it down by kilometre."
    • "How has my resting heart rate moved over the past two weeks?"
    • "Compare my last three runs — am I running them all at the same effort?"

Make it a coach, not a lookup tool

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.

Training prompt
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.

When it doesn't work

It said something about being rate limited, or a 429

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.

Claude says it can't find any Garmin tools

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.

It asks for a code I never receive

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.

It says there's no sleep data

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.

My data looks out of date

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.

How do I remove it?

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.

Using it somewhere other than Claude Desktop

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.

What it can and can't touch

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.