MCPcopy Index your code
hub / github.com/TheDigitalNinja/mcp-fitbit

github.com/TheDigitalNinja/mcp-fitbit @v1.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.2 ↗ · + Follow
62 symbols 179 edges 28 files 2 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Fitbit MCP Server

Fitbit API CI Coverage Status License: MIT npm version npm downloads

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?"

Quick Start

🚀 Want to test the tools right away?

Option 1: Install from npm (Recommended)

  1. Get Fitbit API credentials
  2. Create an app with OAuth 2.0 Application Type: Personal
  3. Set Callback URL: http://localhost:3000/callback
  4. Note your Client ID and Client Secret

  5. Install the package globally:

npm install -g mcp-fitbit
  1. Add 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

  1. Get Fitbit API credentials (see Installation below)
  2. Then run:
git clone https://github.com/TheDigitalNinja/mcp-fitbit
cd mcp-fitbit
npm install
# Create .env with your Fitbit credentials
npm run dev

Both 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)

  1. Get Fitbit API credentials at dev.fitbit.com
  2. Set OAuth 2.0 Application Type to Personal
  3. Set Callback URL to http://localhost:3000/callback

  4. Install the package: bash npm install -g mcp-fitbit

  5. Create .env file in the package directory:

When you run mcp-fitbit for the first time, it will tell you exactly where to create the .env file. It will look something like: C:\Users\YourName\AppData\Roaming\npm\node_modules\mcp-fitbit\.env

  1. Add your credentials to the .env file: bash FITBIT_CLIENT_ID=your_client_id_here FITBIT_CLIENT_SECRET=your_client_secret_here

  2. Run the server: bash mcp-fitbit

For Developers (from source)

  1. Get Fitbit API credentials at dev.fitbit.com
  2. Set OAuth 2.0 Application Type to Personal
  3. Set Callback URL to http://localhost:3000/callback

  4. Clone and setup: bash git clone https://github.com/TheDigitalNinja/mcp-fitbit cd mcp-fitbit npm install

  5. Create .env file: bash FITBIT_CLIENT_ID=your_client_id_here FITBIT_CLIENT_SECRET=your_client_secret_here

  6. Build the server: bash npm run build

Available Tools

Tool Description Parameters
get_weight Weight data over time periods period: 1d, 7d, 30d, 3m, 6m, 1y
get_sleep_by_date_range Sleep logs for date range (max 100 days) startDate, endDate (YYYY-MM-DD)
get_exercises Activity/exercise logs after date afterDate (YYYY-MM-DD), limit (1-100)
get_daily_activity_summary Daily activity summary with goals date (YYYY-MM-DD)
get_activity_goals User's activity goals (daily/weekly) period: daily, weekly
get_activity_timeseries Activity time series data (max 30 days) resourcePath, startDate, endDate (YYYY-MM-DD)
get_azm_timeseries Active Zone Minutes time series (max 1095 days) startDate, endDate (YYYY-MM-DD)
get_heart_rate Heart rate for time period period: 1d, 7d, 30d, 1w, 1m, optional date
get_heart_rate_by_date_range Heart rate for date range (max 1 year) startDate, endDate (YYYY-MM-DD)
get_food_log Complete nutrition data for a day date (YYYY-MM-DD or "today")
get_nutrition Individual nutrient over time resource, period, optional date
get_nutrition_by_date_range Individual nutrient for date range resource, startDate, endDate
get_profile 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.json - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json

First Run Authorization

When you first ask your AI assistant to use Fitbit data: 1. The server opens your browser to http://localhost:3000/auth 2. Log in to Fitbit and grant permissions 3. You'll be redirected to a success page 4. 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 inspector

Architecture: See TASKS.md for improvement opportunities and technical details.

Extension points exported contracts — how you extend this code

ActivityDistance (Interface)
(no doc)
src/daily-activity.ts
AzmValue (Interface)
(no doc)
src/azm-timeseries.ts
ActivityLogEntry (Interface)
(no doc)
src/activities.ts
WeightTimeSeriesEntry (Interface)
(no doc)
src/weight.ts
HeartRateZone (Interface)
(no doc)
src/heart-rate.ts
NutritionTimeSeriesEntry (Interface)
(no doc)
src/nutrition.ts
ToolConfig (Interface)
(no doc)
src/utils.ts
SleepLevelSummaryData (Interface)
(no doc)
src/sleep.ts

Core symbols most depended-on inside this repo

handleFitbitApiCall
called by 15
src/utils.ts
registerTool
called by 9
src/utils.ts
registerProfileTool
called by 9
src/profile.ts
registerActivitiesTool
called by 8
src/activities.ts
registerWeightTool
called by 8
src/weight.ts
makeFitbitRequest
called by 8
src/utils.ts
registerSleepTool
called by 8
src/sleep.ts
registerDailyActivityTool
called by 7
src/daily-activity.ts

Shape

Interface 35
Function 27

Languages

TypeScript100%

Modules by API surface

src/auth.ts8 symbols
src/utils.ts7 symbols
src/sleep.ts7 symbols
src/daily-activity.ts6 symbols
src/nutrition.ts5 symbols
src/heart-rate.ts5 symbols
src/azm-timeseries.ts4 symbols
src/weight.ts3 symbols
src/activity-timeseries.ts3 symbols
src/activity-goals.ts3 symbols
src/activities.ts3 symbols
src/profile.ts2 symbols

For agents

$ claude mcp add mcp-fitbit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page