OpenAthlete
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
Withings MCP Server: Withings 건강 데이터를 위한 무료 오픈소스 MCP 서버
Free, open-source MCP server for Withings health data. Analyze sleep, weight, heart rate, ECG & workouts with Claude, ChatGPT, or any MCP client. Read-only, encrypted, revoke anytime.
스포츠·피트니스TypeScript · CSSGitHub @akutishevsky온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기MCP server for Withings health data integration
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Help me pay for the servers on Patreon
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.README 전문 보기 ↗Help me pay for the servers on Patreon
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.
https://withings-mcp.com/mcp → click AddThat's it! Ask Claude about your sleep, weight, workouts, or heart data.
This MCP server gives Claude access to your Withings health data, allowing you to:
All through natural conversation with Claude or any other MCP-compatible client.
If you just want to use this MCP server with Claude Desktop without hosting anything yourself, follow these steps:
Withings (or any name you prefer)https://withings-mcp.com/mcpNote: 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.
After authorization, Claude will have access to your Withings data!
Once connected, Claude can use these tools to access your data:
get_hrv - Minute-level RMSSD, SDNN, and quality scores captured during sleepget_sleep_summary - Sleep duration, stages (light/deep/REM), heart rate, breathing, sleep scoreget_activity - Daily steps, distance, calories, elevation, activity durationsget_intraday_activity - High-frequency activity data throughout the dayget_workouts - Detailed workout summaries with heart rate zones and metricsget_measures - Weight, body composition, blood pressure, heart rate, temperature, VO2 max, and moreget_user_devices - List of connected Withings devicesget_user_goals - Your health and fitness goals (steps, sleep, weight)list_heart_records - List of ECG recordingsget_heart_signal - Detailed ECG waveform datalist_stetho_records - List of stethoscope recordingsget_stetho_signal - Detailed audio signal dataTry asking Claude:
Want to run your own instance? Here's how to deploy this MCP server yourself.
https://your-domain.com/callback
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.
# 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
bun install -g supabase (or use brew install supabase/tap/supabase)supabase link --project-ref <your-project-ref>supabase db pushSUPABASE_URLSUPABASE_SECRET_KEYNote: 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.
# Copy environment template
cp .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.
# 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 |
Go back to your Withings developer app and update the redirect URI to match your deployed URL:
https://your-domain.com/callback
Withings (or any name you prefer)https://your-domain.com/mcpConfigure your MCP client with the following connection details:
https://your-domain.com/mcp/.well-known/oauth-authorization-server| Variable | Required | Description |
|---|---|---|
WITHINGS_CLIENT_ID | Yes | Your Withings app client ID |
WITHINGS_CLIENT_SECRET | Yes | Your Withings app client secret |
WITHINGS_REDIRECT_URI | Yes | OAuth callback URL (must match Withings app settings) |
ENCRYPTION_SECRET | Yes | 32+ character secret for token encryption (generate with bun run generate-secret) |
SUPABASE_URL | Yes | Your Supabase project URL (from Dashboard → Settings → API) |
SUPABASE_SECRET_KEY | Yes | Your Supabase service role key (from Dashboard → Settings → API) |
PORT | No | Server port (default: 3000) |
LOG_LEVEL | No | Logging level: trace, debug, info, warn, error (default: info) |
ALLOWED_ORIGINS | No | Comma-separated list of allowed CORS origins for browser clients |
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
src/
├── auth/ # OAuth 2.0 authentication & token storage
├── db/ # Supabase client & cleanup scheduler
├── server/ # Hono app, MCP endpoints, middleware
├── tools/ # MCP tools for Withings API (sleep, measure, user, heart, stetho)
├── types/ # TypeScript type definitions (Hono, Withings API)
├── withings/ # Withings API client
├── utils/ # Logger and encryption utilities
└── index.ts # Main entry point
supabase/
└── migrations/ # Database schema migrations
See CLAUDE.md for detailed architecture documentation.
All Withings access tokens, refresh tokens, and authorization codes are encrypted at rest using AES-256-GCM:
Important: Keep your ENCRYPTION_SECRET:
bun run generate-secret)/authorize endpoint validates redirect_uri against the registered client's allowed URIs, preventing open redirect attacksunsafe-inline directivesThe custom logger automatically redacts all sensitive information:
You can review the logging implementation in src/utils/logger.ts.
This is a personal project, but contributions are welcome! Please:
MIT License - see LICENSE file for details.
Built with: