Fitbit MCP Server
The Fitbit MCP Server acts as a bridge between an LLM (like Claude) and the Fitbit API, enabling health and fitness data retrieval for the user.
Capabilities:
Retrieve Weight Data: Fetch weight data for specified periods (1d, 7d, 30d, 3m, 6m, 1y)
Retrieve Sleep Data: Access sleep logs for specific date ranges (max 100 days) using YYYY-MM-DD format
Retrieve Profile Information: Get user's Fitbit profile including personal details like name, age, gender, height, and weight
The server uses OAuth 2.0 for secure authentication and is designed to be extensible for adding more Fitbit API endpoints in the future.
Retrieves health and fitness data from a user's Fitbit account, including weight measurements, sleep logs, and user profile information. Currently supports endpoints for weight data by period, sleep data by date range, and profile details, with planned support for steps, heart rate, and activity data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fitbit MCP Server show me my sleep patterns from last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fitbit MCP Connector for AI
Connect AI assistants to your Fitbit health data
Give your AI assistant access to your Fitbit data for personalized health insights, trend analysis, and automated tracking. Works with Claude Desktop and other MCP-compatible AI tools.
What it does
🏃 Exercise & Activities - Get detailed workout logs and activity data
😴 Sleep Analysis - Retrieve sleep patterns and quality metrics
⚖️ Weight Tracking - Access weight trends over time
❤️ Heart Rate Data - Monitor heart rate patterns and zones
🍎 Nutrition Logs - Review food intake, calories, and macros
👤 Profile Info - Access basic Fitbit profile details
Ask your AI things like: "Show me my sleep patterns this week" or "What's my average heart rate during workouts?"
Related MCP server: coros-mcp
Quick Start
🚀 Want to test the tools right away?
Option 1: Install from npm (Recommended)
Create an app with OAuth 2.0 Application Type:
PersonalSet Callback URL:
http://localhost:3000/callbackNote your Client ID and Client Secret
Install the package globally:
npm install -g mcp-fitbitAdd to your Claude Desktop config file:
{
"mcpServers": {
"fitbit": {
"command": "mcp-fitbit",
"args": [],
"env": {
"FITBIT_CLIENT_ID": "your_client_id_here",
"FITBIT_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}Config file location:
Windows: %AppData%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Restart Claude Desktop and ask about your Fitbit data!
Option 2: Development Setup
Get Fitbit API credentials (see Installation below)
Then run:
git clone https://github.com/TheDigitalNinja/mcp-fitbit
cd mcp-fitbit
npm install
# Create .env with your Fitbit credentials
npm run devBoth options open the MCP Inspector at http://localhost:5173 where you can test all tools interactively and handle the OAuth flow.
Installation
For End Users (npm package)
Get Fitbit API credentials at dev.fitbit.com
Set OAuth 2.0 Application Type to
PersonalSet Callback URL to
http://localhost:3000/callback
Install the package:
npm install -g mcp-fitbitCreate
.envfile in the package directory:When you run
mcp-fitbitfor the first time, it will tell you exactly where to create the.envfile. It will look something like:C:\Users\YourName\AppData\Roaming\npm\node_modules\mcp-fitbit\.envAdd your credentials to the
.envfile:FITBIT_CLIENT_ID=your_client_id_here FITBIT_CLIENT_SECRET=your_client_secret_hereRun the server:
mcp-fitbit
For Developers (from source)
Get Fitbit API credentials at dev.fitbit.com
Set OAuth 2.0 Application Type to
PersonalSet Callback URL to
http://localhost:3000/callback
Clone and setup:
git clone https://github.com/TheDigitalNinja/mcp-fitbit cd mcp-fitbit npm installCreate
.envfile:FITBIT_CLIENT_ID=your_client_id_here FITBIT_CLIENT_SECRET=your_client_secret_hereBuild the server:
npm run build
Available Tools
Tool | Description | Parameters |
| Weight data over time periods |
|
| Sleep logs for date range (max 100 days) |
|
| Activity/exercise logs after date |
|
| Daily activity summary with goals |
|
| User's activity goals (daily/weekly) |
|
| Activity time series data (max 30 days) |
|
| Active Zone Minutes time series (max 1095 days) |
|
| Heart rate for time period |
|
| Heart rate for date range (max 1 year) |
|
| Complete nutrition data for a day |
|
| Individual nutrient over time |
|
| Individual nutrient for date range |
|
| User profile information | None |
Nutrition resources: caloriesIn, water, protein, carbs, fat, fiber, sodium
Activity time series resources: steps, distance, calories, activityCalories, caloriesBMR, tracker/activityCalories, tracker/calories, tracker/distance
Claude Desktop
Using npm package (recommended):
Add to claude_desktop_config.json:
{
"mcpServers": {
"fitbit": {
"command": "mcp-fitbit",
"args": []
}
}
}Using local development version:
Add to claude_desktop_config.json:
{
"mcpServers": {
"fitbit": {
"command": "node",
"args": ["C:\\path\\to\\mcp-fitbit\\build\\index.js"]
}
}
}Config file locations:
Windows:
%AppData%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
First Run Authorization
When you first ask your AI assistant to use Fitbit data:
The server opens your browser to
http://localhost:3000/authLog in to Fitbit and grant permissions
You'll be redirected to a success page
Your AI can now access your Fitbit data!
Development
npm run lint # Check code quality
npm run format # Fix formatting
npm run build # Compile TypeScript
npm run dev # Run with MCP inspectorArchitecture: See TASKS.md for improvement opportunities and technical details.
Available Tools
13 toolsget_activity_goalsA
Get the raw JSON response for user's activity goals from Fitbit. Supports 'daily' and 'weekly' periods. Returns goal values for steps, distance, calories, floors, active minutes, and active zone minutes.
Inputs: period (required).
get_activity_timeseriesA
Get the raw JSON response for activity time series data from Fitbit over a date range (max 30 days). Supports various resource paths like 'steps', 'distance', 'calories', 'activityCalories', 'caloriesBMR'.
Inputs: resourcePath (required), startDate (required), endDate (required).
get_azm_timeseriesA
Get the raw JSON response for Active Zone Minutes (AZM) time series data from Fitbit over a date range (max 1095 days). Returns total AZM plus breakdown by fat burn, cardio, and peak zones.
Inputs: startDate (required), endDate (required).
get_daily_activity_summaryA
Get the raw JSON response for daily activity summary from Fitbit for a specific date. Includes goals, steps, calories, distances, and heart rate zones. Requires a 'date' parameter in YYYY-MM-DD format.
Inputs: date (required).
get_exercisesB
Get the raw JSON response for exercise and activity logs from Fitbit after a specific date. Requires 'afterDate' parameter in 'YYYY-MM-DD' format. Retrieves a detailed list of logged exercises and activities.
Inputs: afterDate (required), limit.
get_food_logA
Get comprehensive nutrition data (calories, protein, carbs, fat, fiber, sodium) from Fitbit food log for a specific date. Returns daily summary totals and individual food entries with nutritional values.
Inputs: date.
get_heart_rateA
Get the raw JSON response for heart rate data from Fitbit for a specified period ending today or on a specific date. Requires a 'period' parameter such as '1d', '7d', '30d', '1w', '1m' and optionally accepts 'date' parameter.
Inputs: period (required), date.
get_heart_rate_by_date_rangeA
Get the raw JSON response for heart rate data from Fitbit for a specific date range. Requires 'startDate' and 'endDate' parameters in 'YYYY-MM-DD' format. Note: The API enforces a maximum range of 1 year.
Inputs: startDate (required), endDate (required).
get_nutritionC
Get the raw JSON response for nutrition data from Fitbit for a specified resource and period ending today or on a specific date. Requires 'resource' parameter (caloriesIn, water) and 'period' parameter such as '1d', '7d', '30d', '1w', '1m', '3m', '6m', '1y' and optionally accepts 'date' parameter.
Inputs: resource (required), period (required), date.
get_nutrition_by_date_rangeA
Get the raw JSON response for nutrition data from Fitbit for a specific resource and date range. Requires 'resource' parameter (caloriesIn, water), 'startDate' and 'endDate' parameters in 'YYYY-MM-DD' format. Note: The API enforces a maximum range of 1,095 days.
Inputs: resource (required), startDate (required), endDate (required).
get_profileA
Get the raw JSON response for the user's Fitbit profile.
Inputs: no named parameters.
get_sleep_by_date_rangeA
Get the raw JSON response for sleep logs from Fitbit for a specific date range. Requires 'startDate' and 'endDate' parameters in 'YYYY-MM-DD' format. Note: The API enforces a maximum range of 100 days.
Inputs: startDate (required), endDate (required).
get_weightA
Get the raw JSON response for weight entries from Fitbit for a specified period ending today. Requires a 'period' parameter such as '1d', '7d', '30d', '3m', '6m', '1y'
Inputs: period (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools are clearly separated by data type (weight, sleep, heart rate, nutrition, activity), but get_food_log and get_nutrition overlap in nutrition data, and get_daily_activity_summary vs get_activity_timeseries could be confused for similar activity data.
All tools follow a consistent get_<resource> pattern, with suffixes like _by_date_range and _timeseries for variants. Minor inconsistency: get_food_log vs get_nutrition use different resource names for overlapping data, and get_azm_timeseries uses an abbreviation.
13 tools is well-scoped for a Fitbit data retrieval server, covering the major health data categories without excessive fragmentation.
The server covers read-only retrieval across major Fitbit domains (weight, sleep, heart rate, nutrition, activity, profile), but lacks write operations (logging food, activity, sleep) and some common resources like SpO2 or temperature. For a read-only data access server, the coverage is reasonable but not exhaustive.
Maintenance
Related MCP Connectors
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseDqualityDmaintenanceA Model Context Protocol (MCP) implementation for Fitbit, enabling AI assistants to access and analyze your Fitbit health and fitness data. Disclaimer: This is an unofficial integration built using Fitbit's public API and is not affiliated with or endorsed by Fitbit Inc.1611 npm10MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that fetches sleep, HRV, and training data from the unofficial Coros API and exposes them to AI assistants like Claude, enabling natural language queries about fitness metrics and workout management.26125MIT
- AlicenseBqualityBmaintenanceLocal-first MCP server that connects AI agents to your Fitbit activity, sleep, heart-rate, HRV, SpO2 and weight data.33352 npm5MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that gives Claude access to your WHOOP biometric data — recovery, sleep, strain, and workouts.39 npmMIT