home / mcp / withings mcp server

Withings MCP Server

Provides access to Withings health data via MCP for Claude and other clients.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "akutishevsky-withings-mcp": {
      "url": "https://withings-mcp.com/mcp",
      "headers": {
        "PORT": "3000",
        "LOG_LEVEL": "info",
        "ALLOWED_ORIGINS": "https://example.com",
        "ENCRYPTION_SECRET": "GENERATED_SECRET",
        "WITHINGS_CLIENT_ID": "YOUR_CLIENT_ID",
        "WITHINGS_REDIRECT_URI": "https://your-domain.com/callback",
        "WITHINGS_CLIENT_SECRET": "YOUR_CLIENT_SECRET"
      }
    }
  }
}

This MCP server lets you access your Withings health data through natural conversation, enabling you to ask questions about sleep, body measurements, workouts, heart data, and more from Claude or any MCP-compatible client. It focuses on secure, private access so you can explore insights and trends without exposing sensitive information.

How to use

You connect your MCP client to the Withings MCP Server to start querying your health data. Common patterns include asking for sleep quality over a period, tracking weight and heart rate trends, reviewing workouts, and checking ECG or other heart data. The server exposes a set of tools that your MCP client can call; you don’t need to know the underlying API—you simply ask in natural language and the client translates requests into tool calls.

How to install

Prerequisites: You need Node.js 18+ and npm installed to run the server locally.

Step 1: Prepare your environment and get the source code ready for running locally.

# Step 1: Clone the MCP server repository
# Note: Replace with your actual repository path if you host your own copy
# git clone https://github.com/akutishevsky/withings-mcp.git
# cd withings-mcp

# Step 2: Install dependencies
npm install

# Step 3: Generate a secure encryption secret for token handling
npm run generate-secret
# Copy the generated secret when you configure environment variables

Additional setup for local development and production

Local development requires exposing a public OAuth redirect URL for Withings. You can use a tunneling service or deploy to a staging environment to test OAuth callbacks.

# Copy environment template and customize values
cp .env.example .env

# Edit .env to include your credentials and redirect URL
# 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
# PORT=3000

# Build and start the server locally
npm run build
npm start

Security and privacy notes

All access tokens are encrypted at rest using AES-256-GCM, and a robust redaction system prevents sensitive data from appearing in logs. You can revoke access at any time from your Withings account settings.

Troubleshooting tips

If you encounter OAuth callback issues during development, ensure your redirect URI in Withings matches the deployed URL exactly and that the public URL is reachable from Withings’ servers.

Available tools

get_sleep_summary

Retrieve sleep duration, stages, heart rate, breathing, and sleep score over a period.

get_activity

Fetch daily steps, distance, calories, elevation, and activity durations.

get_intraday_activity

Access high-frequency activity data throughout the day.

get_workouts

Obtain detailed workout summaries with heart rate zones and metrics.

get_measures

Return weight, body composition, blood pressure, heart rate, temperature, VO2 max, and more.

get_user_devices

List connected Withings devices for the user.

get_user_goals

Show health and fitness goals such as steps, sleep, and weight.

list_heart_records

List ECG recordings available for the user.

get_heart_signal

Provide detailed ECG waveform data.

list_stetho_records

List stethoscope recordings (BPM Core).

get_stetho_signal

Provide detailed audio signal data from stethoscope readings.