Skip to main content
Glama
README.md8.52 kB
# Withings MCP Server An MCP (Model Context Protocol) server for integration with the Withings Health API. This server provides access to health data including body measurements, activities, sleep, and more. ## Features - **OAuth2 Authentication** with the Withings API - **Body Measurements**: Weight, body fat, muscle mass, blood pressure, heart rate, SpO2, etc. - **Activity Data**: Steps, calories, distance, elevation - **Sleep Data**: Sleep duration, deep sleep, REM sleep, wake-up counts - **Workout Data**: Training sessions and details - **Heart Rate**: Intraday heart rate measurements ## Installation ### Option 1: Docker (Recommended) 1. **Create Withings API Credentials:** - Go to [Withings Developer Dashboard](https://developer.withings.com/dashboard/) - Create a new application - Note your `Client ID` and `Client Secret` - Set the Redirect URI to `http://localhost:8080/callback` 2. **Configure environment variables:** ```bash # Copy the example file cp .env.example .env # Edit .env and add your credentials WITHINGS_CLIENT_ID=your_client_id_here WITHINGS_CLIENT_SECRET=your_client_secret_here WITHINGS_REDIRECT_URI=http://localhost:8080/callback ``` 3. **Generate OAuth tokens:** ```bash # First, install locally to run token generation python -m venv .venv source .venv/bin/activate pip install -e . python generate_tokens.py ``` 4. **Build and run with Docker:** ```bash # Build the image docker build -t withings-mcp-server . # Run with docker-compose docker-compose up -d ``` ### Option 2: Local Python Installation 1. **Clone repository and install dependencies:** ```bash # Create virtual environment (recommended) python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies pip install -e . ``` 2. **Create Withings API Credentials:** - Go to [Withings Developer Dashboard](https://developer.withings.com/dashboard/) - Create a new application - Note your `Client ID` and `Client Secret` - Set the Redirect URI to `http://localhost:8080/callback` 3. **Configure environment variables:** ```bash # Copy the example file cp .env.example .env # Edit .env and add your credentials WITHINGS_CLIENT_ID=your_client_id_here WITHINGS_CLIENT_SECRET=your_client_secret_here WITHINGS_REDIRECT_URI=http://localhost:8080/callback ``` ## Project Structure ``` withings-mcp-server/ ├── src/ │ └── withings_mcp_server/ │ ├── __init__.py │ ├── auth.py # OAuth2 authentication │ └── server.py # MCP server implementation ├── tests/ │ ├── __init__.py │ └── test_withings.py # Manual test script ├── generate_tokens.py # Token generation script ├── .env.example # Example environment variables ├── .gitignore ├── pyproject.toml └── README.md ``` ## Testing the Installation Before using the MCP server, you can verify the connection with the test script: ```bash # Activate virtual environment if not already done source .venv/bin/activate # On Windows: .venv\Scripts\activate # Run the test script python tests/test_withings.py ``` The test script will guide you through the OAuth flow and test various API endpoints: - ✓ OAuth authentication - ✓ User information - ✓ Body measurements (last 30 days) - ✓ Activity data (last 7 days) - ✓ Sleep data (last 7 days) ## Authentication Before first use, you need to generate OAuth2 tokens. **Tokens are automatically saved to the `.env` file and refreshed when needed.** ### Quick Start: Token Generation Use the dedicated token generation script: ```bash python generate_tokens.py ``` The script will guide you through all steps: 1. ✓ Check your API credentials 2. ✓ Generate the authorization URL 3. ✓ Exchange the code for tokens 4. ✓ Save tokens automatically to `.env` 5. ✓ Verify tokens with a test API call ### Alternative: Using Test Script You can also use the test script which combines OAuth flow and API tests: ```bash python tests/test_withings.py ``` ### Manual Authentication 1. **Get authorization URL:** Use the `get_authorization_url` tool to generate an OAuth URL 2. **Authenticate in browser:** Open the URL in your browser and authorize access 3. **Receive authorization code:** After successful authorization, you'll be redirected to your Redirect URI with a `code` parameter 4. **Token management:** Access and Refresh Tokens are automatically: - Saved to the `.env` file - Refreshed when expired - Updated after each refresh ## Available Tools ### `get_authorization_url` Generates an OAuth2 authorization URL. **Parameters:** - `scope` (optional): OAuth scopes (default: "user.info,user.metrics,user.activity") ### `get_user_info` Retrieves user information. ### `get_measurements` Retrieves body measurements. **Parameters:** - `meastype` (optional): Measurement type - `1`: Weight (kg) - `4`: Height (m) - `5`: Fat-free mass (kg) - `6`: Body fat percentage (%) - `8`: Fat mass (kg) - `9`: Diastolic blood pressure (mmHg) - `10`: Systolic blood pressure (mmHg) - `11`: Heart rate (bpm) - `12`: Temperature (°C) - `54`: SpO2 (%) - `71`: Body temperature (°C) - `76`: Muscle mass (kg) - `88`: Bone mass (kg) - `91`: Pulse wave velocity (m/s) - `category` (optional): Category (1=real, 2=user_objective) - `startdate` (optional): Start date (YYYY-MM-DD or Unix timestamp) - `enddate` (optional): End date (YYYY-MM-DD or Unix timestamp) - `lastupdate` (optional): Only measurements since this timestamp ### `get_activity` Retrieves daily activity data. **Parameters:** - `startdateymd` (optional): Start date (YYYY-MM-DD) - `enddateymd` (optional): End date (YYYY-MM-DD) - `lastupdate` (optional): Only activities since this timestamp ### `get_sleep_summary` Retrieves sleep summary. **Parameters:** - `startdateymd` (optional): Start date (YYYY-MM-DD) - `enddateymd` (optional): End date (YYYY-MM-DD) - `lastupdate` (optional): Only sleep data since this timestamp ### `get_sleep_details` Retrieves detailed sleep data with all sleep phases. **Parameters:** - `startdate` (optional): Start date (YYYY-MM-DD or Unix timestamp) - `enddate` (optional): End date (YYYY-MM-DD or Unix timestamp) ### `get_workouts` Retrieves workout/training sessions. **Parameters:** - `startdateymd` (optional): Start date (YYYY-MM-DD) - `enddateymd` (optional): End date (YYYY-MM-DD) ### `get_heart_rate` Retrieves heart rate measurements over a time period. **Parameters:** - `startdate` (optional): Start date (YYYY-MM-DD or Unix timestamp) - `enddate` (optional): End date (YYYY-MM-DD or Unix timestamp) ## MCP Configuration To use the server with Claude Desktop, add the following to your MCP configuration: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ### Docker Configuration ```json { "mcpServers": { "withings": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "WITHINGS_CLIENT_ID=your_client_id", "-e", "WITHINGS_CLIENT_SECRET=your_client_secret", "-e", "WITHINGS_ACCESS_TOKEN=your_access_token", "-e", "WITHINGS_REFRESH_TOKEN=your_refresh_token", "withings-mcp-server" ] } } } ``` ### Local Python Configuration ```json { "mcpServers": { "withings": { "command": "/path/to/.venv/bin/python", "args": ["-m", "withings_mcp_server"], "env": { "WITHINGS_CLIENT_ID": "your_client_id", "WITHINGS_CLIENT_SECRET": "your_client_secret", "WITHINGS_ACCESS_TOKEN": "your_access_token", "WITHINGS_REFRESH_TOKEN": "your_refresh_token" } } } } ``` ## Example Usage After configuration, you can make the following requests in Claude Desktop: ``` "Show me my weight measurements from the last 7 days" "How many steps did I walk today?" "How was my sleep quality last night?" "Show me my heart rate data from today" ``` ## API Documentation For more details about the Withings API: - [Withings API Reference](https://developer.withings.com/api-reference/) - [Developer Dashboard](https://developer.withings.com/dashboard/) ## License MIT ## Notes - Tokens are automatically refreshed when they expire - All dates can be specified as YYYY-MM-DD or Unix timestamp - The API is subject to Withings rate limits (see API documentation)

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/schimmmi/withings-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server