About partymola/withings-mcp
partymola/withings-mcp is an MCP server in the Healthcare category: mCP server for the Withings Health API. OAuth, local SQLite cache, and trend analysis. Tools for body composition, sleep, activity, workouts, ECG, and connected devices.
Install
git clone https://github.com/partymola/withings-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (8)
withings_get_activityDaily steps, distance, calories, active time
Parameters not published.
withings_get_bodyBody composition (weight, fat%, muscle, bone, BP, SpO2)
Parameters not published.
withings_get_devicesConnected devices with battery status
Parameters not published.
withings_get_heartECG recordings and AFib detection
Parameters not published.
withings_get_sleepSleep summaries, or detailed phase time-series with `detail=True`
Parameters not published.
withings_get_workoutsWorkout sessions with type, duration, HR
Parameters not published.
withings_syncSync data from Withings API to local cache
Parameters not published.
withings_trendsPeriod averages, weekly/monthly/quarterly trends, comparisons
Parameters not published.
Ask AI
Ask AI about partymola/withings-mcp
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
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 |
|---|---|
withings_sync |
Sync data from Withings API to local cache |
withings_get_body |
Body composition (weight, fat%, muscle, bone, BP, SpO2) |
withings_get_sleep |
Sleep summaries or detailed phase time-series |
withings_get_activity |
Daily steps, distance, calories, active time |
withings_get_workouts |
Workout sessions with type, duration, HR |
withings_get_heart |
ECG recordings and AFib detection |
withings_get_devices |
Connected devices with battery status |
withings_trends |
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
- Go to https://developer.withings.com/dashboard
- Create a new application
- Set the callback URL to
http://localhost:8585 - Note your Client ID and Client Secret
2. Authenticate
.venv/bin/withings-mcp auth
This 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-mcp
4. 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 |
|---|---|---|
WITHINGS_MCP_CONFIG_DIR |
./config/ |
Directory for credentials and tokens |
WITHINGS_MCP_DB_PATH |
./withings.db |
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/ -v
Security
- 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
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.