Ask Claude about your training
Connect your Garmin account to Claude in about a minute. Claude reads your sleep, HRV, training status and workouts, and can build and schedule new sessions for your watch.
Free. Works on claude.ai, the phone apps and Claude Desktop.
How did I sleep this week compared with last week?
Used get_sleep_data for 14 nights
You averaged 6 h 52 min asleep, 21 minutes more than last week. Deep sleep peaked on Saturday at 1 h 45 min. Thursday was the short one at 5 h 46 min, right after your interval session.
- Deep
- Light
- REM
- Awake
Set up in three steps
Add a custom connector
In Claude, open Settings, then Connectors, and paste the URL above.
Sign in to Garmin
A Garmin window opens. Sign in, with a code if Garmin asks for one.
Ask
Ask about your sleep, training or workouts. The connector works in the phone app too.
Using Claude Code or another MCP client? See the setup for each app.
What you can ask
Plain questions work. Claude picks the right Garmin tools and shows you which ones it used.
Sleep and recovery
How did I sleep this week compared with last week?
get_sleep_dataWhat has my HRV done over the last month?
get_hrv_data_range
Training
Am I ready to train hard today?
get_training_readinessWhat do my race predictions look like?
get_race_predictions
Workouts
Build 6×400 m at 4:10/km with 2-minute recoveries and schedule it for Thursday
create_workoutschedule_workout
Body
Log 72.4 kg for this morning
add_weigh_inShow my weight and resting heart rate for the past 90 days
get_weigh_insget_rhr_daily
Build with it
The same data, in your own code. A typed TypeScript client for Garmin Connect with no runtime dependencies, plus a workout builder that turns a short description into a valid Garmin workout.
- 200
- methods
- 0
- dependencies
- 18+
- Node.js
npm i garminconnect-jsimport { Garmin, GarminClient } from "garminconnect-js";
const client = new GarminClient();
await client.login(email, password);
const garmin = new Garmin(client);
const sleep = await garmin.getSleepData(date);
const hrv = await garmin.getHrvData(date);Your data stays yours
Everything is open source, so you can check these against the code.
Your password isn't kept
It goes to Garmin once, when you sign in, and is never stored.
Your data isn't kept
Garmin data passes straight through to Claude. The server doesn't save it.
Unused connections expire
The one record per connection is deleted after 35 days without use.