Skip to main content
Glama
deslabpro-max

Fitbit Google Health MCP

Fitbit / Google Health → Claude, ChatGPT, Gemini

English: personal MCP connector exposing your Google Health (Fitbit) data to AI assistants, self-hosted on Cloudflare Workers free tier. Setup guide is currently in Russian.

Личный MCP-коннектор: спрашивайте свой ИИ-ассистент о шагах, сне, пульсе, SpO2 и тренировках с браслета Fitbit (или Pixel Watch) — и записывайте вес, еду, воду и тренировки голосом прямо из чата.

«Как я спал на этой неделе?» · «Сколько шагов сегодня?» · «Запиши обед 650 ккал» · «Какой у меня пульс покоя за месяц, есть ли тренд?»

Данные берутся из Google Health API v4 — облака, куда устройства Fitbit синхронизируются через приложение Fitbit. Коннектор — это ваш личный сервер на бесплатном тарифе Cloudflare Workers: никаких чужих серверов между вашим здоровьем и вашим ИИ, ключи и токены только у вас.

Deploy to Cloudflare

Работает с: Claude (веб, мобильный, десктоп — пользовательские коннекторы), ChatGPT (Developer mode, планы Plus/Pro), Gemini CLI, а также любым MCP-клиентом со Streamable HTTP + OAuth.

🧭 Не программист? Не страшно. Подробная пошаговая инструкция для новичков (каждый клик, все ошибки и решения): docs/SETUP.md. Версия для вставки в форумный пост (BB-код): docs/4pda.bbcode.txt.


Что умеет

Инструмент

Что делает

get_daily_summary

Сводка за день: активность, сон с фазами, пульс, SpO2, HRV, температура кожи во сне, дыхание, AFib-уведомления, вес

get_activity

Шаги, дистанция, калории, этажи, зонные минуты по дням за период

get_sleep

Сессии сна с фазами (глубокий / REM / лёгкий)

get_heart_rate

Пульс за день: покоя, min/max/avg, почасовая разбивка

get_exercises

Тренировки за период с метриками

get_metric

Ещё ~25 типов данных: SpO2, HRV, дыхание во сне, температура, зоны пульса, сидячие периоды, глюкоза, вода, питание, AFib и др.

get_device_status

Модель устройства, батарея, время последней синхронизации

log_weight / log_body_fat

Записать вес / процент жира

log_water / log_food

Записать воду / еду с калориями и БЖУ

log_exercise

Записать тренировку вручную

log_mood / log_symptom

Настроение / симптомы

delete_log

Удалить записи, созданные коннектором

Данные браслета коннектор изменить не может — Google Health позволяет приложению править и удалять только записи, которые оно само создало.

Related MCP server: apple-health-shortcuts-mcp

Как это устроено

Браслет Fitbit ──BT──► приложение Fitbit ──► Google Health API (облако Google)
                                                   ▲
                                     OAuth 2.0, readonly + свои логи
                                                   │
Claude / ChatGPT / Gemini ──MCP──► ваш Worker на Cloudflare (этот репозиторий)
  • Воркер — одновременно MCP-сервер (Streamable HTTP) и OAuth-сервер для ИИ-клиента (@cloudflare/workers-oauth-provider, с Google как upstream-провайдером).

  • Токены Google хранятся в зашифрованном виде в вашем Cloudflare KV.

  • Времена и даты — «гражданские» (civil time): часовой пояс пользователя учитывается самим Google Health, серверу его знать не нужно.

Установка (кратко)

Полная пошаговая инструкция — docs/SETUP.md.

  1. Cloudflare — нажмите кнопку «Deploy to Cloudflare» выше. Cloudflare склонирует репозиторий в ваш GitHub, сам создаст KV-хранилище и настроит автодеплой. Запишите адрес воркера: https://<имя>.<поддомен>.workers.dev.

  2. Google Cloud (console.cloud.google.com) — создайте проект, включите Google Health API, в OAuth-настройках добавьте себя в Test users и создайте клиент типа Web application с redirect URI https://<адрес-воркера>/callback. Скопируйте Client ID и Client secret.

  3. Секреты — в воркере: Settings → Variables and Secrets → добавьте GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET (тип Secret).

  4. Подключение:

    • Claude: Settings → Connectors → Add custom connector → https://<адрес-воркера>/mcp → Connect → окно Google.

    • ChatGPT: Settings → включить Developer mode → добавить MCP-коннектор с тем же URL (OAuth).

    • Gemini CLI: блок mcpServers в ~/.gemini/settings.json с httpUrl и "oauth": {"enabled": true}.

Ручная установка (без кнопки)

git clone https://github.com/deslabpro-max/fitbit-google-health-mcp.git
cd fitbit-google-health-mcp
npm install
npx wrangler login
npx wrangler kv namespace create OAUTH_KV   # id → в wrangler.jsonc
npx wrangler deploy
npx wrangler secret put GOOGLE_CLIENT_ID
npx wrangler secret put GOOGLE_CLIENT_SECRET

Обновление

Установка через кнопку — это ваша собственная копия репозитория с настроенным автодеплоем: пуш в ветку main вашей копии пересобирает воркер. Чтобы забрать новые версии отсюда, добавьте этот репозиторий как remote и смержите изменения.

Безопасность и приватность

  • Запрашиваются только readonly-скоупы Google Health + скоупы записи ручных логов; полный список — в src/google-auth.ts.

  • /mcp защищён OAuth: посторонний, узнав адрес, данные не получит.

  • Секреты живут в Cloudflare Secrets, в git не попадают.

  • Приложение в Google Cloud — ваше личное, в режиме «Тестирование»: кроме добавленных вами Test users им никто не воспользуется.

Ограничения

  • Fitbit-аккаунт должен быть привязан к Google (для новых устройств это так).

  • Данные сенсоров (шаги, пульс, фазы сна) записать через API нельзя — только читать; это ограничение Google Health, а не коннектора.

  • У свежесозданного приложения в режиме «Тестирование» Google может ограничивать срок жизни refresh-токена (~7 дней) — тогда раз в неделю нужен повторный Connect, либо переведите приложение в статус «In production».

Лицензия

MIT. Проект не аффилирован с Google и Fitbit. Используете на свой страх и риск; это не медицинское устройство и не медицинский совет.

Related MCP Connectors

Related MCP Servers