关于 google-health-mcp
google-health-mcp 是面向 AI Agent 的本地优先 MCP 服务,可通过 OAuth 查询用户授权的 Google Health API v4 数据,包括 Fitbit 和 Pixel Watch。令牌保留在本机,并提供结构化隐私过滤及摘要和连接检查工具。
主要功能
- 01本机存储 OAuth 令牌
- 02结构化模式过滤身份与位置数据
- 03查询每日和每周摘要
- 04检查连接、数据域及授权范围
- 05支持 stdio 和本地 HTTP 传输
适用场景
- 01查看每日及每周健康摘要
- 02核对已授权的数据域和范围
- 03审查本地存储及将发送的数据
MCP 相关
通过每日、每周摘要等工具向 MCP 客户端提供 Google Health 数据及相关检查。默认使用 stdio,也可选择仅绑定本地回环地址的无状态 Streamable HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y google-health-mcp-unofficialGOOGLE_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
26收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| response_format | enum | 否 | markdown | json |
详细介绍
Google Health MCP
通过 OAuth 在本地读取用户授权的 Google Health API v4 数据 — Fitbit、Pixel Watch 和合作伙伴的数据。Beta。
本地优先的 MCP 服务 — 令牌绝不会离开你的设备。
⚡ 使用 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、placeVisitgoogle_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
链接
- 更新日志 · 贡献指南 · 安全 · 授权模型
- Google Health API:https://developers.google.com/health
- 发行说明:https://developers.google.com/health/release-notes
- REST 参考:https://developers.google.com/health/reference/rest
- 范围:https://developers.google.com/health/scopes
- 数据类型:https://developers.google.com/health/data-types
- 迁移指南:https://developers.google.com/health/migration
- Delx Wellness 注册表:https://github.com/davidmosiah/delx-wellness
另请参阅
完整的 Delx Wellness 连接器库:
Hermes 一键设置 — 预先配置上述所有连接器,以及健康技能和引导流程:delx-wellness-hermes。
📧 联系与支持
- 📨 [email protected] — 一般问题、集成帮助、合作事宜
- 🐛 错误报告 / 功能请求 — GitHub Issues
- 🐦 动态 — X 上的 @delx369
- 🌐 网站 — wellness.delx.ai
许可证
面向 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 技能目录。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。