Garmin Connect Personal API

io.github.hanntaPublished by GitHub account hanntav1.1.1Updated Nov 7, 2026

Read-only Garmin Connect data on Garmin's official Personal API: training, sleep, HRV, recovery.

VerifiedSTDIODesktop onlyLocation & LifestyleData & Analytics

Overview

AI-generated overview

Read-only MCP server that lets an assistant query your own Garmin Connect training, sleep, HRV, recovery and wellness data via Garmin's official Personal API.

What you can do
  • Review a day or date range at a glance: sleep, HRV, Body Battery, stress, resting heart rate, steps, intensity minutes and activities
  • Search activities and inspect one in depth: pace, heart-rate zones, running dynamics, power, training effect, laps and interval reps, time-series streams, structured workouts
  • Read sleep and HRV detail per night, including score components, sleep need and baseline status
  • Pull daily summaries, heart rate, SpO2, stress, hydration, food log, weight and body composition, fitness age, heart-rate zones and weight goals
  • Read wellness sessions and menstrual cycle data, including logged flow, symptoms and moods
When to use it
Useful when you want an assistant to interpret your own Garmin training and recovery data, for example reviewing a training block, comparing sleep and HRV trends, or explaining why recovery changed. It is read-only, so it suits analysis and coaching conversations rather than editing anything in Garmin Connect.
Requirements
A Garmin Connect Personal API key, created in Garmin Connect on the web, supplied as GARMIN_PERSONAL_API_KEY or saved by the server's auth command. Local use needs Node.js 22+ and runs via npx over stdio; remote hosting on your own Cloudflare account is optional. Network access to Garmin's API is required.
Before you install
The server handles sensitive health data, including sleep, HRV, heart rate, body composition, food log and menstrual cycle information; the README states location, sexual activity and sex-drive data are never returned. The Personal API key is a secret and should be kept out of shared configs. All tools are read-only, so no Garmin data is changed. Self-hosting on Cloudflare involves a passphrase for owner sign-in.

Installation

In SourceWeft

  1. Open Garmin Connect Personal API in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Watch with a heart-rate line]

Garmin Connect Personal API MCP

Not affiliated with or endorsed by Garmin. Garmin and Garmin Connect are trademarks of Garmin Ltd.

A read-only MCP server that gives AI assistants your own Garmin Connect training, recovery and health data through the official Garmin Connect Personal API. Run it on your own computer, or host it on your own Cloudflare account to use it from anywhere.

AI agents: to set this up for a user, follow docs/AGENT-SETUP.md.

Setup

You need a Garmin Connect Personal API key, which you create in Garmin Connect on the web.

Run locally

The quickest way, for Claude Code, Claude Desktop, Cursor, VS Code and other clients that run local servers. Needs Node.js 22+.

Paste this into your coding agent:

text
Connect @hannta/garmin-connect-personal-api-mcp

Or do it yourself: docs/LOCAL.md.

Host on Cloudflare

For Claude on the web and on mobile, and any other client that connects to remote servers with OAuth. The free plan is enough, apart from one known limitation.

Then connect your MCP client, such as Claude, ChatGPT, Cursor or VS Code.

Tools

ToolWhat it returns
garmin_get_dayOne day at a glance: sleep, HRV, Body Battery, stress, resting HR, intensity minutes, activities
garmin_get_daysThe same over a date range, one row per day, with daily activity totals and training load
garmin_search_activitiesActivities in a date range with Garmin IDs and fastest splits, or totals per week
garmin_get_activityOne activity in depth: pace, HR zones, running dynamics, power, training effect, interval totals, strength sets per exercise
garmin_get_activity_streamsOne activity's time series (HR, pace, grade-adjusted pace, cadence, power, elevation, …)
garmin_get_activity_lapsOne row per lap and interval rep, from the activity's FIT file
garmin_get_sleepOne night's sleep in detail: score components with optimal ranges, sleep need and why it changed, naps
garmin_get_sleep_summariesSleep per night over a date range
garmin_get_hrvOne night's HRV with baseline, status and overnight readings
garmin_get_hrv_summariesHRV per night over a date range
garmin_get_daily_summariesResting HR, Body Battery, stress, intensity minutes, steps per day over a date range
garmin_get_weightWeigh-ins and body composition over a date range
garmin_get_profileProfile settings and heart-rate zones
garmin_get_body_batteryBody Battery per day: charged, drained and the sleep / activity events behind it
garmin_get_stressStress per day: average level and minutes at rest / low / medium / high
garmin_get_stepsSteps per day with goal and distance
garmin_get_heart_rateOne day's resting / min / max heart rate, optionally averaged per 15 minutes
garmin_get_spo2One day's blood oxygen (Pulse Ox), optionally hourly with altitude
garmin_get_fitness_ageFitness age and its components (resting HR, BMI, vigorous days / minutes)
garmin_get_heart_rate_zonesHeart-rate zones per sport
garmin_get_weight_goalsWeight goals in effect (target kg)
garmin_get_activity_workoutsThe structured workout an activity followed: steps, targets (HR, pace, power) and repeats
garmin_get_hydrationHydration per day: intake, goal, sweat loss (ml)
garmin_get_food_logOne day's food log: calories and macros eaten vs. goals, per meal and food
garmin_get_wellness_activitiesWellness sessions (e.g. Health Snapshot, breathwork) with HR, stress, HRV, SpO2
garmin_get_menstrual_cycleCycle day, period and fertile window, predictions and cycle analysis
garmin_get_menstrual_dayOne day's logged flow, symptoms and moods, with that day's cycle summary

Good to know

  • Range tools default to the last 7 days. If a range is too long for one Garmin request, the error says the maximum and the assistant splits it into several calls.
  • Output is metric, with the unit in every field name. Dates are YYYY-MM-DD in your time zone; sleep and HRV are keyed by the wake-up date.
  • Location, sexual activity and sex drive data are never returned.
  • Known limitation: garmin_get_activity_laps can fail on long activities on the Cloudflare free plan. See Known limitations.

Development

Requires Node.js 24+.

bash
npm installcp .dev.vars.example .dev.vars   # then add GARMIN_API_KEY and OWNER_PASSPHRASEnpm run check                     # typecheck, lint, format check, testsnpm run today                     # print today's recovery data using your keynpm run dev                       # MCP server at http://localhost:8787/mcpnpm run build                     # local server in dist/cli.mjs

To try the local server, connect the MCP Inspector to it and sign in with OWNER_PASSPHRASE.

Architecture and conventions: docs/DEVELOPMENT.md.

License

MIT

Source: README.md at commit f8f1df1

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.1.1LatestNov 7, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts