fitbit-mcp
MCP server for the Fitbit Web API with OAuth PKCE, local SQLite cache, and trend analysis.
Designed for Claude Code and other MCP clients. Syncs your Fitbit data to a local database for fast, offline queries - no API calls needed after the initial sync.
Features
- OAuth 2.0 PKCE - Secure auth flow, no client secret needed
- Local SQLite cache - Sync once, query instantly
- Incremental sync - Only fetches new data since last sync
- MCP tools - Sync, query (cached data types plus live-only devices/lifetime/goals), and trend analysis
- Live mode - Bypass cache and query the API directly
- CLI - Auth setup, sync, and JSON import from the command line
- Rate limit handling - Automatic retry on 429 responses
Data types
| Tool | Data |
|---|---|
fitbit_get_heart_rate |
Resting HR, HR zones |
fitbit_get_activity |
Steps, calories, active minutes, distance |
fitbit_get_exercises |
Exercise sessions (name, duration, HR, calories) |
fitbit_get_sleep |
Duration, efficiency, sleep stages |
fitbit_get_weight |
Weight, BMI, body fat % |
fitbit_get_spo2 |
Blood oxygen saturation (avg/min/max) |
fitbit_get_hrv |
Heart rate variability (RMSSD) |
fitbit_get_azm |
Active Zone Minutes with per-zone breakdown |
fitbit_get_breathing_rate |
Nightly breaths per minute |
fitbit_get_skin_temperature |
Nightly skin temperature variation (degrees C from baseline) |
fitbit_get_core_temperature |
Manually-logged core (body) temperature readings (degrees C) |
fitbit_get_cardio_fitness |
VO2 Max / Cardio Fitness Score |
fitbit_get_food_log |
Daily food calories + water intake |
fitbit_get_devices |
Paired devices, battery level, last sync (live) |
fitbit_get_lifetime_stats |
All-time totals and personal best records (live) |
fitbit_get_goals |
User-set daily/weekly activity goals (live) |
fitbit_trends |
Aggregated averages (weekly/monthly/quarterly) |






