withings-mcp
The withings-mcp server lets you sync, query, and analyze Withings health data using a local SQLite cache with automatic OAuth token management.
Sync data (
withings_sync): Pull body, sleep, activity, and workout data from the Withings API into a local SQLite cache, with incremental updates fetching only new data since the last sync.Body composition (
withings_get_body): Retrieve weight, fat percentage, muscle mass, bone mass, hydration, heart rate, blood pressure, and SpO2 for a given date range.Sleep data (
withings_get_sleep): Get nightly summaries (duration, sleep score, HR, respiratory rate, snoring) or detailed minute-by-minute phase breakdowns (awake, light, deep, REM).Daily activity (
withings_get_activity): Access step counts, distance, calories burned, and active time by intensity level.Workout sessions (
withings_get_workouts): View individual sessions with type, duration, heart rate, calories, and distance; filterable by category (e.g., cycling, running).ECG & heart health (
withings_get_heart): Fetch ECG recordings and atrial fibrillation (AFib) detection results live from compatible devices (ScanWatch, BPM Core).Connected devices (
withings_get_devices): List all connected Withings devices with model info, battery level, firmware, and last session date (fetched live).Trend analysis (
withings_trends): Compute weekly, monthly, or quarterly averages, min/max, and change indicators for body, sleep, or activity data, with period-over-period comparisons.
All data is stored locally for fast offline access and privacy. ECG and device info are fetched live from the API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@withings-mcpshow my weight trends for the last 3 months"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
withings-mcp
MCP server for the Withings Health API with OAuth, local SQLite cache, and trend analysis.
What makes this different from other Withings MCP servers:
Local SQLite cache for fast offline queries and historical trend analysis
Incremental sync - only fetches new data since last sync
All 200+ Withings measurement types supported (body comp, sleep, activity, workouts, ECG)
Automatic OAuth token refresh (access tokens: 3h, refresh tokens: 1 year)
Zero dependencies beyond
mcp(HTTP via stdlib)Python 3.13+
Tools
Tool | Description |
| Sync data from Withings API to local cache |
| Body composition (weight, fat%, muscle, bone, BP, SpO2) |
| Sleep summaries or detailed phase time-series |
| Daily steps, distance, calories, active time |
| Workout sessions with type, duration, HR |
| ECG recordings and AFib detection |
| Connected devices with battery status |
| Period averages, weekly/monthly/quarterly trends, comparisons |
Prerequisites
Python 3.13+
uv (recommended) or pip
A Withings developer account and registered application
Installation
git clone https://github.com/partymola/withings-mcp.git
cd withings-mcp
uv venv --python 3.13 .venv
uv pip install -e .Setup
1. Register a Withings app
Create a new application
Set the callback URL to
http://localhost:8585Note your Client ID and Client Secret
2. Authenticate
.venv/bin/withings-mcp authThis opens your browser for Withings authorization. After approving, tokens are saved locally in config/.
3. Register with Claude Code
claude mcp add -s user withings -- /path/to/withings-mcp/.venv/bin/withings-mcp4. First sync
In Claude Code, say: "Sync my Withings data"
This runs withings_sync to populate the local cache. Subsequent syncs only fetch new data.
Configuration
Environment Variable | Default | Description |
|
| Directory for credentials and tokens |
|
| SQLite database path |
Example Prompts
"Sync my Withings data"
"Show my weight for the last 3 months"
"How has my sleep changed this year?"
"Compare my body composition this month vs last month"
"What workouts did I do in March?"
"What Withings devices do I have connected?"
"Show my sleep trends quarterly"
Development
# Install with dev dependencies
uv pip install -e . && uv pip install pytest
# Run tests (74 tests, all use in-memory SQLite with fictional data)
.venv/bin/python -m pytest tests/ -vSecurity
Read-only: No tools modify data on Withings servers
Local storage: Health data stays in your local SQLite database
Token storage: OAuth tokens stored in
config/(gitignored, file permissions 0600)Error messages: Never contain health data values - only status codes
Pre-commit hook: Rejects database files and credentials from commits
Contributing
See CONTRIBUTING.md for development setup, the test workflow, and the pre-commit hook. Changes are tracked in CHANGELOG.md.
License
GPL-3.0-or-later
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/partymola/withings-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server