Withings MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WITHINGS_CLIENT_ID | Yes | OAuth client ID | |
| WITHINGS_LOG_LEVEL | No | Log level: error, warn, info, or debug | info |
| WITHINGS_TOKEN_FILE | No | Path to persist tokens. Defaults to /data/tokens.json if /data exists. | |
| WITHINGS_CLIENT_SECRET | Yes | OAuth client secret | |
| WITHINGS_REDIRECT_PORT | No | Auth callback port | 8765 |
| WITHINGS_REFRESH_TOKEN | No | Refresh token from the auth helper (or provide via WITHINGS_TOKEN_FILE) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| withings_get_measure_typesA | List known Withings measurement type IDs used by getmeas (weight, BP, SpO2, spot temperature, etc.). No API call. For continuous watch vitals (HR, core temp, SpO2), prefer withings_get_intraday_activity instead of these spot types. |
| withings_get_measurementsA | Fetch spot/scale health measurements via getmeas (weight, composition, BP, spot HR/temp/SpO2, etc.). Optionally filter by meastypes. Values are decoded (value * 10^unit). This is NOT the main source for continuous watch vitals — use withings_get_intraday_activity (or withings_get_heart_rate / withings_get_body_temperature with include_intraday=true) for those. |
| withings_get_weightB | Fetch scale weight measurements (meastype 1). Typical source: Withings scale. |
| withings_get_body_compositionA | Fetch scale body composition: fat free mass, fat ratio, fat mass, muscle, hydration, bone (types 5,6,8,76,77,88). Typical source: Withings scale. |
| withings_get_blood_pressureB | Fetch blood pressure and related spot pulse (diastolic 9, systolic 10, heart rate 11). Typical source: BPM or scale, not continuous watch HR. |
| withings_get_spo2A | Fetch spot SpO2 measurements (meastype 54) from getmeas. For continuous watch SpO2, prefer withings_get_intraday_activity with spo2_auto. |
| withings_get_body_temperatureA | Fetch body temperature. Spot readings (meastypes 12/71/73 via getmeas) come from thermometers or occasional device measures. For Withings watches, set include_intraday=true to fetch continuous core_body_temperature (max 24h window) — that is usually where watch temp lives. |
| withings_get_heart_rateA | Fetch heart rate. Spot readings (meastype 11 via getmeas) come from scale/BPM when you take a measurement. For Withings watches, set include_intraday=true (or use withings_get_intraday_activity) for continuous HR — that is usually where watch HR lives (max 24h window). |
| withings_get_activityA | Fetch daily activity summaries from the watch/tracker (steps, distance, calories, HR zones, etc.). Prefer this for day-level watch stats; use withings_get_intraday_activity for minute-level series. |
| withings_get_intraday_activityA | Fetch high-resolution watch/tracker series for up to 24 hours: heart_rate, core_body_temperature, spo2_auto, steps, HRV, etc. This is the main source for continuous vitals from a Withings watch (not the scale). Withings returns at most 24 hours per call. |
| withings_get_workoutsA | Fetch logged workouts from the watch/activity tracker for a date range (default last 7 days). Includes session type, duration, and optional metrics like calories, HR, distance, steps. |
| withings_get_sleep_summaryA | Fetch per-night sleep summaries (score, stages, HR/RR stats, snoring, etc.). Default range is the last 7 days. Typical sources: Sleep Analyzer / Sleep Mat, or watch sleep tracking. For minute-level detail within a night, use withings_get_sleep. |
| withings_get_sleepA | Fetch high-frequency sleep stage and vital series for a time window (Sleep get): stages, HR, respiration, snoring, HRV, etc. Default range is the last 24 hours. Prefer withings_get_sleep_summary for multi-night overviews; use this for detailed series within a night. Typical sources: Sleep Analyzer / Sleep Mat, or watch sleep tracking. |
| withings_list_heart_recordsA | List ECG / heart recordings (Heart v2 list), including AFib classification metadata. Requires an ECG-capable device (e.g. ScanWatch ECG / BeamO). Often empty if the user only has a scale + non-ECG tracker. Default range: last 30 days. Use withings_get_heart_rate with include_intraday for continuous watch HR instead. |
| withings_get_heart_ecgA | Fetch a single ECG waveform/signal by signalid from withings_list_heart_records. Only useful when withings_list_heart_records returned recordings (ECG-capable device). Not for continuous watch heart rate. |
| withings_list_devicesA | List Withings devices paired to the authorized account (e.g. Scale, Activity Tracker, Sleep Monitor). Useful to see which data sources exist before querying. |
| withings_get_goalsA | Get health goals configured in the Withings account (e.g. steps, weight, sleep targets), if the user has set any. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Several tools overlap: withings_get_measurements overlaps with the weight, body composition, blood pressure, SpO2, temperature, and heart rate getters, and withings_get_intraday_activity overlaps with continuous HR/temperature retrieval. The descriptions do a good job of clarifying boundaries, but the sheer number of closely related data-query tools creates some selection ambiguity.
All tools follow the consistent withings_<verb>_<noun> pattern using snake_case, with list_ reserved for collection enumeration and get_ for data retrieval. Even if some object names vary in specificity, the pattern is predictable and easy to infer.
At 17 tools, the server is slightly above the ideal 3-15 range, but the count is reasonable for the breadth of Withings health data domains. A few redundant measurement-specific wrappers around withings_get_measurements add bulk, but each tool still maps to a meaningful API use case.
The server covers the major Withings data domains well: devices, daily activity, intraday vitals, workouts, sleep summaries and detailed sleep, scale measurements, ECG, and goals. Minor gaps exist—such as no explicit user/profile retrieval and no write/update capabilities—but those are largely outside the apparent read-only scope.