google-health-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | Yes | Your Google Cloud OAuth client ID | |
| GOOGLE_CLIENT_SECRET | Yes | Your Google Cloud OAuth client secret | |
| HEALTH_BASELINE_DAYS | No | Number of days used for baseline calculations. Default is 30. | 30 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_auth_statusA | Check whether the server holds valid Google Health credentials. Call this first if any other tool returns a not_authorized error. |
| health_data_typesA | List every readable data type, with the ones a Fitbit Air produces flagged. |
| health_profileA | Google Health profile, unit/timezone settings, and paired devices with sync state. |
| health_pointsA | Read raw data points for one data type over a date range (YYYY-MM-DD, inclusive). reconcile=True returns Google's merged cross-source stream (tracker + phone + manual entries deduplicated), which is almost always what you want. This is the low-level escape hatch. For daily questions prefer health_daily or health_daily_brief - a single day of heart-rate can be 1440 points. |
| health_dailyA | Daily aggregate for one data type over a date range (YYYY-MM-DD, inclusive). Uses civil-day rollups, so days align to your local calendar rather than UTC. |
| health_daily_briefA | One-call snapshot of a single day: sleep, resting HR, HRV, SpO2, breathing rate, skin temperature, steps and active zone minutes, each compared against your own trailing baseline. This is the right first call for "how am I doing today". Defaults to today. |
| health_trendA | Week-over-week trend for one metric: weekly means, direction, and the change from the first week to the most recent. Use this to answer "is my sleep actually getting worse" rather than reacting to a single bad night. |
| health_readinessA | Recovery readiness for a day: HRV, resting HR, breathing rate and SpO2 each scored against your personal baseline, plus rolling sleep debt, combined into a train / hold / rest call with the reasoning shown. Returns confidence and missing_inputs so you can tell a real signal from thin data. Informational only, not a medical assessment. |
| health_anomaliesA | Scan recent days for metrics that moved more than Surfaces the handful of days worth talking about instead of a wall of numbers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: auth check, data type listing, profile, daily multi-metric brief, weekly trend, readiness, anomaly scan, raw points, and daily aggregate. No overlap between tools; health_daily_brief and health_daily differ by scope (single day vs range) and metric count.
All tools follow a consistent health_ prefix with descriptive snake_case suffixes (auth_status, data_types, profile, daily_brief, trend, readiness, anomalies, points, daily). The pattern is uniform and predictable.
9 tools is a well-scoped number for a health data server. Each tool covers a distinct aspect of reading and analyzing health metrics without redundancy or bloat.
The tool surface covers authentication, data discovery, profile, daily snapshots, trends, readiness, anomalies, raw data, and daily aggregates. Minor gap: no direct way to get multiple metrics across a date range in one call, but this can be composed from existing tools.