Fitbit Air Daily Planner MCP Server
Click on "Install 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 Air Daily Planner MCP ServerCreate a wellness plan for today based on my health data and calendar."
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 Air Daily Planner
Fitbit/Pixel Watch由来のGoogle Health APIデータとGoogle Calendarの予定を組み合わせ、ChatGPTがその日のウェルネスプランを作るApps SDK + MCPアプリです。プランは確認カードで承認した場合だけ、専用Googleカレンダーへ登録されます。
単一ユーザー向けのハッカソンMVPです。医療機器ではなく、診断・治療・緊急時対応には使用できません。
なぜこの構成か
推論はChatGPT内のGPT-5.6が担当し、OpenAI APIを呼びません。
サーバーはGoogle Health API v4とCalendar APIの取得・整形・書き込みだけを行います。
旧Google Fit REST APIは2026年末、旧Fitbit Web APIは2026年9月に停止予定のため使用しません。
Calendarのプライマリは読み取り専用、書き込みは
GOOGLE_CALENDAR_IDで固定した専用カレンダーだけです。Calendarのprivate extended propertyで再試行時の重複登録を防ぎます。
Cloudflare D1には本人プロフィールと日別集計だけを保存し、前週比と継続利用を実現します。生の心拍時系列やCalendar本文は保存しません。
行動目標は厚生労働省「健康づくりのための身体活動・運動ガイド2023」の成人向け推奨値を参考にし、個人差と当日の体調を優先します。
Related MCP server: google-health-mcp
アーキテクチャ
flowchart LR
D["Fitbit / Pixel Watch"] --> H["Google Health API v4"]
C["Google Calendar primary"] --> M["Cloudflare Worker / MCP"]
H --> M
G["ChatGPT / GPT-5.6"] <-->|"Streamable HTTP"| M
G --> W["Apps SDK cards"]
W -->|"confirm"| M
M --> P["Planner-only Calendar"]
P --> N["Desktop / mobile reminders"]MCPツール
ツール | 動作 |
| 指定日の歩数、睡眠、心拍、欠損を取得し健康カードを表示 |
| 1〜14日の日別データと平均・達成日数を返す |
| 初回の生年月日・膝状態を保存し、年齢別目標を設定 |
| プライマリカレンダーを読み取り、場所を含む予定を返す |
|
|
ローカルセットアップ
必要環境:Node.js 20以上、npm、Google Cloudプロジェクト。
npm install
cp .dev.vars.example .dev.vars
npm test
npm run check
npm run devMCP URLはローカルではhttp://localhost:8787/mcp、ヘルスチェックは/healthzです。ChatGPTからの実機接続には公開HTTPS URLが必要です。
Google Cloud / OAuth
Google CloudでGoogle Health APIとGoogle Calendar APIを有効化する。
OAuth consent screenをExternal / Testingにし、本人をTest userへ追加する。
Web application OAuth clientを作る。
次の最小スコープをData Accessへ追加する。
https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly
https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly
https://www.googleapis.com/auth/googlehealth.sleep.readonly
https://www.googleapis.com/auth/calendar.eventsOAuth Playgroundまたは補助スクリプトで本人のrefresh tokenを取得する。
GOOGLE_CLIENT_ID=... npm run oauth:url
GOOGLE_CLIENT_ID=... GOOGLE_CLIENT_SECRET=... GOOGLE_AUTH_CODE=... npm run oauth:exchangeGOOGLE_REDIRECT_URIを省略するとOAuth Playground URLを使います。取得した秘密情報は.dev.varsまたはCloudflare Secretsにだけ保存し、コミットしません。
Testingモードのrefresh tokenは7日で失効します。AUTH_EXPIREDになったら再認可してください。未検証アプリは最大100ユーザーで、100ユーザー超または一般公開にはOAuth verificationと第三者セキュリティレビューが必要です。
環境変数
名前 | 種別 | 説明 |
| Secret | Google OAuth client ID |
| Secret | Google OAuth client secret |
| Secret | 互換用token。個別tokenが未設定の場合のみ使用 |
| Secret | Google Healthの読み取りスコープだけで認可したtoken |
| Secret |
|
| Secret | 書き込み専用カレンダーID。 |
| Secret/任意 | MCP endpointのBearer token |
| Variable | 既定 |
| Variable | 既定 |
| Variable | 既定 |
| Variable |
|
| Secret/任意 | D1未使用時の単一ユーザー向け生年月日。D1プロフィールを優先 |
D1プロフィール・ログ
初回ダッシュボードで生年月日を入力すると、D1設定済み環境ではプロフィールへ保存されます。日別ログは歩数、歩数目標、睡眠分数、安静時心拍、欠損項目だけです。
npx wrangler d1 create fitbit-daily-planner
# 出力されたdatabase_idでwrangler.jsoncへDB bindingを追加
npx wrangler d1 migrations apply fitbit-daily-planner --local追加するbinding:
"d1_databases": [{
"binding": "DB",
"database_name": "fitbit-daily-planner",
"database_id": "作成時に表示されたID"
}]Cloudflareへのデプロイ手順(現時点では未実施)
npx wrangler login
npx wrangler secret put GOOGLE_CLIENT_ID
npx wrangler secret put GOOGLE_CLIENT_SECRET
npx wrangler secret put GOOGLE_REFRESH_TOKEN
npx wrangler secret put GOOGLE_HEALTH_REFRESH_TOKEN
npx wrangler secret put GOOGLE_CALENDAR_REFRESH_TOKEN
npx wrangler secret put GOOGLE_CALENDAR_ID
npx wrangler secret put MCP_SHARED_SECRET
npm run deployCloudflare Workers Freeは小規模な単一ユーザー利用に十分ですが、無料枠超過時はリクエストが失敗する構成にし、有料機能へ自動移行しないでください。
ChatGPTへの登録と受入確認
ChatGPT BusinessのWeb版で、Workspaceの管理者/オーナーがDeveloper Modeを有効化し、デプロイしたhttps://...workers.dev/mcpをカスタムアプリとして登録します。full MCPとwrite/modify actionsはBusiness / Enterprise / EduのWeb版へbeta提供中であり、利用資格・権限・追加確認UIを実機で確認してください。
推奨プロンプト:
今日の健康サマリーと直近7日の傾向、今日の予定を確認し、無理のないウェルネスプランを作ってください。既存予定と重ねず、最初はカレンダーへ書き込まず確認カードを出してください。
確認項目:
健康カードに実データまたは明示的な欠損が出る。
GPTが3つの読み取りツールを使い、プランを説明する。
confirm:falseではカレンダーに何も増えない。カードのボタン後に専用カレンダーだけへ登録される。
同じ操作を再実行しても重複しない。
Scheduled Tasksからカスタムアプリを自動呼び出せるかはアカウント/ロールアウト依存の実機検証項目です。非対応でも上記1プロンプト体験を提出版の本線とします。
行動提案の基準
成人の既定参考値は、1日60分以上の身体活動(目安約8,000歩)、息が弾み汗をかく程度以上の運動を週60分以上、筋力トレーニングを週2〜3日です。
月曜〜日曜を1週間として評価し、土日、とくに日曜日は平日の不足を責めず「今週残っている実行機会」として自宅・近所の有酸素運動を提案できます。1回の運動で日々の不足が完全に帳消しになるとは説明しません。
ジムやOWLなど外部施設・運動アプリへの誘導は行いません。移動を伴わない選択肢を優先します。
本人が別作業で
kneeStatus: okと設定し、当日の体調にも問題がない場合は、自重スクワット20秒+休息10秒×8セット(本編4分)を時短候補にできます。ウォームアップとクールダウンを併記し、膝の痛み・違和感または状態不明時は提案しません。4分メニューを厚労省の週60分と同等換算せず、田畑式原法の効果を一般的な20/10運動へそのまま帰属させません。
制限と安全性
ChatGPTカスタムMCPと書き込みアクションはBusiness / Enterprise / EduのWeb版が対象です。
Apps SDK UIはWeb版で確認します。モバイルではカスタムMCPアプリを利用できない場合があります。
Google Health APIのTesting tokenは7日で失効します。
Google Health APIの未検証アプリは100ユーザーまでです。
センサー未装着、同期遅延、機種差により値が欠損します。ゼロとして補完しません。
健康状態を断定せず、行動提案は散歩・休憩・ストレッチ・自宅での短時間運動・睡眠習慣など一般的なウェルネス支援に限定します。
MCPは単一Googleアカウントのtokenを共有します。第三者向けに公開しないでください。
MCP_SHARED_SECRETを設定し、ChatGPT側で認証を渡せる構成にしてください。認証設定不可ならURLを公開共有しないでください。
撤去
Cloudflare Workerを削除する。
Google AccountのThird-party accessからアプリの権限を取り消す。
Google CloudのOAuth credentialsと専用カレンダーを削除する。
ローカルの
.dev.varsを削除する。
D1データベースも削除してください。保存対象はプロフィールと日別集計だけで、Durable Objectsや生データの永続コピーはありません。
提出資料
本人ログイン、OAuth認可、Developer Mode、デプロイ、実データ確認、録画・公開・提出は別チャット用の手作業票へ分離しています。本リポジトリの実装工程ではデプロイしません。
Codexの利用
Codexを使って、API廃止状況の調査、Google Health API v4への設計変更、MCPツール・Apps SDKカード・OAuth・重複防止・テスト・提出資料を一貫して作成しました。提出時にメイン開発セッションの/feedback IDを追記してください。
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceA local-first MCP server that enables AI agents to read user-authorized Google Health API v4 data from Fitbit, Pixel Watch, and partners via OAuth, with tokens never leaving the machine.261,21936MIT
- Alicense-qualityBmaintenanceAn MCP server that connects AI clients to the Google Health API, enabling natural language queries about health and fitness data such as steps, sleep, heart rate, and exercise sessions.684MIT
- AlicenseAqualityBmaintenanceAn MCP server that locally authenticates with Google Health API v4 and provides read-only access to Fitbit, Pixel Watch, and other health data for AI agents.298611MIT
- Flicense-qualityBmaintenanceA remote MCP server that allows trusted LLM assistants to read Google Health/Fitbit data and log nutrition, hydration, and body measurements via the Google Health API.
Related MCP Connectors
AI-powered medical document management for cancer patients. Google Drive, Gmail, Calendar via MCP.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fujirecords/googlefitbit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server