Fitbit MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Read Fitbit profile, activity, sleep, heart rate and device data.
17 tools: 10 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things10Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http fitbit https://fitbit.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Changes things 10Claude Code: ask
fitbit_activity_goalsThe user's activity goals (steps/distance/calories/active-minutes) for the daily or weekly period.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The user's activity goals (steps/distance/calories/active-minutes) for the daily or weekly period. Fitbit REST: GET /1/user/-/activities/goals/{period}.json.
Annotations the server declares
- title: Activity goals
- readOnlyHint: true
fitbit_activity_time_seriesActivity metric time series over a date range (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Activity metric time series over a date range (e.g. daily steps for a week). Max 1095 days. Fitbit REST: GET /1/user/-/activities/{resource}/date/{startDate}/{endDate}.json.
Annotations the server declares
- title: Activity time series
- readOnlyHint: true
fitbit_breathing_rateBreathing (respiratory) rate summary for a date or range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Breathing (respiratory) rate summary for a date or range. Fitbit REST: GET /1/user/-/br/date/{date}[/{endDate}].json.
Annotations the server declares
- title: Breathing rate
- readOnlyHint: true
fitbit_cardio_scoreCardio fitness score (VO2 max estimate) for a date or range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Cardio fitness score (VO2 max estimate) for a date or range. Fitbit REST: GET /1/user/-/cardioscore/date/{date}[/{endDate}].json.
Annotations the server declares
- title: Cardio score
- readOnlyHint: true
fitbit_daily_activity_summaryDaily activity summary for a date — steps, distance, floors, calories, active minutes, and the day's logged activities.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Daily activity summary for a date — steps, distance, floors, calories, active minutes, and the day's logged activities. Fitbit REST: GET /1/user/-/activities/date/{date}.json.
Annotations the server declares
- title: Daily activity summary
- readOnlyHint: true
fitbit_heart_rateHeart-rate time series — resting HR and time in each HR zone.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Heart-rate time series — resting HR and time in each HR zone. Give a single date + period, OR a date + endDate range. Fitbit REST: GET /1/user/-/activities/heart/date/{date}/{period|endDate}.json.
Annotations the server declares
- title: Heart rate
- readOnlyHint: true
fitbit_hrvHeart rate variability (HRV) summary for a date or range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Heart rate variability (HRV) summary for a date or range. Fitbit REST: GET /1/user/-/hrv/date/{date}[/{endDate}].json.
Annotations the server declares
- title: HRV
- readOnlyHint: true
fitbit_lifetime_statsLifetime and best-ever activity statistics (total steps, distance, floors; personal bests).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Lifetime and best-ever activity statistics (total steps, distance, floors; personal bests). Fitbit REST: GET /1/user/-/activities.json.
Annotations the server declares
- title: Lifetime stats
- readOnlyHint: true
fitbit_skin_temperatureSkin temperature (relative to baseline) for a date or range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Skin temperature (relative to baseline) for a date or range. Fitbit REST: GET /1/user/-/temp/skin/date/{date}[/{endDate}].json.
Annotations the server declares
- title: Skin temperature
- readOnlyHint: true
fitbit_spo2Blood oxygen saturation (SpO2) summary for a date or range.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Blood oxygen saturation (SpO2) summary for a date or range. Fitbit REST: GET /1/user/-/spo2/date/{date}[/{endDate}].json.
Annotations the server declares
- title: SpO2
- readOnlyHint: true
Only reads 7Claude Code: allow
fitbit_body_fat_logBody fat percentage log entries for a date.No findings
Why it is in this group
- The name "fitbit_body_fat_log" says "log": a word for reading.
Description, as the server wrote it Body fat percentage log entries for a date. Fitbit REST: GET /1/user/-/body/log/fat/date/{date}.json.
Annotations the server declares
- title: Body fat log
- readOnlyHint: true
fitbit_food_logFood/nutrition log for a date — logged foods and daily nutrition totals (calories, macros).No findings
Why it is in this group
- The name "fitbit_food_log" says "log": a word for reading.
Description, as the server wrote it Food/nutrition log for a date — logged foods and daily nutrition totals (calories, macros). Fitbit REST: GET /1/user/-/foods/log/date/{date}.json.
Annotations the server declares
- title: Food log
- readOnlyHint: true
fitbit_get_devicesList the user's Fitbit devices/trackers (battery, last sync, version).No findings
Why it is in this group
- The name "fitbit_get_devices" says "get": a word for reading.
Description, as the server wrote it List the user's Fitbit devices/trackers (battery, last sync, version). Fitbit REST: GET /1/user/-/devices.json.
Annotations the server declares
- title: Get devices
- readOnlyHint: true
fitbit_get_profileThe current user's Fitbit profile (name, age, gender, height, timezone, member since, avatar, etc.).No findings
Why it is in this group
- The name "fitbit_get_profile" says "get": a word for reading.
Description, as the server wrote it The current user's Fitbit profile (name, age, gender, height, timezone, member since, avatar, etc.). Fitbit REST: GET /1/user/-/profile.json.
Annotations the server declares
- title: Get profile
- readOnlyHint: true
fitbit_sleep_logSleep logs for a date (or date range) — stages/levels, duration, efficiency, start/end times.No findings
Why it is in this group
- The name "fitbit_sleep_log" says "log": a word for reading.
Description, as the server wrote it Sleep logs for a date (or date range) — stages/levels, duration, efficiency, start/end times. Fitbit REST: GET /1.2/user/-/sleep/date/{date}[/{endDate}].json.
Annotations the server declares
- title: Sleep log
- readOnlyHint: true
fitbit_water_logWater intake log for a date.No findings
Why it is in this group
- The name "fitbit_water_log" says "log": a word for reading.
Description, as the server wrote it Water intake log for a date. Fitbit REST: GET /1/user/-/foods/log/water/date/{date}.json.
Annotations the server declares
- title: Water log
- readOnlyHint: true
fitbit_weight_logBody weight log entries for a date.No findings
Why it is in this group
- The name "fitbit_weight_log" says "log": a word for reading.
Description, as the server wrote it Body weight log entries for a date. Fitbit REST: GET /1/user/-/body/log/weight/date/{date}.json.
Annotations the server declares
- title: Weight log
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http fitbit https://fitbit.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__fitbit__fitbit_get_profile",
"mcp__fitbit__fitbit_get_devices",
"mcp__fitbit__fitbit_sleep_log",
"mcp__fitbit__fitbit_weight_log",
"mcp__fitbit__fitbit_body_fat_log",
"mcp__fitbit__fitbit_food_log",
"mcp__fitbit__fitbit_water_log"
],
"ask": [
"mcp__fitbit__fitbit_daily_activity_summary",
"mcp__fitbit__fitbit_activity_time_series",
"mcp__fitbit__fitbit_activity_goals",
"mcp__fitbit__fitbit_lifetime_stats",
"mcp__fitbit__fitbit_heart_rate",
"mcp__fitbit__fitbit_spo2",
"mcp__fitbit__fitbit_hrv",
"mcp__fitbit__fitbit_breathing_rate",
"mcp__fitbit__fitbit_cardio_score",
"mcp__fitbit__fitbit_skin_temperature"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fitbit. Review it before you use it.