Skip to main content
Glama
mcp-google-health

mcp-google-health

by amitray007

mcp-google-health

An MCP server for the Google Health API. It gives an AI agent your Fitbit, Fitbit Air, and Pixel Watch data, plus anything else that syncs to Google Health.

It covers the whole user-facing API: all 47 data types, including the v4beta skin temperature type and the daily personal ranges. It also reads paired devices, exports exercise TCX with GPS, reads and updates the profile and settings, and writes, edits, and deletes data points. Responses are the API's raw JSON. The server does not summarize or redact them.

This project is not affiliated with Google or Fitbit. It is not a medical device.

Set up Google Cloud

  1. In a Google Cloud project, enable the Google Health API.

  2. Configure the OAuth consent screen. Add the Google Health scopes you plan to use. Add your account as a test user, or publish the app. A Testing app's refresh tokens expire after 7 days.

  3. Create an OAuth client of type Desktop app and download its JSON file.

Related MCP server: google-health-mcp

Sign in

npx -y mcp-google-health auth --client-secrets ~/Downloads/client_secret.json

The command opens Google's consent page and listens for the reply on a 127.0.0.1 port. It saves a refresh token to ~/.config/mcp-google-health/credentials.json with mode 0600.

  • --write also requests every write scope.

  • --scope <scope> adds a scope, such as mindfulness.readonly. You can repeat it.

  • --port <port> fixes the loopback port.

  • --credentials <file> saves the credentials to another path.

By default the command requests the nine read scopes: activity and fitness, ECG, health metrics, irregular rhythm notifications, exercise location, nutrition, profile, settings, and sleep.

Add it to an MCP client

claude mcp add google-health -- npx -y mcp-google-health

Other clients run npx -y mcp-google-health as a stdio server.

Variable

Use

GOOGLE_HEALTH_CREDENTIALS

Path of the credentials file.

GOOGLE_APPLICATION_CREDENTIALS

Used when GOOGLE_HEALTH_CREDENTIALS is unset. Any Google authorized_user file with Google Health scopes works.

Tools

Tool

API method

list_data_types

Local catalog: kind, scope, operations, v4beta

describe_schema

Local discovery schema for a data type or resource

get_identity, get_profile, get_settings, get_irn_profile

users.get*

update_profile, update_settings

users.update*

list_paired_devices, get_paired_device

users.pairedDevices

list_data_points, get_data_point

dataPoints.list, dataPoints.get

reconcile_data_points

dataPoints.reconcile

roll_up_data_points, daily_roll_up_data_points

dataPoints.rollUp, dataPoints.dailyRollUp

export_exercise_tcx

dataPoints.exportExerciseTcx

create_data_point, update_data_point, delete_data_points

dataPoints.create, patch, batchDelete

Each tool carries read-only or destructive hints, so a client can ask before it writes.

The server leaves out two parts of the API. Webhook subscribers need a public HTTPS endpoint and project-level credentials. SMART Health Links serve shared records, not your account.

Development

mise install
pnpm install
pnpm check              # format, lint, types, tests, Knip
pnpm update-discovery   # refresh src/discovery.json from Google

Release: set the version in package.json, then push a matching tag such as v0.1.0. The Publish workflow runs the checks and publishes to npm with provenance.

Available Tools

19 tools
create_data_pointB

Write a new data point, such as a weight, body fat, height, sleep, exercise, hydration or nutrition log, mood, symptom, menstrual period, or ovulation test. Needs the matching write scope.

Inputs: dataType (required), dataPoint (required), apiVersion.

daily_roll_up_data_pointsA
Read-only

Aggregate a data type into civil-day windows in the user's time zone, such as daily steps or calories. endDate is exclusive. At most 14 days for heart-rate, active-minutes, total-calories, and calories-in-heart-rate-zone, 90 days otherwise.

Inputs: endDate (required), dataType (required), startDate (required), pageSize, +4 more.

delete_data_pointsA
Destructive

Delete up to 10000 data points of one data type that this client wrote.

Inputs: dataType (required), dataPointIds (required), apiVersion.

describe_schemaA
Read-only

Show the JSON schema of a data type payload (such as weight or sleep) or an API schema (such as Profile, Settings, PairedDevice, DataPoint).

Inputs: name (required).

export_exercise_tcxA
Read-only

Export one exercise as TCX with GPS track, heart rate, and laps. Needs the location scope. Give outputPath to save the file instead of returning the TCX text.

Inputs: exerciseId (required), outputPath, partialData.

get_data_pointB
Read-only

Get one identifiable data point, such as an exercise, sleep session, weight, or log entry.

Inputs: dataType (required), dataPointId (required), apiVersion.

get_identityA
Read-only

Get the user's Google Health identity and numeric health user ID.

Inputs: no named parameters.

get_irn_profileB
Read-only

Get the user's irregular rhythm notification (IRN) enrollment profile.

Inputs: no named parameters.

get_paired_deviceC
Read-only

Get one paired device.

Inputs: deviceId (required).

get_profileB
Read-only

Get the user's health profile: age, stride lengths, membership start.

Inputs: no named parameters.

get_settingsB
Read-only

Get the user's settings, such as units and time zone.

Inputs: no named parameters.

list_data_pointsA
Read-only

List raw data points of one data type, newest first. Filter with AIP-160 on the type's time field, for example steps.interval.civil_start_time >= "2026-11-01", weight.sample_time.physical_time >= "2026-11-01T00:00:00Z", daily_resting_heart_rate.date >= "2026-11-01", or sleep.interval.civil_end_time >= "2026-11-01". Use snake case in filters.

Inputs: dataType (required), filter, pageSize, pageToken, +2 more.

list_data_typesA
Read-only

List every Google Health data type with its kind, scope family, supported operations, and whether it needs v4beta.

Inputs: no named parameters.

list_paired_devicesB
Read-only

List the user's paired devices with battery level, battery status, firmware version, features, and last sync time.

Inputs: pageSize, pageToken.

reconcile_data_pointsA
Read-only

List data points merged across sources into one de-duplicated stream, as the Google Health app shows them. Takes the same filters as list_data_points. Use this for sleep across sources.

Inputs: dataType (required), filter, pageSize, pageToken, +2 more.

roll_up_data_pointsA
Read-only

Aggregate a data type into fixed physical-time windows, such as hourly steps or 5-minute heart rate. Range is closed-open; at most 14 days for heart-rate, active-minutes, total-calories, and calories-in-heart-rate-zone, 90 days otherwise.

Inputs: endTime (required), dataType (required), startTime (required), windowSize (required), +4 more.

update_data_pointB

Replace a data point that this client wrote.

Inputs: dataType (required), dataPoint (required), dataPointId (required), apiVersion.

update_profileC

Update profile fields. Name each changed field in updateMask.

Inputs: profile (required), updateMask (required).

update_settingsC

Update settings fields. Name each changed field in updateMask.

Inputs: settings (required), updateMask (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 19 tools

    Disambiguation4/5

    Most tools target a clearly distinct resource+action (identity, profile, settings, paired devices, data points), and the four data-point readers (list, reconcile, roll_up, daily_roll_up) are separated by explicit description cues about raw vs. merged vs. aggregated. The main residual ambiguity is between list_data_points, reconcile_data_points, and the two roll-up tools, which an agent could still misselect when it just wants 'steps over time'.

    Naming Consistency4/5

    Almost everything follows a predictable snake_case verb_noun pattern (list_data_types, get_profile, update_settings, create_data_point, delete_data_points). Minor deviations: daily_roll_up_data_points is adjective-first rather than verb-first, and describe_schema breaks the verb_noun family used elsewhere.

    Tool Count4/5

    19 tools is on the heavy side but each maps to a real capability of a broad health API: metadata, identity, profile/settings, devices, raw and aggregated data reads, writes, deletion, and TCX export. No tool appears redundant enough to drop without losing a distinct operation.

    Completeness4/5

    Full lifecycle coverage for data points (create, get, list, update, delete) plus aggregation, cross-source reconciliation, and export, with read/update parity on profile and settings. Gaps: paired devices are read-only, IRN enrollment can only be read (no enroll/update), and there is no batch/multi-type create path, though these are minor workarounds for an agent.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Gives Claude read access to wearable health data from Fitbit or Wear OS devices via the Google Health API, exposing tools for metrics like steps, heart rate, sleep, and workouts, plus a computed recovery score.
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to securely read and analyze your Google Health data from Fitbit, Pixel Watch, and Health Connect, providing baseline-aware insights, readiness scores, trends, and anomalies while keeping data local and read-only.
      9
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables Claude to read, write, and delete Google Health (Fitbit successor) metrics such as activity, sleep, heart rate, weight, and nutrition, plus log meals with photo-based nutrition estimation.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables Claude and other MCP clients to query your Fitbit/Pixel Watch health data via the Google Health API, including sleep, heart rate, activity, workouts, and trends with read-only access.
      9 npm
      MIT