← All articles
withingsmcpclaudechatgptbody-compositionsleepblood-pressure

Withings MCP Server: Connect Withings to Claude and ChatGPT

Give Claude or ChatGPT live access to your Withings weight, body composition, blood pressure and sleep history, so it answers from your readings.

Withings
withings
Weight
athletedata
AI coach
WeightBody fat %Muscle massWater %Blood pressureSleep dataBMI

You own four years of readings and can only see the last one

The Withings ecosystem is quietly one of the best passive data collectors a person can own. The scale catches you every morning before you have decided to care. The Sleep Analyzer under the mattress records a night you did not have to remember to wear anything for. The blood pressure cuff logs a number that most people take once a year in a doctor's office.

So you open the app to ask a real question. Has my weight actually moved since I started lifting three times a week, or is it just noisier? And you get a chart with a line on it, scoped to a window someone else chose, with no way to ask a follow-up.

This is what people are really looking for when they search for a Withings dashboard. Not another chart. An answer.

An MCP server is a different shape of solution to that problem. Instead of a better graph, the model reads the readings.

What MCP actually is

The Model Context Protocol is an open standard for letting AI assistants call external tools. Anthropic published it in late 2024 and adoption spread past Claude fast: ChatGPT, Cursor and Perplexity all speak it now.

The protocol is boring in the good way. A server advertises a list of tools, each with a name and a schema. The model decides when to call one. Results come back as structured data rather than prose, so the model reasons over numbers instead of over a description of numbers.

For health data that shape is exactly right. You do not want four years of weigh-ins pasted into a context window, going stale the moment you step on the scale tomorrow. You want the model to fetch the window it needs when a question calls for it.

So "Withings MCP server" means a server that exposes your Withings history as tools. Ask "has my muscle mass moved at all since March, and what did my weight do in the same period?" and the model pulls both series and compares them.

What the Withings connector exposes

Once Withings is connected, the model gets two layers of tools.

The Withings layer. Eight tools, each mapping onto something a Withings device actually records.

withings_get_measurements is the workhorse. Weight, body fat percentage, muscle mass, fat-free mass, bone mass and height, addressed by measure type over a date range. Blood pressure lives here too, as systolic and diastolic measure types rather than in a separate tool, which is worth knowing because "get my blood pressure history" and "get my weight history" are the same call with different arguments.

withings_get_activity returns daily rollups from a ScanWatch: steps, distance, active calories, average heart rate, and time spent in light, moderate and intense heart rate zones.

withings_get_sleep_summary returns one row per night: total duration, light, deep and REM minutes, sleep score, average heart rate and HRV, snoring duration and time in bed.

withings_get_workouts returns tracked sessions with sport type, duration, calories, heart rate and distance.

withings_get_intraday_activity drops to minute-by-minute heart rate and steps, which is the resolution you need to answer "what did my heart rate do during that meeting" rather than "what did it average".

withings_get_sleep_raw is the same idea for sleep: the underlying signal rather than the nightly summary.

withings_get_heart_list returns ECG recordings from a ScanWatch with their classifications, normal, atrial fibrillation or inconclusive.

withings_get_devices lists what you actually own, with model, battery level and last sync time. It sounds like housekeeping and it is the most useful troubleshooting tool in the set, because "my weigh-ins are not syncing" is almost always a device that has not synced since a battery died.

The derived layer. These are not Withings fields at all. They are computed across everything you have connected: get_daily_metrics for the HRV and resting heart rate series, get_pmc_status for fitness and fatigue balance, get_training_trends, get_readiness_today, and get_activity_detail for one session in depth.

This is where a scale stops being a scale. Withings can tell you that you weigh 74.2 kg. It cannot tell you whether the two kilos you lost this month arrived alongside a training block that also cost you 300 watts off your 20-minute power, which is the question that decides whether the loss was a good idea.

Trends, not readings, and why the distinction is the whole game

Bioelectrical impedance scales measure resistance and infer everything else. That inference is sensitive to hydration, to how recently you ate, to whether your feet are damp, to time of day. The consequence is that a single body-fat reading carries a genuine error bar and a single weight reading carries a kilo or two of water.

None of which makes the data useless. It makes the daily number useless and the trend excellent, because the noise is largely random while the signal is not.

The practical version of that rule: weigh yourself under the same conditions every day, then never look at a single day. A 7-day rolling average against a 30-day baseline is the resolution at which body composition tells you the truth. That is exactly the shape of question a model with tool access handles well and a chart handles badly, because you can ask for the comparison directly instead of eyeballing a slope.

It matters most during a deliberate recomposition block, where the whole point is that weight stays flat while its composition changes. Two flat lines and one slowly diverging pair is a result that a glance at a scale reading will actively mislead you about. The body recomposition guide covers what to expect from those numbers over a real block.

What lands and what does not

Being precise here matters more than it sounds, because the failure mode is not an error message. It is a confident answer built on a field that was never there.

Lands: weight, body fat percentage, muscle mass, fat-free mass, bone mass. Systolic and diastolic blood pressure with pulse. Nightly sleep with stage breakdown, sleep score, average heart rate and HRV. Daily steps, distance, calories and heart rate zone time from a ScanWatch. Tracked workouts. Minute-level heart rate and steps. ECG recordings with classifications. Your device list, battery levels and last sync times.

Depends on what you own: most of the above. The connector is only as complete as your hardware. A person with a Body+ scale and nothing else gets body composition and nothing else, and no configuration will conjure a sleep score out of a scale. withings_get_devices exists partly so the model can check this before telling you something is missing when it was never possible.

Does not land: structured workout files with per-second power or GPS routes. Withings is not that kind of device, and if you train with a bike computer or a running watch, the training half of the picture has to come from there. The same connector reads Garmin, Wahoo, COROS, Polar, WHOOP, Oura, Hevy, Apple Health and others through one connection, and cross-source questions are where this stops being a nicer dashboard and starts being something no app can do.

One quirk worth naming. Withings notifies us per measurement category rather than in one stream, and the categories carry different payload shapes: weight, blood pressure and sleep arrive with a time range attached, while daily activity arrives with only a date. Nothing about that is visible to you as a user, but it is the reason a reading occasionally lands in a later batch rather than the instant you step off the scale.

Setting it up

The whole flow takes about five minutes, and most of it is Withings' authorization screen.

1. Connect Withings. Sign in at athletedata.health, open the Withings integration page, and click Connect. You will be sent to Withings to sign in and approve. Approve everything requested: Withings freezes permissions at this moment, and a partial grant removes the matching capability silently rather than warning you later.

2. Let the backfill run. Historical measurements stream in over minutes rather than instantly. It is worth waiting for the first pass before asking anything comparative, or you will get a confident answer about a partially loaded history.

3. Copy your MCP URL. From the dashboard, use the Copy MCP URL button. It produces a URL of the form https://mcp.athletedata.health/mcp?apiKey=sk_soma_.... Your API key is embedded in it, so treat the whole URL like a password. It is revocable from the same page.

4. Add it to your AI client. In Claude, follow the Claude Desktop connector walkthrough: open Settings, then Connectors, then Add custom connector. Name it athletedata, paste the URL, and click Add. It should show as Connected. ChatGPT, Cursor and Perplexity each have an equivalent panel, and there are step-by-step pages for all of them in the MCP setup section.

5. Ask something specific. Open a new chat and ask a question that needs data you have never typed. "Compare my 7-day average weight and muscle mass now against the same pair three months ago." You will see the tool calls fire before the answer comes back. That is the confirmation that it is reading rather than guessing.

The reconnect that catches long-time Withings users

This looks like a bug and is not, so it is worth its own section.

OAuth permissions freeze at authorization time. Whatever you granted on the day you connected is what the grant carries forever, and adding a new capability on our side does not retroactively widen an old grant.

The visible symptom is the device list. If you connected Withings before device-list permission was requested, withings_get_devices returns an explanation rather than your devices, and a model asked "why is my scale not syncing" has to answer from inference instead of from a battery level. Weight, blood pressure, sleep and activity sync are all unaffected, which is why most people never notice.

The fix is one reconnect from the integrations page. It takes about thirty seconds and does not disturb your history.

What changes about the conversation

The shift is not that the model can recite your weigh-ins. It is that you stop pre-filtering.

When you type your own context, you decide in advance what matters. You mention that your weight is up two kilos, because that is the thing you noticed. You do not mention that your resting heart rate has been three beats above baseline for nine days, or that your sleep has averaged 42 minutes short across the same window, because you did not connect those to the weight. With tools available, the model can go looking, and those three facts together tell a very different story than the first one alone. The resting heart rate guide covers what a sustained elevation usually means.

Blood pressure is the other place this pulls ahead, quietly. A single reading in a clinic is one sample from a noisy distribution taken in the one environment guaranteed to raise it. A cuff at home produces hundreds of samples across months, which is genuinely better data, and almost nobody ever looks at it as a series. Asking "what has my morning systolic done over the last six months, and did it move when my training volume went up?" is a question with a real answer sitting in your own account.

And sleep, when you have a Sleep Analyzer, is the rare case of a passive measurement with no compliance cost. You do not have to remember to wear it. That makes the series unusually complete, which makes it unusually good for the kind of question that needs a long baseline. The sleep and training guide covers what to do with it once you can see it.

The limits worth knowing about

Withings is a health source, not a training source. Covered above, but it is the most common expectation mismatch. If your question is about interval structure or power, it has to come from a device that recorded the session.

Strava is not available over MCP. Strava's API terms do not permit serving Strava data to third-party AI platforms and tools, so it is excluded from the connector. If Withings is your health hub this changes nothing, since none of your Withings readings pass through Strava.

Tool access is not a coach. The connector answers questions you ask. It does not notice that your resting heart rate has been climbing for nine days and message you about it, because nothing runs between your conversations. That is the real difference between the two products. The MCP tier at $9/month, or $69/year, is for querying your own data in your own AI client. The full coaching plan at $39/month adds a coach that watches continuously and starts the conversation itself. Both include a 7-day free trial.

Nothing here is medical advice. An ECG classification of atrial fibrillation from a wrist device is a prompt to see a doctor, not a diagnosis, and a model reading that field should be treated the same way. The value of having the series available is that you can bring a real history to the appointment instead of a recollection.

Withings is one source among many. The same connector exposes Garmin, WHOOP, Oura, Wahoo, Hevy, Apple Health, intervals.icu, COROS, Polar and others. The Oura MCP server guide covers the equivalent setup on the sleep side, and the general guide to connecting training data to ChatGPT or Claude has the full source list.

Putting it together: a Withings MCP setup checklist

  1. Connect Withings from the integrations page and approve every permission on the Withings screen. A partial grant removes a capability silently.
  2. If you connected Withings a long time ago, reconnect once. The device list is the thing that stays broken otherwise, and it is the tool you want working on the day something stops syncing.
  3. Let the initial backfill finish before asking anything that compares two periods.
  4. Copy your MCP URL from the dashboard and treat it like a password.
  5. Add it as a custom connector in Claude, ChatGPT, Cursor or Perplexity, and confirm it shows as connected.
  6. Weigh yourself under the same conditions daily, ideally on waking and before eating, so the trend is measuring you rather than your breakfast.
  7. Ask for rolling averages, never single days. A 7-day average against a 30-day baseline is the resolution at which body composition is honest.
  8. Once it works, connect whatever records your training too. The questions that justify the whole exercise are the ones that need both halves, and neither app will ever answer them alone.

Your scale has been telling the truth every morning for years. It just had no way to say it out loud.

Questions

is there a withings web dashboard for my data?+

Withings has a web view of your measurements, but it shows you charts rather than answers. An MCP connector is the other approach: your data stays where it is and you query it in plain language from Claude or ChatGPT. Ask for a 90-day weight trend split by weekday and you get the answer, not a graph you have to read.

what is a withings mcp server?+

It is a server that speaks the Model Context Protocol and exposes your Withings history as callable tools. When you ask about your weight trend or last night's sleep, the model calls those tools and reasons over your real readings. Without it the model only knows what you type into the chat box.

can claude read my withings data?+

Yes, once you connect Withings to AthleteData and add the MCP connector to Claude. Claude can then pull weight, body fat, muscle mass, blood pressure, sleep stages, daily steps and ECG classifications whenever a question needs them. The same connector works in ChatGPT, Cursor and Perplexity.

does it include blood pressure readings?+

Yes. Blood pressure sits in the same measurements endpoint as body composition, addressed by measure type rather than by a separate tool, so systolic and diastolic readings come back over the same call. Trends matter more than single readings here, and a model reading a 90-day series will not overreact to one high morning.

why does it say my withings devices are unavailable?+

Withings freezes OAuth permissions at the moment you authorize, so a connection made before we started asking for device-list permission cannot see your device list. Reconnecting Withings from the integrations page grants it and takes about thirty seconds. Weight, blood pressure, sleep and activity sync are unaffected either way.

is withings good enough as my only sleep source?+

It is honest data and it is better than nothing, but if you also wear an Oura ring or a WHOOP, those are usually the stronger sleep source and the connector will prefer them. Where Withings is uniquely useful is the Sleep Analyzer under the mattress, because it measures a night you did not have to remember to wear anything for.

Related

A coach that texts you first.

After every workout and night of sleep, it messages you with the analysis - and what to change. Free for 7 days.

Used by runners, cyclists, and triathletes worldwide