The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Health Hub MCP listing page.
Personal MCP server that ingests Health Connect data from an Android companion app and exposes aggregated health metrics to LLM clients over the Model Context Protocol.
The companion app reads raw records from Health Connect and pushes them to this server. The server normalizes, deduplicates, and rolls them up into daily aggregates, then exposes them to LLM clients (Claude, Perplexity, OpenCode) through five MCP tools. Raw events are never handed to the model by default — only rolled-up summaries with explicit caveats so the model cannot silently fabricate missing data.
The server accepts health data from two Android apps via separate endpoints. Both write to the same database and use content-hash deduplication — sending the same data from both apps will not double-count.
| App | Endpoint | Format | Best for |
|---|---|---|---|
| life-dashboard-companion-app v1.4.0 | POST /ingest/health | source: "health_connect" required | Incremental sync, 200 records per type |
| HC Webhook | POST /ingest/hc-webhook | source optional, rmssd_millis HRV, extra types | Full sync, all types in one POST |
Both endpoints require:
The HC Webhook endpoint also accepts 5 additional Health Connect types not present in the companion app: skin_temperature, basal_metabolic_rate, vo2_max, intermenstrual_bleeding, body_water_mass. Unknown type keys are silently tolerated — only types in the server's registry are processed.
See docs/ANDROID.md for step-by-step instructions.
Add to Claude Desktop config (claude_desktop_config.json):
For Perplexity, OpenCode, or other MCP clients, use the same URL and token. The Authorization header must include the Bearer prefix — the server rejects requests without it.
| Tool | Description |
|---|---|
daily_summary | Daily health rollups: steps, distance, calories, sleep, HR, weight |
metric_series | Time series for any metric with day/week bucketing |
sleep_detail | Detailed sleep sessions with stages (deep, REM, light, awake) |
get_sync_health | Per-type sync status: last event, coverage, gaps, errors |
inspect_last_payload | Raw payload metadata and app diagnostics |
Each tool returns an object (never a bare array) with a caveats: string[] field that warns the model about missing days, overlapping records, or aggregation changes. Responses are capped at 400 objects.
/debug.data/.MIT — see LICENSE.
life-dashboard-companion-app v1.4.0