mcpField
G
google-health-mcp

google-health-mcp

本地服务
wellness.delx.ai健康医疗755 天前更新

关于 google-health-mcp

google-health-mcp 是面向 AI Agent 的本地优先 MCP 服务,可通过 OAuth 查询用户授权的 Google Health API v4 数据,包括 Fitbit 和 Pixel Watch。令牌保留在本机,并提供结构化隐私过滤及摘要和连接检查工具。

主要功能

  1. 01本机存储 OAuth 令牌
  2. 02结构化模式过滤身份与位置数据
  3. 03查询每日和每周摘要
  4. 04检查连接、数据域及授权范围
  5. 05支持 stdio 和本地 HTTP 传输

适用场景

  1. 01查看每日及每周健康摘要
  2. 02核对已授权的数据域和范围
  3. 03审查本地存储及将发送的数据

MCP 相关

通过每日、每周摘要等工具向 MCP 客户端提供 Google Health 数据及相关检查。默认使用 stdio,也可选择仅绑定本地回环地址的无状态 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"davidmosiah-google-health": {
"command": "npx",
"args": [
"-y",
"google-health-mcp-unofficial"
],
"env": {
"GOOGLE_HEALTH_CLIENT_ID": "<GOOGLE_HEALTH_CLIENT_ID>",
"GOOGLE_HEALTH_CLIENT_SECRET": "<GOOGLE_HEALTH_CLIENT_SECRET>",
"GOOGLE_HEALTH_REDIRECT_URI": "<GOOGLE_HEALTH_REDIRECT_URI>",
"GOOGLE_HEALTH_TOKEN_PATH": "<GOOGLE_HEALTH_TOKEN_PATH>",
"GOOGLE_HEALTH_PRIVACY_MODE": "<GOOGLE_HEALTH_PRIVACY_MODE>",
"GOOGLE_HEALTH_CACHE": "<GOOGLE_HEALTH_CACHE>",
"GOOGLE_HEALTH_CACHE_PATH": "<GOOGLE_HEALTH_CACHE_PATH>",
"GOOGLE_HEALTH_NO_CACHE": "<GOOGLE_HEALTH_NO_CACHE>"
}
}
}
}
启动命令npx -y google-health-mcp-unofficial
需要配置的环境变量
GOOGLE_HEALTH_CLIENT_IDGoogle Cloud OAuth client ID for Google Health API. Optional when configured with google-health-mcp-server setup.
GOOGLE_HEALTH_CLIENT_SECRET密钥Google Cloud OAuth client secret. Prefer google-health-mcp-server setup so this secret is stored in ~/.google-health-mcp/config.json instead of MCP client config.
GOOGLE_HEALTH_REDIRECT_URIRedirect URI configured in the Google Cloud OAuth client. Optional when configured with google-health-mcp-server setup.
GOOGLE_HEALTH_TOKEN_PATH密钥Optional local path for OAuth tokens. Defaults to ~/.google-health-mcp/tokens.json.
GOOGLE_HEALTH_PRIVACY_MODEOptional payload mode: summary, structured, or raw. Defaults to structured. raw means full Google Health API payloads, not continuous 24/7 raw sensor telemetry.
GOOGLE_HEALTH_CACHEOptional SQLite cache toggle. Set to true or sqlite to enable.
GOOGLE_HEALTH_CACHE_PATHOptional local SQLite cache path. Defaults to ~/.google-health-mcp/cache.sqlite.
GOOGLE_HEALTH_NO_CACHESet 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.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmgoogle-health-mcp-unofficial0.5.2

工具

26

收录的工具列表 · 更新于 2 周前

参数类型必填说明
response_formatenum否markdown | json

详细介绍

Google Health MCP

Google Health MCP — 面向 AI Agent 的 Google Health MCP
通过 OAuth 在本地读取用户授权的 Google Health API v4 数据 — Fitbit、Pixel Watch 和合作伙伴的数据。Beta。
本地优先的 MCP 服务 — 令牌绝不会离开你的设备。

npm 版本 GitHub 版本发布 npm 下载量 CI MIT 许可证 网站

GitHub 星标数 为 MCP 构建 已验证的版本索引 Hermes 一键设置 Google Health

⚡ 使用 Delx Wellness for Hermes 一键安装: npx -y delx-wellness-hermes setup — 在专用的 Hermes 配置文件中预配置此连接器及另外 8 个连接器。

也可以将其独立接入 Claude Desktop / Cursor / ChatGPT Desktop — 请参阅下方的安装部分。

0.7.3 版新功能(2026-08-03): 无头 OAuth(auth --manual),适用于 SSH / 容器 / WSL · 外部测试人员发现并修复了真实账户的汇总 / 筛选问题 · 可选择启用用于 ECG/IRN 的 clinical 范围 · 固定版本信息存放在 Hermes/living-body 中。 完整说明见 CHANGELOG.md。

最高杠杆的贡献方式——真实账户覆盖报告

如果你有 Fitbit、Pixel Watch、Android 健康数据或 Google Health API v4 访问权限,最有帮助的是提交一份脱敏覆盖报告:

npx -y google-health-mcp-unofficial coverage --live --json

检查输出,移除任何不想公开的内容,然后将报告发布到 issue #2(或新建一个 issue)。 #21 上的定时验证循环已完成 1/2——参见 docs/proof-loop-status.md。 该命令为只读,并且设计为省略 OAuth 密钥、本地路径和原始健康测量值。OAuth 之前可使用静态预检 coverage --json。

其他参与方式(无需账户)
操作链接
如果项目值得支持,请点星stargazers
文档 GFI——无头身份验证指南#22
与其他可穿戴设备组合使用delx-living-body
一键 Hermes 套件delx-wellness-hermes
完整注册表delx-wellness

HTTP(v2 无状态)

默认使用 stdio。可选的 Streamable HTTP——无会话 ID、JSON 响应,仅限环回地址:

npx -y google-health-mcp-unofficial --http
# GET  http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp   (sessionless)

环境变量:GOOGLE_HEALTH_MCP_HOST、GOOGLE_HEALTH_MCP_PORT、GOOGLE_HEALTH_MCP_TRANSPORT=http。

Google Health MCP

本地优先的 MCP 服务,通过 OAuth 为你的 AI Agent 提供用户授权的 Google Health API v4 数据——包括 Fitbit、Pixel Watch 和合作伙伴的数据。

  • 安装一个连接器——npx -y google-health-mcp-unofficial setup
  • 在 Claude · Cursor · ChatGPT · Hermes · OpenClaw 中运行——参见客户端示例。
  • 本地优先——你的令牌绝不会离开你的设备(隐私)。
  • 应该使用哪个连接器?——参见入门指南。

**Beta 状态:**Google Health API v4 已向开发者开放,但仍在持续演进。Google 的发行说明显示,发布后权限范围和数据类型仍在变化,因此此连接器仍处于早期 Beta 阶段,并引导测试者在公开投入生产使用前采用安全的只读验证方式。

**非官方项目。**与 Google、Fitbit 或 Alphabet 无关,也未获其认可或支持。不是医疗器械,也不提供医疗建议。

项目缘起

Google Health API 是 Fitbit Web API 的后继者:采用新的 OAuth、新的基础 URL、v4 端点架构、标准化数据类型、协调后的数据流和汇总数据。

此 MCP 让 Agent 能够轻松发现 API、检查设置、本地进行身份验证并查询数据,而无需将令牌粘贴到提示词或 Agent 配置中。

60 秒快速上手

创建 Google Cloud OAuth 客户端,启用 Google Health API,并添加重定向地址 http://127.0.0.1:3000/callback。然后:

npx -y google-health-mcp-unofficial setup --scope-preset full   # writes local config
npx -y google-health-mcp-unofficial auth                        # OAuth, tokens saved locally
npx -y google-health-mcp-unofficial doctor                      # verifies you're ready

身份验证后,doctor --live 会调用安全的 Google Health 身份、个人资料和设置端点,以验证 API 可访问——这是此 Beta 版本的连接验证。但这不能证明 Claude Desktop 能调用工具:Desktop 会将 outputSchema 验证为 JSON Schema 2020-12。请使用 [email protected]+(参见 #23)。完整安装详情(权限范围预设、MFA、恢复流程)见下方的安装部分。

与你的 Agent 试用

根据此连接器实际提供的工具,先询问以下三件事:

Use google_health_connection_status to check setup, then run
google_health_data_inventory. Tell me which Google Health domains
and scopes I have authorized.
Call google_health_daily_summary for today, then google_health_weekly_summary.
Separate observed data from suggestions and stay non-medical.
Run google_health_privacy_audit, then summarize exactly what is stored
locally and what would be sent to Google on the next call.

工具

从这里开始:

  • google_health_connection_status — 本地配置、令牌、权限范围和客户端就绪情况
  • google_health_data_inventory — 支持的领域、权限范围、数据类型命名和 Agent 流程
  • google_health_data_type_coverage — 静态覆盖计划,或针对 issue #21 的显式只读实时验证
  • google_health_daily_summary — 根据汇总数据和对账后的数据流生成的每日 Beta 摘要
  • google_health_weekly_summary — 每周 Beta 回顾
  • google_health_privacy_audit — 本地存储的内容,以及发送给 Google 的内容

完整的工具目录——Google Health API 方法、Agent 清单、诊断信息和数据类型命名说明(kebab-case 端点、snake_case 筛选条件、来源类别)——见 docs/tools.md。

隐私与离线运行内容

  • OAuth 令牌以 0600 权限存储在本地的 ~/.google-health-mcp/tokens.json 中。

  • 密钥可以存放在 ~/.google-health-mcp/config.json 中,也可以通过 GOOGLE_HEALTH_* 环境变量提供。

  • 工具绝不会返回访问令牌、刷新令牌或客户端密钥。

  • GOOGLE_HEALTH_PRIVACY_MODE=structured 是默认模式;raw 模式需显式启用,且仅应在调试或深入分析时使用。除非通过 explicit_user_intent=true,否则会拒绝 Agent 提出的 privacy_mode=raw 请求;自行设置 GOOGLE_HEALTH_PRIVACY_MODE=raw 则由你自行决定,无需逐次调用时确认意图。

  • 结构化模式会保留完整的上游生理字段和未来添加的 v4 字段,同时移除身份、位置和包含机密的值。

  • “位置脱敏”指的是一份具体的键名清单,而非一句口号。始终丢弃包含坐标的叶子键;匹配时忽略大小写以及 _ 和 -,因此 latitude_e7 和 latitudeE7 视为同一个键:

    startLatitude、startLongitude、start_latlng、endLatitude、endLongitude、end_latlng、latitude、longitude、lat、lon、lng、latlng、coordinates、coordinate、gps、gpx、geoPolylineDTO、map、polyline、summary_polyline、activities-tracker-gps、latitudeE7、longitudeE7、latE7、lngE7、lonE7、startLatitudeE7、startLongitudeE7、endLatitudeE7、endLongitudeE7、lat_deg、lng_deg、lon_deg、latitudeDegrees、longitudeDegrees

    位置容器键会作为整个对象被丢弃——只要其中包含地点记录(对象,或包含对象的数组),其 address/city/placeId 同级字段以及本清单未预料到的任何坐标写法也会一并丢弃。只包含标量值的容器属于标签,会予以保留:location: ["gym", "home"] 会保留,location: { latitudeE7: … } 则不会。

    location、locations、geoLocation、geoLocations、geo、geoJson、route、routes、position、positions、waypoint、waypoints、trackPoint、trackPoints、placeVisit

    google_health_privacy_audit 会通过 gps_redacted_keys 和 gps_redacted_container_keys 返回这两份实时清单;gps_redaction_default 则会在调用时,将合成记录分别送入两种非 raw 模式,并按键名和坐标值扫描输出后得出,并非硬编码为 true。如果这两个区块与代码不再一致,npm run test:redaction-docs 会导致构建失败,从而避免发布的承诺再次偏离实际执行的清单。Google Health API v4 目前未记录位置/路线数据类型,因此这是一项前向兼容的保护措施,而非针对已观察到的数据泄露所做的修补。

  • 明确说明这项承诺的限制,而非含糊带过。以下每一行都有行为测试作为依据(npm run test:declared-limits);如果行为发生变化,测试就会失败。标记为 NOT VERIFIED 的内容没有测试支持,因此会明确标注,而非让人将其误读为保证。此处写明的限制如果没有对应测试,构建就会失败:

    • default_mode_is_structured — 未提供 privacy_mode 参数且未设置 GOOGLE_HEALTH_PRIVACY_MODE 时,每次读取都会以 structured 模式运行。
    • raw_requires_explicit_user_intent — Agent 请求 privacy_mode=raw 时,除非同时传入 explicit_user_intent=true,否则会被拒绝,并返回 USER_ACTION_REQUIRED。
    • local_raw_default_needs_no_per_call_intent — 在你自己的配置或环境中设置 GOOGLE_HEALTH_PRIVACY_MODE=raw 后,每次调用都会遵循此设置,无需逐次传入意图;此限制针对的是 Agent 提升权限,而非机器所有者。
    • raw_is_an_unfiltered_passthrough — raw 会原样返回上游载荷;脱敏是 structured 和 summary 的特性,raw 不会脱敏。
    • structured_drops_identity_and_secret_keys — 在 structured 模式下,各层级中的令牌、authorization、电子邮件、姓名和头像都会被移除,而生理数据和来源信息会保留。
    • summary_is_never_less_restrictive_than_structured — summary 会先移除数据,再生成摘要,因此 structured 移除的内容不会在 summary 中重新出现。
    • summary_flattens_numeric_leaves_to_depth_2 — summary 会将数据类型载荷中深度不超过 2 的数值叶节点提升至 value;更深的内容完全不会报告。
    • summary_promotes_unlisted_coordinate_keys — 上述列表以外的坐标键会被 summary 提升,而非隐藏。边界由键列表决定,而不是由模式决定。
    • altitude_and_elevation_are_not_location — altitude 是官方 v4 数据类型(activity_and_fitness),会在脱敏后保留,elevation 也是如此;仅有海拔高度不会泄露用户位置。
    • altitude_inside_a_place_container_is_dropped — 同一海拔数据若位于已脱敏的位置容器中,也会随容器一并移除。
    • location_guard_never_observed_upstream — 未验证:Google Health API v4 未记载位置或路线数据类型,因此这里的测试从未见过携带坐标的真实 Google 载荷。键列表是依据 Google 自身的编码方式构建的前向兼容防护,并非针对已观察到的数据泄露而验证的修复措施。
  • 每日汇总使用经过验证的民用 YYYY-MM-DD 日期范围;常规汇总保留精确的、带时区的 ISO 日期时间。无效或倒置的日期范围会在发起 HTTP 请求前报错。

  • 摘要和每日汇总中的 "today" 会按照 timezone 参数解析;若未提供该参数,则使用健康档案中的时区;若也未设置,则使用 UTC。无效的 IANA 时区会被拒绝。

  • support --redacted 会为 GitHub 问题打印一份可复制粘贴的支持信息包,不包含令牌、密钥、本地路径或健康测量数据。

  • support --feedback --json 会为 Beta 测试人员和 MCP 客户端报告打印一份匿名的设置反馈信息包。

  • coverage --live --json 只会打印经过脱敏的数据类型状态和数据点数量区间;绝不会包含原始 Google Health 载荷。

授权模型与信任边界

Google OAuth 控制此连接器可以访问哪个 Google 账号以及哪些健康数据范围。它不会为单个 MCP 调用方或工具授权。预期的部署方式是由一位本地用户运行一个受信任的 MCP 主机;能够访问同一进程的调用方会共享该工具目录和本地 OAuth 授权。

目前没有按用户、Agent、API 密钥或工具划分的 RBAC 层。可选的 HTTP 传输默认绑定到 127.0.0.1;若要公开暴露,则必须采用符合标准的 MCP 身份验证、为每位用户隔离 Google 凭据,并制定明确的授权策略。详见完整的授权模型。

查看完整的 Agent 演示 →

想看看 Agent 如何实际使用此连接器,并结合技术栈的其余部分进行推理?这个可复现的共享演示将回答核心问题:“我今天应该进行高强度训练吗?”

npx -y delx-living-body demo

delx-living-body 会将其在本地检测到的连接器与基于规则的(离线)综合分析相结合,以就绪度为先,且不提供医疗建议。对于此连接器,运行 npx -y google-health-mcp-unofficial doctor --live 即可在本地验证 Google Health 身份验证是否已正确配置。

诚邀 Beta 测试者

目前最有价值的贡献,是来自 Fitbit、Pixel Watch、Android 和 Google Health API v4 用户的真实设置反馈。

如果你可以使用真实账户进行测试:

  • 运行 npx -y google-health-mcp-unofficial doctor,确认 OAuth 流程是否清晰。
  • 运行 npx -y google-health-mcp-unofficial support --feedback --json,并将匿名信息包粘贴到 issue #4。
  • 运行 npx -y google-health-mcp-unofficial coverage --json,查看静态覆盖计划。
  • 完成 OAuth 后,运行 npx -y google-health-mcp-unofficial coverage --live --json,并将检查并脱敏后的报告粘贴到 issue #2。
  • 在 MCP 客户端中尝试 google_health_connection_status、google_health_data_inventory 和 google_health_daily_summary。
  • 如有缺失的数据类型、令人困惑的设置步骤、特定客户端的问题或隐私方面的顾虑,请提交 issue。
  • 请勿在公开 issue 中粘贴 OAuth 令牌、客户端密钥、本地路径或个人健康测量数据。

实用链接:

安装

创建 Google Cloud OAuth 客户端,启用 Google Health API,并添加本地重定向地址:

http://127.0.0.1:3000/callback

然后运行:

npx -y google-health-mcp-unofficial setup --scope-preset full
npx -y google-health-mcp-unofficial auth
npx -y google-health-mcp-unofficial doctor
无头主机(服务器、SSH、容器、WSL)

auth 通常会打开浏览器,并在 127.0.0.1 上接收重定向。在没有浏览器的主机上,这种方式无法运行。当检测到无头主机(SSH,或没有 DISPLAY / WAYLAND_DISPLAY)时,它会改为让你粘贴重定向地址:

npx -y google-health-mcp-unofficial auth --manual

非交互式配置:

npx -y google-health-mcp-unofficial auth --print-url
npx -y google-health-mcp-unofficial auth --code "http://127.0.0.1:3000/callback?code=..."

有关 --local-callback、SSH 隧道说明和 GOOGLE_HEALTH_HEADLESS,请参阅 docs/oauth.md。

范围预设让 OAuth 同意流程更易于理解,包括 basic、activity、sleep 和 full。完整的预设列表、精确的只读范围 URL 及 OAuth 端点请参阅 docs/oauth.md。

如果设置遇到问题:

npx -y google-health-mcp-unofficial doctor --fix       # repairs local config/token permissions (chmod 600 where supported)
npx -y google-health-mcp-unofficial doctor --live      # calls safe identity/profile/settings endpoints to prove the API is reachable
npx -y google-health-mcp-unofficial coverage --live --json # redacted read-only data-type coverage for issue #21
npx -y google-health-mcp-unofficial support --redacted # copy-paste support bundle, no tokens/secrets/measurements
npx -y google-health-mcp-unofficial support --feedback --json # anonymous setup feedback for issue #4

独立 MCP 配置:

{
  "mcpServers": {
    "google_health": {
      "command": "npx",
      "args": ["-y", "google-health-mcp-unofficial"]
    }
  }
}

Hermes

npx -y google-health-mcp-unofficial setup --client hermes --no-auth
npx -y google-health-mcp-unofficial auth
npx -y google-health-mcp-unofficial doctor --client hermes --fix
npx -y google-health-mcp-unofficial doctor --client hermes --live
hermes mcp test google_health

更改配置后,使用 /reload-mcp 或 hermes mcp test google_health。正常访问数据时无需重启网关。

开发

git clone https://github.com/davidmosiah/google-health-mcp.git
cd google-health-mcp
npm install
npm test

链接

另请参阅

完整的 Delx Wellness 连接器库:

提供方包仓库
WHOOPwhoop-mcp-unofficialwhoop-mcp
Ouraoura-mcp-unofficialouramcp
Garmingarmin-mcp-unofficialgarmin-mcp
Stravastrava-mcp-unofficialstrava-mcp
Fitbitfitbit-mcp-unofficialfitbitmcp
Withingswithings-mcp-unofficialwithingsmcp
Apple Healthapple-health-mcp-unofficialapple-health-mcp
Polarpolar-mcp-unofficialpolarmcp
Nourish(营养)wellness-nourishwellness-nourish

Hermes 一键设置 — 预先配置上述所有连接器,以及健康技能和引导流程:delx-wellness-hermes。

📧 联系与支持

许可证

MIT - 详见 LICENSE。行为准则。

面向 Agent 的评测标准:mcp-scorecard — 目标是在 CI 上达到 ≥90。

技能或 MCP

同一个包,两种接入方式。MCP 通过 stdio/HTTP 注册工具。当客户端不支持 MCP 时,技能 可通过 CLI 调用相同的工具:

npx -y google-health-mcp-unofficial call google_health_connection_status --json '{}'

将 skill/SKILL.md 复制到你的 Agent 技能目录。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。