{
  "markdown": "<!-- delx-wellness header v2 -->\n<h1 align=\"center\">Fitbit MCP</h1>\n\n<div align=\"center\">\n  <img src=\"assets/banner.png\" alt=\"Fitbit MCP — Fitbit MCP for AI agents\" width=\"85%\" />\n</div>\n\n<h3 align=\"center\">\n  Give your AI agent your Fitbit activity, sleep, heart and HRV data &mdash; locally.<br>\n  Local-first MCP server &mdash; <strong>tokens never leave your machine</strong>.\n</h3>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/fitbit-mcp-unofficial\"><img src=\"https://img.shields.io/npm/v/fitbit-mcp-unofficial?style=for-the-badge&labelColor=0F172A&color=10B981&logo=npm&logoColor=white\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/fitbit-mcp-unofficial\"><img src=\"https://img.shields.io/npm/dm/fitbit-mcp-unofficial?style=for-the-badge&labelColor=0F172A&color=0EA5A3&logo=npm&logoColor=white\" alt=\"npm downloads\" /></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/LICENSE-MIT-22C55E?style=for-the-badge&labelColor=0F172A\" alt=\"License MIT\" /></a>\n  <a href=\"https://wellness.delx.ai/connectors/fitbit\"><img src=\"https://img.shields.io/badge/SITE-wellness.delx.ai-0EA5A3?style=for-the-badge&labelColor=0F172A\" alt=\"Site\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/davidmosiah/fitbit-mcp/stargazers\"><img src=\"https://img.shields.io/github/stars/davidmosiah/fitbit-mcp?style=for-the-badge&labelColor=0F172A&color=FBBF24&logo=github\" alt=\"GitHub stars\" /></a>\n  <a href=\"https://modelcontextprotocol.io\"><img src=\"https://img.shields.io/badge/BUILT_FOR-MCP-7C3AED?style=for-the-badge&labelColor=0F172A\" alt=\"Built for MCP\" /></a>\n  <a href=\"https://github.com/davidmosiah/delx-wellness-hermes\"><img src=\"https://img.shields.io/badge/HERMES-one--command_setup-10B981?style=for-the-badge&labelColor=0F172A\" alt=\"Hermes one-command setup\" /></a>\n  <a href=\"https://github.com/davidmosiah/delx-wellness\"><img src=\"https://img.shields.io/badge/Fitbit-00B0B9?style=for-the-badge&labelColor=0F172A&logoColor=white&logo=fitbit&logoColor=white\" alt=\"Fitbit\" /></a>\n</p>\n\n> ⚡ **One-command install** with [Delx Wellness for Hermes](https://github.com/davidmosiah/delx-wellness-hermes):\n> `npx -y delx-wellness-hermes setup` &mdash; preconfigures this connector and the other 8 in a dedicated Hermes profile.\n>\n> Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop &mdash; see the install section below.\n\n---\n\n## HTTP (v2 stateless)\n\nDefault is **stdio**. Optional Streamable HTTP — no session id, JSON responses, loopback only:\n\n```bash\nnpx -y fitbit-mcp-unofficial --http\n# GET  http://127.0.0.1:3000/health\n# POST http://127.0.0.1:3000/mcp   (sessionless)\n```\n\nEnv: `FITBIT_MCP_HOST`, `FITBIT_MCP_PORT`, `FITBIT_MCP_TRANSPORT=http`.\n\n\n<!-- /delx-wellness header v2 -->\n\n**Local-first MCP server that connects AI agents to your Fitbit activity, sleep, heart-rate, HRV, SpO2 and weight data.**\n\n> **Unofficial project.** Not affiliated with, endorsed by or supported by Fitbit or Google. Use this only with your own Fitbit account and in line with the Fitbit Web API terms.\n\n> **Platform migration risk:** Fitbit is migrating to the Google Health API. OAuth, base URL, scopes and reconnection flows may change in 2026. Treat any breakage as platform drift and check the [Fitbit Web API docs](https://dev.fitbit.com/build/reference/web-api/) before reporting it as a bug.\n\nBuilt by [David Mosiah](https://github.com/davidmosiah) for people who use Claude, Cursor, Hermes, OpenClaw or other MCP-compatible agents to think about activity, sleep and heart context — without copy-pasting numbers from the Fitbit app.\n\nPart of [Delx Wellness](https://github.com/davidmosiah/delx-wellness), a registry of local-first wellness MCP connectors.\n\n> If this connector helps your agent workflow, please star the repo. Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first wellness infrastructure.\n\n## Why this exists\n\nFitbit (now under Google) has years of wearable data — daily activity, sleep stages, intraday heart-rate, HRV, SpO2, breathing rate, weight, food and water logs. But its API uses OAuth 2.0 with per-scope authorization and intraday access that varies by app, and the platform is mid-migration to the Google Health API.\n\nThis package handles the OAuth dance locally, normalizes responses, and exposes Fitbit through the Model Context Protocol. Tokens never leave your machine. Privacy-mode defaults keep raw payloads opt-in.\n\n## Setup in 60 seconds\n\nYou'll need a Fitbit app ([create one here](https://dev.fitbit.com/apps)) with redirect URI `http://127.0.0.1:3000/callback`.\n\n```bash\nnpx -y fitbit-mcp-unofficial setup    # interactive: paste client id + secret\nnpx -y fitbit-mcp-unofficial auth     # opens browser, captures the OAuth code\nnpx -y fitbit-mcp-unofficial doctor   # verifies you're ready\n```\n\nRecommended scopes:\n\n```text\nactivity heartrate profile settings sleep weight nutrition\n```\n\nThen add this to your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"fitbit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fitbit-mcp-unofficial\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop, run `setup --client claude` and the snippet is written for you.\n\n## Try it with your agent\n\nThree things to ask first:\n\n```text\nUse fitbit_connection_status to check setup, then run fitbit_daily_summary.\nGive me a 5-line operating brief for today.\n```\n\n```text\nCall fitbit_weekly_summary with response_format=json. Identify my biggest\nsleep/activity bottleneck and give me a next-week plan.\n```\n\n```text\nUse the fitbit_intraday_investigation prompt for date=today, detail_level=1min.\nDon't claim anything Fitbit can't actually prove.\n```\n\n## Data availability\n\nThis package uses the official Fitbit Web API. When this README says `raw`, it means the upstream Fitbit JSON for a supported endpoint — not raw device sensor streams.\n\n| Data | Available | Notes |\n|---|:---:|---|\n| Daily activity (steps, calories, distance, zones) | ✓ | Standard activity summaries |\n| Activity logs | ✓ | Logged workouts |\n| Sleep + sleep stages | ✓ | When Fitbit returns stage data |\n| Resting heart rate + daily heart-rate zones | ✓ | All scored days |\n| Intraday heart-rate samples | conditional | Only when the Fitbit app/API access permits intraday |\n| HRV (overnight) | ✓ | When supported by device/account |\n| SpO2 (overnight) | ✓ | When supported by device/account |\n| Breathing rate | ✓ | When supported by device/account |\n| Weight + body composition | ✓ | When logged |\n| Food + water logs | ✓ | When logged |\n| Continuous device telemetry | — | Not exposed by Fitbit's public API |\n\n## Tools\n\n**Start with these:**\n\n- `fitbit_connection_status` — verify local setup before calling Fitbit\n- `fitbit_data_inventory` — inventory supported data domains, scopes, privacy modes and recommended first calls without calling Fitbit APIs.\n- `fitbit_daily_summary` — readiness, activity, sleep and heart context for today\n- `fitbit_weekly_summary` — scorecard, comparison vs prior week, next-week plan\n\n**Auth & diagnostics**\n\n- `fitbit_capabilities`, `fitbit_agent_manifest`, `fitbit_privacy_audit`, `fitbit_cache_status`\n- `fitbit_get_auth_url`, `fitbit_exchange_code`, `fitbit_revoke_access`\n\n**Profile & devices**\n\n- `fitbit_get_profile`, `fitbit_list_devices`\n\n**Activity**\n\n- `fitbit_get_activity_day`, `fitbit_list_activities`, `fitbit_get_activity`\n- List calls accept either `after` or `before`, matching Fitbit's mutually exclusive cursor contract. Offset ISO inputs retain their written calendar date and invalid cursors fail before HTTP.\n\n**Sleep**\n\n- `fitbit_get_sleep_day`, `fitbit_list_sleep`\n\n**Heart & physiology** (each takes a `date`)\n\n- `fitbit_get_heart_day`, `fitbit_heart_series`, `fitbit_get_heart_intraday`\n- `fitbit_get_hrv_day`, `fitbit_get_spo2_day`, `fitbit_get_breathing_rate_day`\n\n**Body & nutrition** (each takes a `date`)\n\n- `fitbit_get_weight_day`, `fitbit_get_food_day`, `fitbit_get_water_day`\n\n## Prompts\n\n- `fitbit_daily_checkin` — practical daily health and activity check-in\n- `fitbit_weekly_review` — review trends across activity, sleep and heart context\n- `fitbit_intraday_investigation` — investigate one day's intraday heart-rate samples\n\n## Resources\n\n- `fitbit://capabilities`, `fitbit://agent-manifest`\n- `fitbit://summary/daily`, `fitbit://summary/weekly`\n\n## Privacy & security\n\n- OAuth tokens are stored in `~/.fitbit-mcp/tokens.json` with `0600` permissions and are never returned by tools.\n- The server never prints access or refresh tokens.\n- `FITBIT_PRIVACY_MODE` defaults to `structured`. Raw Fitbit JSON is opt-in via `raw` mode or per-call override.\n- Structured mode preserves complete upstream physiological records and response metadata while removing GPS and secret-bearing fields.\n- Health data is sensitive — do not paste raw payloads publicly.\n- This is **not medical advice**. The server exposes user-authorized data for personal AI workflows, not diagnosis or treatment.\n\n## Configuration\n\n`setup` writes most of these into `~/.fitbit-mcp/config.json` (`0600`). Manual env override is supported:\n\n```bash\nFITBIT_CLIENT_ID=…\nFITBIT_CLIENT_SECRET=…\nFITBIT_REDIRECT_URI=http://127.0.0.1:3000/callback\n\n# Optional\nFITBIT_SCOPES=\"activity heartrate profile settings sleep weight nutrition\"\nFITBIT_PRIVACY_MODE=structured        # summary | structured | raw\nFITBIT_CACHE=sqlite                   # optional read-through cache\n```\n\n## Hermes / remote setup\n\n```bash\nnpx -y fitbit-mcp-unofficial setup --client hermes --no-auth\nnpx -y fitbit-mcp-unofficial auth                       # run locally if browser auth is needed\nnpx -y fitbit-mcp-unofficial doctor --client hermes\nhermes mcp test fitbit\n```\n\nAfter Hermes config changes, use `/reload-mcp` or `hermes mcp test fitbit`. Don't restart the gateway for normal data access.\n\nIf browser OAuth has to happen on a different machine than Hermes, run `auth` locally and copy `~/.fitbit-mcp/tokens.json` to the server with `chmod 600`.\n\n## Requirements\n\n- Node.js 20+\n- A Fitbit app at <https://dev.fitbit.com/apps> with redirect URI `http://127.0.0.1:3000/callback`\n- Intraday heart-rate access requires the Fitbit app to be approved for intraday data (varies per app)\n\n## Development\n\n```bash\ngit clone https://github.com/davidmosiah/fitbit-mcp.git\ncd fitbit-mcp\nnpm install\nnpm test\nnpm run build\n```\n\nTest with MCP Inspector:\n\n```bash\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\n## Links\n\n- npm: <https://www.npmjs.com/package/fitbit-mcp-unofficial>\n- Docs site: <https://wellness.delx.ai/connectors/fitbit>\n- Legacy docs: <https://fitbitmcp.vercel.app/>\n- GitHub: <https://github.com/davidmosiah/fitbit-mcp>\n- Delx Wellness registry: <https://github.com/davidmosiah/delx-wellness>\n- Connector quality standard: <https://github.com/davidmosiah/delx-wellness/blob/main/docs/connector-quality-standard.md>\n- Fitbit Web API: <https://dev.fitbit.com/build/reference/web-api/>\n\n<!-- delx-wellness see-also -->\n\n## See also\n\nThe full [Delx Wellness](https://wellness.delx.ai) connector library:\n\n| Provider | Package | Repo |\n|---|---|---|\n| WHOOP | [`whoop-mcp-unofficial`](https://www.npmjs.com/package/whoop-mcp-unofficial) | [whoop-mcp](https://github.com/davidmosiah/whoop-mcp) |\n| Oura | [`oura-mcp-unofficial`](https://www.npmjs.com/package/oura-mcp-unofficial) | [ouramcp](https://github.com/davidmosiah/ouramcp) |\n| Garmin | [`garmin-mcp-unofficial`](https://www.npmjs.com/package/garmin-mcp-unofficial) | [garminmcp](https://github.com/davidmosiah/garminmcp) |\n| Strava | [`strava-mcp-unofficial`](https://www.npmjs.com/package/strava-mcp-unofficial) | [strava-mcp](https://github.com/davidmosiah/strava-mcp) |\n| Fitbit | [`fitbit-mcp-unofficial`](https://www.npmjs.com/package/fitbit-mcp-unofficial) | [fitbit-mcp](https://github.com/davidmosiah/fitbit-mcp) |\n| Withings | [`withings-mcp-unofficial`](https://www.npmjs.com/package/withings-mcp-unofficial) | [withingsmcp](https://github.com/davidmosiah/withingsmcp) |\n| Apple Health | [`apple-health-mcp-unofficial`](https://www.npmjs.com/package/apple-health-mcp-unofficial) | [apple-health-mcp](https://github.com/davidmosiah/apple-health-mcp) |\n| Polar | [`polar-mcp-unofficial`](https://www.npmjs.com/package/polar-mcp-unofficial) | [polarmcp](https://github.com/davidmosiah/polarmcp) |\n| Nourish (nutrition) | [`wellness-nourish`](https://www.npmjs.com/package/wellness-nourish) | [wellness-nourish](https://github.com/davidmosiah/wellness-nourish) |\n\n**One-command setup for Hermes** — preconfigures every connector above plus wellness skills + onboarding: [`delx-wellness-hermes`](https://github.com/davidmosiah/delx-wellness-hermes).\n\n<!-- /delx-wellness see-also -->\n\n## 📧 Contact & Support\n\n- 📨 **support@delx.ai** — general questions, integration help, partnerships\n- 🐛 **Bug reports / feature requests** — [GitHub Issues](https://github.com/davidmosiah/fitbit-mcp/issues)\n- 🐦 **Updates** — [@delx369](https://x.com/delx369) on X\n- 🌐 **Site** — [wellness.delx.ai](https://wellness.delx.ai)\n\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n## Disclaimer\n\nThis software is provided as-is. It is not a medical device, does not provide medical advice, and should not be used for diagnosis or treatment. Fitbit is migrating to the Google Health API; the integration boundary may change. Always consult qualified professionals for medical concerns.\n\n## Skill or MCP\n\nSame package, two doors. MCP registers tools on stdio/HTTP. The [skill](skill/SKILL.md) can drive the **same** tools through the CLI when the client has no MCP:\n\n```bash\nnpx -y fitbit-mcp-unofficial call fitbit_connection_status --json '{}'\n```\n\nCopy `skill/SKILL.md` into your agent skills dir.\n",
  "bytes": 13663,
  "sha": "bae8e794b3c749525a7212d988ee1070003866d2cf55eec8f57cfdfb4ca7e9eb",
  "repo_slug": "davidmosiah/fitbit-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_davidmosiah_fitbitmcp_6abeda94/readme"
}