Skip to content
Agentmart
Submit a tool

Google Health MCP

MCP server for the Google Health API, with a local SQLite cache and trend analysis.

Connector by partymola · GitHub account verified by the MCP Registry

IndexedGPL-3.0Local (stdio)★ 1
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/partymola-google-health-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for the Google Health API, with a local SQLite cache and trend analysis.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
23 read · 0 write · 0 delete · 1 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 24

Read from the source code; the running server may list different tools.

Read 23 · Look things up without changing anything.

  • health_get_activity
  • health_get_azm
  • health_get_breathing_rate
  • health_get_cardio_fitness
  • health_get_core_temperature
  • health_get_devices
  • health_get_ecg
  • health_get_exercise_route
  • health_get_exercises
  • health_get_food_log
  • health_get_heart_rate
  • health_get_height
Show 11 more tools
  • health_get_hrv
  • health_get_irregular_rhythm
  • health_get_lifetime_stats
  • health_get_profile
  • health_get_skin_temperature
  • health_get_sleep
  • health_get_sleep_sessions
  • health_get_spo2
  • health_get_weight
  • health_get_weight_readings
  • health_trends

Not yet classified 1 · We could not tell from the name and description.

  • health_sync

Network hosts it talks to 6

  • accounts.google.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • googleapis.com · found in code
  • health.googleapis.com · found in code
  • oauth2.googleapis.com · found in code

Files it touches

  • Your home directory (~)

Tools (24)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • health_get_activity

    Get daily activity summaries (steps, calories, active minutes, distance). Returns data from the local cache by default. Use live=True to fetch from the API. Run health_sync first to populate the cache. Note: live=True fetches one API call per day - avoid large ranges to stay within the 150 requests/hour rate limit. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per day with steps, calories, ac…

  • health_get_azm

    Get daily Active Zone Minutes (AZM), the headline cardio metric. AZM counts minutes spent in heart rate zones at or above Fat Burn intensity. `total_minutes` is the plain sum of the three zone columns as reported, not a weighted one. Returns from local cache by default, auto-syncing if stale. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per day with total_minutes plus per-zone breakdown (fat_…

  • health_get_breathing_rate

    Get nightly breathing rate (avg breaths per minute during sleep). Sourced during sleep tracking. Useful as an illness/recovery signal: sustained increases of 2-3 bpm above personal baseline can indicate incipient infection or strain. Returns from cache by default, auto-syncing if stale. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per night with breaths_per_min and data_source (the device and…

  • health_get_cardio_fitness

    Get Cardio Fitness Score (VO2 Max estimate). Estimated from resting HR, HR during walks and runs, and demographics. Updates roughly weekly. Returns from cache by default, auto-syncing if stale. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. A reading usually carries a range or a single value; one re-synced across the switchover between providers can hold both. They are different measurements - do not average the…

  • health_get_core_temperature

    Get manually-logged core (body) temperature readings (degrees Celsius). These are absolute body temperatures the user enters by hand - a thermometer reading logged in an app - and are the right source for fever / body-temperature questions. They are NOT the device-derived nightly skin-temperature variation from health_get_skin_temperature. A single day can hold several readings (each timestamped), useful for tracking a fever over time. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live…

  • health_get_devices

    List paired devices with battery level and last sync time. Live-only (no caching) - reflects current device state. Useful for monitoring tracker health, knowing which device produced data, and spotting sync gaps. Returns one entry per paired device with id, type, device_version, battery (e.g. "High"), battery_level (0-100), last_sync_time, mac, and features list.

  • health_get_ecg

    Get electrocardiogram (ECG) readings taken on the watch. Each reading is a single-lead trace the user started by hand, with a rhythm classification - NORMAL_SINUS_RHYTHM, ATRIAL_FIBRILLATION, or one of several inconclusive results (low or high heart rate, poor reading, unclassified). Use it for questions about heart rhythm or AFib checks; for resting rate over time use health_get_heart_rate instead. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from …

  • health_get_exercise_route

    Get the GPS route of one exercise, as the TCX file Google exports. Only exercises recorded with GPS have a route, and a sync fetches routes for the workouts in its own window. The TCX text carries every trackpoint (time, position, altitude, distance, heart rate) and can run to hundreds of kilobytes, so it is returned only when asked for. Args: log_id: The exercise's `log_id`, as health_get_exercises returns it. include_tcx: If true, include the TCX text itself. Returns the exercise's log_id, date and provider, and the TCX text when asked for.

  • health_get_exercises

    Get exercise log entries (individual tracked activities). Returns exercise sessions from the local cache by default. Use live=True to fetch from the API. Run health_sync first to populate the cache. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. exercise_type: Filter by activity name (case-insensitive substring match), e.g. "cycling", "walk", "run". Default: all types. A value matching no workout name the cache holds is refused, naming those, rather than answered…

  • health_get_food_log

    Get daily food and water log summary. Returns calories consumed and water intake (in mL) per day. Only populated where the user logs food or water by hand in a connected app. Returns from cache by default, auto-syncing if stale. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per day with calories_in and water_ml. Days with no logging are omitted.

  • health_get_heart_rate

    Get daily resting heart rate and heart rate zones. Returns resting HR and zone breakdown (Out of Range, Fat Burn, Cardio, Peak) from the local cache by default, auto-syncing if stale. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per day with resting_hr, zones array, calculation_method (Google's WITH_SLEEP or ONLY_WITH_AWAKE_DATA) and data_source (the device and platform Google says recorded i…

  • health_get_height

    Get height readings, in millimetres as Google reports them. Height is usually logged once, often years back, so the default window is the last ten years. Returns data from the local cache by default. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "Nd". Default: ten years back. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch height from the API before reading the cache. Returns one entry per reading with datetime, date, height_mm and provider.

  • health_get_hrv

    Get nightly HRV (heart rate variability) data. Returns data from the local cache by default. Use live=True to fetch from the API. Run health_sync first to populate the cache. HRV data is sparse: only nights with on-wrist sleep tracking produce readings. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per night with daily_rmssd and deep_rmssd (ms), entropy, non_rem_hr (non-REM heart rate, bpm) a…

  • health_get_irregular_rhythm

    Get irregular heart rhythm notifications raised by the watch. These are background checks the watch runs while the user is still - an alert means it saw a rhythm consistent with atrial fibrillation over one or more windows, not a diagnosis. Most accounts never have one. For a deliberate reading with a trace behind it, use health_get_ecg. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per notifi…

  • health_get_lifetime_stats

    Get all-time activity totals and personal best records. Totals for steps, floors, distance and calories over every day held in the cache, plus the best single day for steps, floors and distance with the date each record was set. The answer is bounded by what has been synced, so it is returned with a `coverage` block giving the first and last dates and the number of days counted - read it before quoting a total as all-time. There is no tracker-versus-total split and no "active score"; neither has a source.

Show 9 more tools
  • health_get_profile

    Get the account's profile, settings and irregular-rhythm enrolment. Each is the record Google returns, kept whole: the profile carries age, membership start and stride lengths, the settings carry units, time zone and locale, and the enrolment says whether irregular-rhythm notifications are on. Returns data from the local cache by default. Args: live: If true, re-fetch the records from the API before reading the cache. Returns `profile`, `settings` and `irn_profile`, and when each was fetched (UTC). A record is null when it has never been fetched, which includes one whose permission the …

  • health_get_skin_temperature

    Get nightly skin temperature variation (degrees Celsius from personal baseline). This is the device-derived RELATIVE deviation recorded during sleep, NOT an absolute body temperature - for fever / body-temperature readings use health_get_core_temperature instead. A baseline takes about three nights to establish before values appear. Useful as an illness/cycle/recovery signal. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading t…

  • health_get_sleep

    Get nightly sleep data (duration, stages, efficiency). Returns sleep data from the local cache by default. Use live=True to fetch from the API. Run health_sync first to populate the cache. Sleep data is sparse: only nights with watch-tracked sleep are present. Travel, off-wrist nights, or manual logs may be missing. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per night with total_minutes, e…

  • health_get_sleep_sessions

    Get each sleep session as Google recorded it, rather than the nightly total. A night can be several sessions (a wake-and-resume, a nap); health_get_sleep sums them per night, while this returns each one whole: its interval, type (CLASSIC or STAGES), Google's metadata (mainSleep, nap, processed, manuallyEdited, stagesStatus), its summary (minutesAsleep, minutesAwake, minutesInSleepPeriod, minutesToFallAsleep, minutesAfterWakeUp, and the per-stage minutes and counts), and the device that recorded it. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. …

  • health_get_spo2

    Get nightly SpO2 (blood oxygen saturation) data. Returns data from the local cache by default. Run health_sync first to populate it. SpO2 data is sparse: only nights with on-wrist sleep tracking produce readings. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per night: avg SpO2 percentage and up to two pairs of bounds. avg_ci_low/avg_ci_high come from this API, which Google describes as the l…

  • health_get_weight

    Get weight log entries (weight, BMI, body fat percentage). Returns data from the local cache by default. Use live=True to fetch from the API. Run health_sync first to populate the cache. Weight data is sparse: only days with weigh-in entries are present. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns one entry per day with weight_kg, bmi, fat_pct. Every individual weigh-in is in health_get_weight_readin…

  • health_get_weight_readings

    Get every weigh-in and body-fat reading, as Google recorded each one. health_get_weight keeps one row a day; this returns every reading: its value in Google's own unit (weightGrams, percentage), when it was taken, and the device or app that recorded it. Args: start_date: Start date as "YYYY-MM-DD", "YYYY-MM", or "30d". Default: last 30 days. end_date: End date as "YYYY-MM-DD". Default: today. live: If true, re-fetch this window from the API before reading the cache. Returns weight_readings and body_fat_readings, each entry with reading_id, datetime (local), date, provider and re…

  • health_sync

    Sync health data to the local cache. Fetches data from the Google Health API and stores it in SQLite for fast offline queries. Run this before using other health_get_* tools. Syncs incrementally: only fetches data newer than the most recent entry in each table. First sync fetches the specified number of days. Args: data_types: What to sync. Options: "all", "heart_rate", "activity", "exercises", "sleep", "weight", "spo2", "hrv", "azm", "breathing_rate", "skin_temperature", "core_temperature", "cardio_fitness", "food_log", "ecg", "irn", "account", "height", …

  • health_trends

    Analyse trends in cached health data. Computes averages and totals over time from the local cache, auto-syncing if stale. Args: data_type: What to analyse. Options: "heart_rate", "activity", "exercises", "sleep", "weight", "spo2", "hrv", "azm", "breathing_rate", "skin_temperature", "core_temperature", "cardio_fitness", "food_log". Default: "activity". period: Aggregation period. Options: "weekly", "monthly", "quarterly". Default: "monthly". start_date: Start date as "YYYY-MM-DD" or "365d". Default: last 12 months. end_date: End date as "YYYY-MM…

Signals

Stars
1
Forks
1
Open issues
0
Weekly downloads
211
Last commit
Oct 20, 2026 (8 days ago)
Last release
Oct 20, 2026 (8 days ago)
Last package publish
Oct 20, 2026 (8 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.partymola/google-health-mcp
Version
1.9.0
Auth
No auth
Packages
pypi google-health-mcp
License
GPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from partymola

Cite this page

Google Health MCP. Agent Mart. https://agentmart.dev/connectors/partymola-google-health-mcp (last updated 2026-10-24)