MCP server for Withings health data — sleep, activity, heart, and body metrics.
io.github.akutishevsky/withings MCP Server
This MCP server provides access to Withings health data, focused on sleep, activity, heart, and body metrics. It is packaged as an MCP server (including remote MCP server context) under the slug io.github.akutishevsky/withings, with metadata for catalog indexing.
🛠️ Key Features
Withings health data integration
Metrics include sleep
Metrics include activity
Metrics include heart metrics
Metrics include body metrics
🚀 Use Cases
Reading Withings sleep metrics
Accessing Withings activity metrics
Retrieving heart-related health metrics
Fetching body metrics for health tracking
⚡ Developer Benefits
Standard MCP server interface for health data retrieval
Topics include mcp and mcp-server, plus remote-mcp-server for integration context
Clear scope around core Withings metric categories
⚠️ Limitations
Available description only specifies sleep, activity, heart, and body metrics; no other endpoints are confirmed.
A Model Context Protocol (MCP) server that brings your Withings health data into Claude. Access your sleep patterns, body measurements, workouts, heart data, and more through natural conversation.
🔒 Privacy First: This is my personal project, and the repository is intentionally public to demonstrate transparency. The code shows that no personal information is logged or stored maliciously. All sensitive data (tokens, user IDs) is encrypted at rest and automatically redacted from logs. You can review the entire codebase to verify this commitment to privacy.
⚠️ Disclaimer: This server is provided as-is without any guarantees or warranties. While I've made every effort to ensure security and privacy, I make no guarantees about availability, data integrity, or security. Use at your own risk. For production use cases, consider self-hosting your own instance.
Quick Setup
Open Claude Desktop → Customize → Connectors
Click + → Add Custom Connector
Set URL to https://withings-mcp.com/mcp → click Add
Click Connect and authorize with your Withings account
That's it! Ask Claude about your sleep, weight, workouts, or heart data.
Claude Desktop or any other MCP-compatible client installed on your computer
Setup Instructions
Step 1: Add Connector in Claude Desktop
Open Claude Desktop
Go to Customize (in the sidebar or menu)
Navigate to the Connectors section
Click the + button to add a new connector
Select Add Custom Connector
Fill in the following details:
Name: Withings (or any name you prefer)
Remote MCP server URL: https://withings-mcp.com/mcp
Click Add
Note: If your MCP client doesn't support UI-based connector configuration, you can manually edit the config file instead. See the manual configuration guide below.
Step 2: Connect and Authorize
In the Connectors settings, find the Withings connector you just added
Click Connect next to the connector
Your web browser will open with the Withings authorization page
Log in to your Withings account
Review and approve the permissions requested
You'll be redirected back and the connection will be complete
After authorization, Claude will have access to your Withings data!
Available Tools
Once connected, Claude can use these tools to access your data:
Sleep & Activity
get_hrv - Minute-level RMSSD, SDNN, and quality scores captured during sleep
Set your Redirect URI to: https://your-domain.com/callback
This must be a publicly accessible URL (localhost is not supported by Withings)
Can be any domain where you'll host the server (e.g., Fly.io, Railway, your own server, etc.)
Important: Remove Google Analytics
The hosted version includes a Google Analytics tag (G-ZMGF9WXL3W) in the static pages under public/. If you're forking this repo, remove or replace the GA snippet in public/index.html and public/health.html, and update the CSP headers in src/server/app.ts accordingly.
Step 2: Clone and Setup
bash
# Clone the repository
git clone https://github.com/your-username/withings-mcp.git
cd withings-mcp
# Install dependencies
bun install
# Generate encryption secret
bun run generate-secret
# Copy the output - you'll need it for environment variables
Install the Supabase CLI: bun install -g supabase (or use brew install supabase/tap/supabase)
Link your project: supabase link --project-ref <your-project-ref>
Apply the database migrations: supabase db push
Get your credentials from Dashboard → Settings → API:
Project URL → SUPABASE_URL
Service role key → SUPABASE_SECRET_KEY
Step 3: Local Development
Note: Withings requires a publicly accessible URL for OAuth callbacks. For local development, use a tunneling service to expose your local server or deploy to a staging environment for testing.
bash
# Copy environment templatecp .env.example .env# Edit .env with your values# WITHINGS_CLIENT_ID=your_client_id# WITHINGS_CLIENT_SECRET=your_client_secret# WITHINGS_REDIRECT_URI=https://your-tunnel-url.com/callback# ENCRYPTION_SECRET=paste_generated_secret_here# SUPABASE_URL=https://your-project.supabase.co# SUPABASE_SECRET_KEY=your_service_role_key# PORT=3000# Run locally (Bun executes TypeScript directly — no build step)
bun run dev
Make sure your redirect URI in the .env file matches the publicly accessible URL pointing to your local server.
Step 4: Deploy to Production
bash
# The project runs TypeScript directly with Bun — no build step required.
bun run start
Deploy to DigitalOcean App Platform (its Bun buildpack detects package.json and runs bun run start automatically), or any other host that supports Bun.
Set the following environment variables on your hosting platform:
Variable
Required
Example
WITHINGS_CLIENT_ID
Yes
your_client_id
WITHINGS_CLIENT_SECRET
Yes
your_client_secret
WITHINGS_REDIRECT_URI
Yes
https://your-domain.com/callback
ENCRYPTION_SECRET
Yes
Generated from step 2
SUPABASE_URL
Yes
https://your-project.supabase.co
SUPABASE_SECRET_KEY
Yes
Your Supabase service role key
PORT
No
3000 (or your platform's default)
LOG_LEVEL
No
info
ALLOWED_ORIGINS
No
https://example.com,https://app.example.com
Step 5: Update Withings App Settings
Go back to your Withings developer app and update the redirect URI to match your deployed URL:
https://your-domain.com/callback
Step 6: Configure Your MCP Client
For Claude Desktop:
Open Claude Desktop
Go to Customize → Connectors section
Click the + button, then select Add Custom Connector
Fill in the following details:
Name: Withings (or any name you prefer)
Remote MCP server URL: https://your-domain.com/mcp
Click Add
Click Connect next to the connector to authorize
For Other MCP Clients:
Configure your MCP client with the following connection details:
Comma-separated list of allowed CORS origins for browser clients
Development Commands
bash
bun run start # Run the server
bun run dev # Hot-reload mode
bun run typecheck # Type-check with tsc (no emit)
bun run build # Bundle for production (outputs to ./build)
bun run generate-secret # Generate encryption secret for ENCRYPTION_SECRET env variable