← Back to Garmin School
Day 1361 views

Claude Checks My Garmin Every Morning and Tells Me If I'm Getting Sick

Claude Checks My Garmin Every Morning and Tells Me If I'm Getting Sick

Four metrics shift before you feel anything — HRV, resting heart rate, respiration and blood oxygen. Here's the connector setup and the exact scheduled prompt that turns them into a daily illness score.

claudeaimcphrvhealthgarmin-school
Claude AI

Claude spotted it in my Garmin data before I felt anything

When you're coming down with something, your body raises flags before you notice. Your immune system is already working, and four measurements move while you still feel fine:

  • HRV drops
  • Resting heart rate creeps up
  • Respiration rate rises
  • Blood oxygen dips

Your Garmin already records all four every night. The problem is that no single one means much on its own — HRV drops after a glass of wine, resting heart rate rises in a warm bedroom. It's the combination that matters, and nobody checks four trends manually every morning.

So I have Claude do it, as a scheduled task, every day.

Step 1: connect Garmin to Claude

This uses MissingMCP, a free open-source gateway between your Garmin account and an AI assistant. No terminal, no coding.

  1. Copy the MCP URL: https://missingmcp.com/garmin/mcp
  2. In Claude, go to your connector settings and add a custom connector, pasting that URL
  3. Sign in with your Garmin Connect account when prompted

That's it. Your password is used once for the login and then discarded — only encrypted tokens are kept, it runs on OAuth 2.1, and the whole codebase is public if you want to audit it. Check the setup guide on the site, since the exact connector menu differs slightly between Claude and ChatGPT.

One ask: this is free, open source, and maintained by one person. If you actually end up using it every day, buy them a coffee. Tools like this only keep existing when the people using them chip in.

Step 2: run this as a daily scheduled task

Set it to run each morning. It pulls last night's numbers plus your previous 14 days, works out your personal baseline, and returns a 0–100 illness score as a Garmin-style gauge.

Every morning, check whether my body is showing early signs of illness, and show me the result as a gauge.

## Step 1 — Pull my Garmin data

Today's date is the "target date". Pull these four metrics for last night, plus the previous 14 days so you can work out my personal baseline.

1. HRV — overnight average, in ms
2. Resting heart rate — in bpm
3. Respiration rate — the SLEEPING average, in breaths/min. Never the waking value; it is incomplete this early in the day.
4. Blood oxygen (SpO2) — overnight average, as a percentage

Use whichever Garmin tools are available to you. Trend tools that take a date range are cheaper than one call per day, so prefer those. If a metric needs a separate call per day, fetch at most 8 days for it.

If a metric returns nothing, returns errors, or gives you fewer than 4 days of history, mark it UNAVAILABLE and move on. Do not retry more than once, and do not stall the whole task on it. SpO2 is the most common one to be missing, because it only records if Pulse Ox is set to "During Sleep" or "All Day".

If fewer than two metrics are available, stop and tell me which ones are missing and why, instead of producing a score.

## Step 2 — Work out my baselines

For each available metric, the baseline is the average of the last 7 days BEFORE the target date. Exclude last night itself, otherwise last night's value drags its own baseline toward it. If you have 4-6 days, use what you have and say so.

## Step 3 — Deviations

For each available metric, work out how far last night sits from baseline, in the direction that signals illness:

- Resting heart rate: today minus baseline (rising is the signal)
- Respiration: today minus baseline (rising is the signal)
- HRV: baseline minus today (falling is the signal)
- SpO2: baseline minus today (falling is the signal)

Then convert each to a 0-1 number by dividing by its full range, and clamp to 0-1 so a healthy direction counts as 0 rather than a negative:

- Resting heart rate: divide by 7 bpm
- HRV: divide by 15 ms
- Respiration: divide by 3 breaths/min
- SpO2: divide by 3 percentage points

## Step 4 — Weighted score, adjusted for missing metrics

Weights: resting heart rate 30, HRV 25, respiration 25, SpO2 20.

Only use the metrics that are actually available. Divide the weighted total by the sum of the weights you actually used, so the result is always 0-1 no matter how many metrics you have:

    base = (sum of weight x deviation) / (sum of weights used)

## Step 5 — Confluence multiplier

A metric is FLAGGED when its 0-1 deviation is above 0.35.

Count the flags across the available metrics:

- 0 flags: multiply by 0.5
- 1 flag: multiply by 0.6 — one metric alone moves for alcohol, heat, a late meal or a hard session, so it is usually noise
- 2 or more flags: multiply by 1.0, rising to 1.3 when every available metric is flagged. Scale evenly in between.

Final score = base x 100 x multiplier, rounded, then clamped to the range 0-100. The score is never below 0 and never above 100.

## Step 6 — Bands

- 0-24 Clear, green (#1FBF61) — nothing deviating, train as planned
- 25-44 Watch, yellow-green (#C9D400) — one metric drifting, check again tomorrow
- 45-64 Elevated, orange (#F5A623) — two or more off baseline, keep it easy
- 65-84 High, red (#E8483F) — strong pattern, rest and hydrate
- 85-100 Very likely, purple (#8B3FD9) — everything points one way, take the day off

## Step 7 — Build the artifact

Make a single self-contained artifact, dark background, styled like a Garmin watch gauge:

- A 270-degree arc gauge with the five band colours running green to purple around the outside, and the filled portion drawn in the colour of the current band
- The score as a large number in the centre, with the band name under it in the band colour
- One horizontal bar per metric showing how much it contributed, labelled with last night's value, the baseline, and the difference
- Any unavailable metric shown greyed out and labelled "no data", not hidden
- One plain sentence at the top saying what to do today
- A footer line noting this is not a medical device

## Rules

- Never invent or estimate a number. If you did not get it from Garmin, it is unavailable.
- Always say how many metrics went into the score. A score built on two metrics is weaker than one built on four, and I want to know which I am looking at.
- Keep your chat reply to three sentences. The artifact carries the detail.
- If the score is 65 or above two mornings in a row, say so explicitly — a repeated signal matters more than a single high morning.

Why it's built this way

Two details do the heavy lifting.

The confluence multiplier. One metric moving on its own gets scaled down, because a single flag is almost always alcohol, a warm room, a late meal or yesterday's hard session. Two or more moving together is when it counts. That is the difference between a useful signal and a machine that makes you anxious every morning.

It never guesses. If a metric is missing it's marked unavailable and the weights are rebalanced around what's left, rather than quietly filling a gap with an estimate. SpO2 is the usual absentee — it only records if Pulse Ox is set to "During Sleep" or "All Day", which is off by default on most watches.

Worth saying plainly

This is not a medical device and neither is your watch. It's a prompt to take a rest day, not a diagnosis. If you're genuinely unwell, see a doctor rather than a gauge.

What it's good at is the thing you'd otherwise miss: the morning where you feel fine, three numbers have quietly drifted, and the smart move is an easy day instead of intervals.

100% Free

Join the Garmin School

Leave your email to get access to the Garmin School and receive updates on new videos and apps.

You'll get immediate access to:Claude Checks My Garmin Every Morning and Tells Me If I'm Getting Sick

What to read next

Popular reads

Find Your Perfect Garmin: The Compare ToolDay 434368
Find Your Perfect Garmin: The Compare Tool
Can You Hit a 90+ Sleep Score Every Night With Claude AI and Your Garmin?Day 623346
Can You Hit a 90+ Sleep Score Every Night With Claude AI and Your Garmin?
Replace Your Personal Trainer With Claude AI — Using Your Garmin DataDay 382755
Replace Your Personal Trainer With Claude AI — Using Your Garmin Data