Health Hub MCP について
Health Hub MCPは、Android Health Connectの記録をLLMクライアント向けの集約健康指標に変換するセルフホスト可能なサーバーです。受信データを重複排除し、生イベントを標準では公開せずに日次サマリーや診断ツールを提供します。
主な機能
- 012種類のAndroidアプリからデータを受信
- 02コンテンツハッシュによる記録の重複排除
- 03日次指標の集計
- 045種類の健康データツール
- 05注意事項と同期診断の提供
活用シーン
- 01活動・睡眠・バイタルの日次サマリー確認
- 02指標の経時変化の確認
- 03同期漏れや受信診断の確認
MCP 対応
日次サマリー、指標系列、睡眠詳細、同期状態、ペイロード検査の5つのツールをMCPクライアントに公開します。標準では生イベントではなく、集計データと注意事項を返します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://{host}/mcp-healthclaude mcp add --transport http naymevg-health https://{host}/mcp-health{"mcpServers":{"naymevg-health":{"type":"http","url":"https://{host}/mcp-health"}}}Cursor で開く{"servers":{"naymevg-health":{"type":"http","url":"https://{host}/mcp-health"}}}VS Code で開く{"mcpServers":{"naymevg-health":{"type":"http","url":"https://{host}/mcp-health"}}}{"mcpServers":{"naymevg-health":{"serverUrl":"https://{host}/mcp-health"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://{host}/mcp-health認証が必要ツール
詳細
Health Hub MCP Server
Android コンパニオンアプリから Health Connect のデータを取り込み、Model Context Protocol 経由で集計済みの健康指標を LLM クライアントに公開する、個人用 MCP サーバーです。
Android 14+ ──POST /ingest/health──────▶ ┌──────────────────┐
(companion app) │ │
Android 14+ ──POST /ingest/hc-webhook──▶ │ Health Hub │──MCP──▶ LLM
(HC Webhook client) │ SQLite │
browser ──GET /debug──▶ └──────────────────┘
コンパニオンアプリは Health Connect から生の記録を読み取り、このサーバーに送信します。サーバーはデータを正規化して重複を排除し、日ごとの集計データにまとめてから、5 つの MCP ツールを通じて LLM クライアント(Claude、Perplexity、OpenCode)に公開します。デフォルトでは生のイベントがモデルに渡されることはありません。明示的な caveats を含む集計済みの要約のみが渡されるため、モデルが不足しているデータを気付かれないまま捏造することはできません。
要件
- life-dashboard-companion-app v1.4.0 以降を実行する Android 14 以降の端末
- Docker と Docker Compose を備えた任意のホスト
- TLS 対応のドメイン(証明書は Caddy が自動的に処理します)
クイックスタート
cp .env.example .env
# Edit .env: set DEVICE_TOKEN and MCP_TOKEN (run: openssl rand -hex 32)
docker compose up -d --build
curl -s http://localhost:8000/health
コンパニオンアプリ
サーバーは、2 つの Android アプリから別々のエンドポイント経由で健康データを受け付けます。どちらも同じデータベースに書き込み、コンテンツハッシュで重複を排除するため、両方のアプリから同じデータを送信しても二重にカウントされません。
| アプリ | エンドポイント | 形式 | 最適な用途 |
|---|---|---|---|
| life-dashboard-companion-app v1.4.0 | POST /ingest/health | source: "health_connect" が必須 | 増分同期、種類ごとに 200 件の記録 |
| HC Webhook | POST /ingest/hc-webhook | source は省略可能、HRV は rmssd_millis、追加の種類に対応 | 全件同期、すべての種類を 1 つの POST で送信 |
どちらのエンドポイントも、以下が必要です。
Authorization: Bearer <DEVICE_TOKEN>
Content-Type: application/json; charset=utf-8
HC Webhook エンドポイントは、コンパニオンアプリにはない 5 種類の Health Connect データ(skin_temperature、basal_metabolic_rate、vo2_max、intermenstrual_bleeding、body_water_mass)も受け付けます。不明な種類のキーは無視され、サーバーのレジストリに登録されている種類のみが処理されます。
スマートフォンの接続
手順については、docs/ANDROID.md をご覧ください。
LLM の接続
Claude Desktop の設定(claude_desktop_config.json)に追加します。
{
"mcpServers": {
"health-hub": {
"url": "https://your-domain.example.com/mcp",
"headers": {"Authorization": "Bearer <YOUR_MCP_TOKEN>"}
}
}
}
Perplexity、OpenCode、その他の MCP クライアントでは、同じ URL とトークンを使用してください。Authorization ヘッダーには Bearer プレフィックスを含める必要があります。これがないリクエストはサーバーによって拒否されます。
MCP ツール
| ツール | 説明 |
|---|---|
daily_summary | 日ごとの健康指標の集計:歩数、距離、カロリー、睡眠、心拍数、体重 |
metric_series | 任意の指標の時系列データ(日単位・週単位でグループ化) |
sleep_detail | 睡眠段階(深い睡眠、REM、浅い睡眠、覚醒)を含む詳細な睡眠セッション |
get_sync_health | 種類ごとの同期状況:最終イベント、データ範囲、欠落、エラー |
inspect_last_payload | ペイロードの生データのメタデータとアプリの診断情報 |
各ツールは caveats: string[] フィールドを含む object(配列のみの形式にはなりません)を返します。このフィールドは、日付のデータ欠落、記録の重複、集計方法の変更についてモデルに警告します。レスポンスのオブジェクト数は 400 件までです。
既知の制限事項
- Health Connect には記録 ID がないため、重複排除はコンテンツハッシュに基づきます
- 複数のデータソース(スマートフォン+時計)によって、累積指標が二重にカウントされる場合があります。サーバーは重複する時間区間を抑制しますが、これはヒューリスティックです。
/debugの比較パネルを確認してください。 - アプリの同期カーソルは前方向にしか進みません。Health Connect に後から追加された記録は届かない場合があります
- Health Connect は再認証なしでは 30 日より古いデータを提供しません。サーバーがデータのアーカイブになります。
data/をバックアップしてください。
ライセンス
MIT — LICENSE をご覧ください。
コンパニオンアプリ
life-dashboard-companion-app v1.4.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。