{"name":"io.github.BerkKilicoglu/google-health-fitbit-mcp","slug":"berkkilicoglu-google-health-fitbit-mcp","title":null,"description":"Privacy-first Google Health API MCP server for health, sleep, activity and HR agents","url":"https://mcp.market/server/berkkilicoglu-google-health-fitbit-mcp","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":16,"forks":2,"downloads_week":99,"last_push_at":"2026-08-04T09:03:11.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/BerkKilicoglu/google-health-fitbit-mcp","website":"https://github.com/BerkKilicoglu/google-health-fitbit-mcp#readme","version":"1.0.2","remotes":[],"packages":[{"registryType":"npm","identifier":"google-health-fitbit-mcp","version":"1.0.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Google Cloud OAuth client ID for Google Health API. Optional when configured with google-health-fitbit-mcp-server setup.","format":"string","name":"GOOGLE_HEALTH_CLIENT_ID"},{"description":"Google Cloud OAuth client secret. Prefer google-health-fitbit-mcp-server setup so this secret is stored in ~/.google-health-mcp/config.json instead of MCP client config.","format":"string","isSecret":true,"name":"GOOGLE_HEALTH_CLIENT_SECRET"},{"description":"Redirect URI configured in the Google Cloud OAuth client. Optional when configured with google-health-fitbit-mcp-server setup.","format":"string","name":"GOOGLE_HEALTH_REDIRECT_URI"},{"description":"Optional local path for OAuth tokens. Defaults to ~/.google-health-mcp/tokens.json.","format":"string","name":"GOOGLE_HEALTH_TOKEN_PATH"},{"description":"Optional payload mode: summary, structured, or raw. Defaults to structured. raw means full Google Health API payloads, not continuous 24/7 raw sensor telemetry.","format":"string","name":"GOOGLE_HEALTH_PRIVACY_MODE"},{"description":"Optional SQLite cache toggle. Set to true or sqlite to enable.","format":"string","name":"GOOGLE_HEALTH_CACHE"},{"description":"Optional local SQLite cache path. Defaults to ~/.google-health-mcp/cache.sqlite.","format":"string","name":"GOOGLE_HEALTH_CACHE_PATH"},{"description":"Set to true to bypass the in-memory HTTP response cache (60s TTL for GET only). POST/PUT/DELETE and 4xx/5xx responses are never cached regardless.","format":"string","name":"GOOGLE_HEALTH_NO_CACHE"}]}],"tools":[{"name":"google_health_agent_manifest","description":"Machine-readable install, runtime and client guidance for AI agents. Does not call Google Health or expose secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_cache_status","description":"Show optional local SQLite cache status. Enable with GOOGLE_HEALTH_CACHE=sqlite or GOOGLE_HEALTH_CACHE=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_capabilities","description":"Explain supported Google Health data, privacy boundaries, beta status and recommended agent workflow.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_connection_status","description":"Check local Google Health config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Google APIs or exposing secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_daily_rollup","description":"Aggregate a data type over civil days using Google Health dailyRollUp. Useful for steps, distance, calories, active minutes, weight and heart summaries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_daily_summary","description":"Build a practical daily summary from Google Health rollups and reconciled streams when available. Read-only, beta, non-medical.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_data_inventory","description":"Inventory supported Google Health data types, auth scopes, privacy modes and recommended first calls without calling Google APIs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_data_type_coverage","description":"Build a data-type coverage plan from the official Google Health API data-type table, or run explicit live read-only checks against a real OAuth account. Live mode returns only redacted status and point-count buckets, never raw health payloads.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_demo","description":"Returns realistic Pixel-Watch-style example payloads of google_health_daily_summary, google_health_wellness_context, and google_health_daily_rollup so agents see the contract before calling real Google Health APIs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_exchange_code","description":"Exchange a Google OAuth authorization code for local tokens. Tokens are stored locally with 0600 permissions and are never returned. Gated: requires explicit user intent — agents must not call this autonomously.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_auth_url","description":"Generate a Google OAuth authorization URL for Google Health API. Use this first when no local token exists.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_data_point","description":"Fetch one data point by id — e.g. a specific sleep session, exercise or weight entry found via list/reconcile. Accepts the bare id or the full resource name from a previous response. Only data types whose official_operations include 'get' support this (see google_health_list_data_types).","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_identity","description":"Get the Google Health identity mapping for the authenticated user. Useful for Fitbit-to-Google migrations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_irn_profile","description":"Get the user's irregular rhythm notification (IRN) engagement status — whether the AFib detection feature is enabled on their Fitbit/Pixel Watch. Requires the googlehealth.irn.readonly scope (setup --scope-preset heart). Read-only, non-diagnostic.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_profile","description":"Get authenticated user profile details from Google Health. Requires profile scope.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_get_settings","description":"Get authenticated user settings such as units and timezone. Requires settings scope.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_list_data_points","description":"Query detailed data points for a Google Health data type. Use kebab-case endpoint data types, e.g. steps, sleep, heart-rate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_list_data_types","description":"List the canonical kebab-case data_type slugs accepted by the data point, reconcile and rollup tools, with each slug's unit, OAuth scope family, and which endpoint verbs (list/reconcile/rollup) support it. Call this before list_data_points, reconcile_data_points, daily_rollup or rollup to choose a valid data_type instead of guessing a slug. Static metadata; does not call Google APIs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_list_paired_devices","description":"List the Fitbit trackers, Pixel Watches and other devices paired to the authenticated Google Health account. Useful to answer 'is my watch syncing?' and to see which device produces which data. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_onboarding","description":"Return the 11-question onboarding flow plus the current profile state and missing fields. Read-only — does NOT persist anything. Pair with google_health_profile_update once the user answers. Cross-connector: the same profile is shared by every Wellness MCP (whoop, garmin, oura, fitbit, strava, polar, withings, apple-health, samsung-health, google-health, nourish, cycle-coach, cgm, air).","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_privacy_audit","description":"Return local privacy, cache, token-path and env-presence posture without revealing secret values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_profile_get","description":"Read the shared Wellness profile from ~/.delx-wellness/profile.json. Returns preferred name, goals, devices, training/nutrition/exercise/agent preferences and safety flags. NEVER contains OAuth tokens or API secrets. Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_profile_update","description":"Persist a partial patch to ~/.delx-wellness/profile.json. Requires explicit_user_intent=true (otherwise returns USER_ACTION_REQUIRED). Rejects secret-like fields (oauth, token, secret, password, cookie, refresh, api_key, session) at write time. Use to record preferred name, goals, devices, training context, nutrition context, exercise preferences, agent preferences, and safety flags.","write_action":true,"price_micros":0,"input_schema":null},{"name":"google_health_quickstart","description":"Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Google Health?'","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_reconcile_data_points","description":"Read a reconciled stream for one data type across sources. Supports all-sources, google-wearables and google-sources data source families.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_revoke_access","description":"Revoke the current Google OAuth grant and delete the local token file. Use only when the user explicitly wants to disconnect Google Health. Gated: requires explicit user intent — agents must not call this autonomously.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_rollup","description":"Aggregate a data type over physical time intervals using Google Health rollUp.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_weekly_summary","description":"Build a weekly Google Health scorecard with activity, sleep, heart context and missing-data awareness. Read-only, beta, non-medical.","write_action":false,"price_micros":0,"input_schema":null},{"name":"google_health_wellness_context","description":"Normalize Google Health activity/sleep context into the shared wellness_context shape for recommendation engines.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-25T21:43:46.905Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T21:43:46.849Z","components":{"code":{"score":25,"max":25,"notes":["75 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 53 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"google-health-fitbit-mcp","version":"1.0.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-07-07T21:55:11.682Z","repositoryUrl":"git+https://github.com/BerkKilicoglu/google-health-fitbit-mcp.git","weeklyDownloads":99}],"repo":{"found":true,"owner":"BerkKilicoglu","repo":"google-health-fitbit-mcp","archived":false,"pushedAt":"2026-08-04T09:03:11Z","stars":16,"forks":2,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/80926426?v=4","ownerCreatedAt":"2021-03-18T22:03:53Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/80926426?v=4&s=128","source":"github"},"presence":{"stars":16,"forks":2,"downloadsWeek":99,"license":"MIT","lastPushAt":"2026-08-04T09:03:11.000Z","score":35}}}},"grade_history":[],"reviews":[]}