Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Garmin Connect

by DynamicsNinjaversion 0.11.0i★ –iRuns in the cloud
Registry nameio.github.DynamicsNinja/garminconnect

Install

Overview

Description from the maker (original English)

Unofficial Garmin Connect access: sleep, HRV, training, activities, workouts and weight.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs in the cloud
  • Transport: Streamable HTTP
  • Category: Clinics & health

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 3 of 3 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://garmin.ficdev.xyz/mcp

Run this in your terminal

claude mcp add --transport http garminconnect https://garmin.ficdev.xyz/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "garminconnect": {
      "url": "https://garmin.ficdev.xyz/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "garminconnect": {
      "type": "http",
      "url": "https://garmin.ficdev.xyz/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://garmin.ficdev.xyz/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

The server asks you to sign in before it lists its tools.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account DynamicsNinja, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 942 ms (HTTP 401)

  • ✓ Pass

    Sign-in with OAuth

    Declares OAuth sign-in, so your AI app can take you to log in

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Clinics & healthi

  • More stars than 0% of the other 1021 servers in this category
  • Published to the registry more recently than 77% of the other 1021 servers in this category
  • Basic checks equal to or better than 100% of the other 1021 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Garmin Connect safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.11.0) reached the registry 7 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Mirobody, FHIR MCP Server, Google Health MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Mirobody

by thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

Runs on your computer★ 1,408Apache-2.0Updated today
Install

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

Runs on your computer★ 137Apache-2.0Updated 9 days ago
Install

Google Health MCP

by davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

Runs on your computer★ 79MITUpdated 4 months ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

@dynamicsninja/garminconnect-mcp

Talk to Claude to create Garmin workouts, and read or manage the rest of your Garmin Connect data, through an MCP server built on garminconnect-js.

"Make me a 6×400 m session at 5k pace with 2-minute jog recoveries, put it on Thursday, and send

it to my watch."

Claude previews the workout, waits for your OK, saves it to your Garmin workout library, schedules it, and pushes it to your device.

Unofficial: not made by, or affiliated with, Garmin.

Use it without installing

A hosted copy runs at https://garmin.ficdev.xyz/mcp. You sign in to Garmin once in a browser window and get the same tools, with nothing to install.

  • claude.ai: Settings, Connectors, Add custom connector. Paste the URL and sign in to Garmin in the window that opens. It then shows up in Claude Desktop and mobile on the same account.
  • Claude Code: claude mcp add --transport http garmin https://garmin.ficdev.xyz/mcp
  • Other MCP clients: add a streamable-HTTP server with that URL.

How it differs from the local server:

  • There is no sign_in_to_garmin tool. You sign in when you add the connector.
  • Upload tools take filename and content, plus encoding: "base64" for .fit files. The cap is 10 MB.
  • Downloads come back in the chat instead of being saved to a folder. The cap is 5 MB.

To disconnect, remove the connector. You can also tick "Disconnect my other Garmin connections" on your next sign-in. Privacy details are in PRIVACY.md.

What you need

  • Node.js 18 or newer (node --version to check).
  • A Garmin Connect account.
  • Claude Desktop, or any other MCP client (see Other MCP clients).

Set up

Easiest: the Claude Desktop Extension
  1. Download garminconnect-mcp- .mcpb from the latest release.
  2. Double-click it (or drag it onto Claude Desktop's Settings → Extensions) and choose Install.
  3. Ask Claude something about your Garmin data. The first time, Claude opens a Garmin sign-in page in your browser; sign in there (with your MFA code if you use one) and tell Claude you're done.

Optional settings (tool groups, download folder) are under Settings → Extensions → Garmin Connect.

Other ways to install: npm
1. Install
npm install -g @dynamicsninja/garminconnect-mcp

Install it once rather than running it through npx: Claude Desktop starts several copies of a server at the same moment, and parallel npx installs into one cache folder can break each other (ERR_MODULE_NOT_FOUND … ajv/dist/2020.js).

2. Sign in to Garmin

In a terminal (your password never passes through Claude):

garminconnect-mcp login

It asks for your Garmin email (or, on older accounts, your username), password and, if you use it, your MFA code. The session is saved to ~/.garminconnect-mcp/tokens and renews itself as long as it is used at least once every 30 days.

3. Add it to Claude Desktop

Settings → Developer → Edit Config, and add a garmin entry to claude_desktop_config.json. Point node at the installed server. To find the path, run npm root -g and append /@dynamicsninja/garminconnect-mcp/dist/cli.js.

Windows (use forward slashes):

{

"mcpServers": { "garmin": { "command": "node", "args": ["C:/Users/ /AppData/Roaming/npm/node_modules/@dynamicsninja/garminconnect-mcp/dist/cli.js"] } } }

macOS / Linux:

{

"mcpServers": { "garmin": { "command": "node", "args": ["/usr/local/lib/node_modules/@dynamicsninja/garminconnect-mcp/dist/cli.js"] } } }

If node itself is not found (common with nvm), use its full path from which node as command.

4. Restart Claude Desktop

Quit it completely: tray / menu-bar icon → Quit. Closing the window leaves it running, and it will not read the new config. Start it again, open a new chat, and the Garmin tools appear under the tools icon in the message box.

Using it

Just ask. Some things to try:

  • "Create a strength workout: 3 rounds of 10 back squats at 60 kg, 12 push-ups and a 1-minute plank, 90 s rest between rounds."
  • "Build a swim set for a 25 m pool: 400 easy, 8×100 free on 15 s rest, 200 cool-down."
  • "Schedule that workout for Thursday and send it to my watch."
  • "How did I sleep last night, and what's my training readiness today?"
  • "Summarise my last run: distance, pace, average heart rate and training effect."
  • "What are my race predictions, and how has my HRV trended this month?"
  • "Find my runs over 10 km since June, longest first, and compare their average heart rate."

Workouts are always previewed first. Claude shows the workout in readable form (steps, targets, paces in /km and /mi) and saves nothing until you confirm. Exercise names are checked against Garmin's catalogue, and a mistake in a workout comes back to Claude with exactly where it is, so it can fix it.

Claude Desktop asks before each tool call. You can allow a tool once or always. Tools that delete or overwrite data (deleting activities, workouts, gear, weigh-ins, and so on) are marked destructive, and Claude is told to confirm with you before using them.

What it can do

  • `sign_in_to_garmin`: signs you in through a page that opens in your browser, MFA included, with no terminal needed. See Easiest: the Claude Desktop Extension above.
  • Workouts: preview_workout, create_workout, update_workout, search_exercises, for running, cycling, swimming, strength, HIIT, yoga, pilates, mobility, cardio, rucking and multi-sport; plus listing, scheduling, sending to your watch and deleting.
  • Everything else in garminconnect-js: sleep, HRV, stress, Body Battery, whole-day summaries over up to a year at a time, training readiness and status, race predictions, activities (list, search by type, distance, duration, power, dates, text or place, details, the workout done, download, upload files, RPE and feel), gear, courses, race calendar, devices, badges, weigh-ins and weight goals, food logging (with Garmin Connect+), and more. One tool per library method.

Not exposed: logout (it would delete your saved session), the raw-JSON workout uploads (the checked create_workout replaces them), and the raw GraphQL passthrough unless you opt in.

Settings (environment variables)

VariableDefaultMeaning
GARMIN_MCP_TOKEN_DIR~/.garminconnect-mcp/tokensWhere the session is saved
GARMIN_MCP_DOWNLOAD_DIR~/Downloads/garminWhere downloaded files (FIT, GPX, …) go
GARMIN_MCP_GROUPSallComma-separated tool groups: wellness, activities, metrics, workouts, gear, courses, calendar-events, devices, badges-challenges, body-composition-weight, womens-health, golf, profile-and-misc. Matched case-insensitively; an unknown name is ignored (and if none you list are valid, everything loads). The workout-builder tools are always on. Fewer groups means less of Claude's context used.
GARMIN_MCP_ENABLE_GRAPHQLoffSet to 1 to expose query_garmin_graphql

Set them under "env" in the config entry, for example:

"garmin": {

"command": "node", "args": ["…/dist/cli.js"], "env": { "GARMIN_MCP_GROUPS": "workouts,metrics,wellness,activities" } }

GARMIN_EMAIL (an email or, on older accounts, a username) and GARMIN_PASSWORD, when both are set, work like the extension's email and password settings: the server signs in by itself when there is no saved session (not with MFA).

If you change GARMIN_MCP_TOKEN_DIR, sign in with the same value (GARMIN_MCP_TOKEN_DIR=/path/to/dir garminconnect-mcp login), or the server won't find your session.

Troubleshooting

  • The tools don't appear. Make sure Claude Desktop was fully quit and restarted (step 4). Then Settings → Developer → garmin shows the server's status and a link to its log.
  • "Not logged in to Garmin" or "session expired": ask Claude to sign in again (it calls sign_in_to_garmin), or run garminconnect-mcp login again. The running server picks up the new session on the next request; no restart needed.
  • Sign-in page didn't open: Claude's reply includes the link; open it in any browser on this computer. It expires after 15 minutes; ask Claude to sign in again.
  • `ERR_MODULE_NOT_FOUND` after trying npx: delete the _npx folder in your npm cache (npm config get cache shows where) and use the global install above.
  • "Garmin is rate limiting requests": Garmin throttles bursts of calls. Wait a minute and ask again.
  • HTTP 412 when saving anything (EU accounts): grant upload consent in Garmin Connect's settings once; until then Garmin refuses every write.
  • Very detailed activity data looks cut off: a single tool result is capped at 100,000 characters, and per-second activity data (get_activity_details) is usually larger. Ask for a summary instead, or download the activity file (download_activity) and open it elsewhere.

Updating

npm install -g @dynamicsninja/garminconnect-mcp@latest

then quit and restart Claude Desktop. Your saved session is kept.

Other MCP clients

Any client that can start a stdio server works. The command is garminconnect-mcp (or node …/dist/cli.js). For example, in Claude Code:

claude mcp add garmin -- garminconnect-mcp

Good to know

  • Dates are calendar dates in UTC (YYYY-MM-DD).
  • Everything runs on your machine. Your Garmin session stays in your token folder and is sent only to Garmin. See PRIVACY.md for the full picture.
  • Garmin Connect's API is unofficial and can change. This server is released in lockstep with garminconnect-js, and each release is tested against the library version it contains.
Ask PopNx