关于 google-health-fitbit-mcp
google-health-fitbit-mcp 是供个人和健康数据 Agent 使用的本地 MCP 服务,通过 OAuth 读取 Google Health API 中的 Fitbit、Pixel Watch 等数据。凭证保存在本机,数据工具默认只读。
主要功能
- 01读取活动、睡眠、心率等健康数据
- 02提供每日与每周摘要及数据汇总
- 03查询设备、数据类型、授权范围和连接状态
- 04本地保存 OAuth 凭证并遮蔽敏感信息
- 05通过提示词和资源提供数据入口
适用场景
- 01查看个人每日活动与睡眠趋势
- 02确认哪些设备及数据类型已连接
- 03为健康建议系统提供标准化活动和睡眠背景
MCP 相关
作为本地 MCP 服务,提供健康数据查询工具、资源和提示词;AI Agent 可通过 OAuth 读取 Google Health API 数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y google-health-fitbit-mcpGOOGLE_HEALTH_CLIENT_IDGoogle Cloud OAuth client ID for Google Health API. Optional when configured with google-health-fitbit-mcp-server setup.GOOGLE_HEALTH_CLIENT_SECRET密钥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.GOOGLE_HEALTH_REDIRECT_URIRedirect URI configured in the Google Cloud OAuth client. Optional when configured with google-health-fitbit-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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
29收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| response_format | enum | 否 | markdown | json |
详细介绍
Google Health Fitbit MCP
通过本地 OAuth 查询您自己的 Google Health API 数据 — Fitbit、Pixel Watch 和已连接的合作伙伴数据源 —。Beta。
所有操作都在您自己的设备上运行 — 您的凭据绝不会离开您的设备。
一个在本地运行的 MCP 服务,通过 OAuth 将您自己的 Google Health API 数据交给 AI Agent——数据来自 Fitbit 追踪器、Pixel Watch 和受支持的合作伙伴数据源。
- 一条命令即可安装 —
npx -y google-health-fitbit-mcp setup - 可在以下客户端中运行 Claude Desktop · Claude Code · Cursor · Windsurf · Hermes · OpenClaw — 请参阅客户端示例。
- 在您的设备上运行 — OAuth 令牌以
0600权限保存在本地,任何工具都不会返回这些令牌(隐私)。 - 默认只读 — 所有随附的数据工具都只执行读取操作。写入功能采用受控、选择加入、先试运行的设计,目前未启用。
Beta 状态: Google Health API 已向开发者开放,但其功能范围仍在变化。由于 Google 的发布说明在上线后仍持续列出权限范围和数据类型的变更,此连接器仍处于 Beta 阶段,并建议测试者在用于生产环境前先安全地验证只读功能。
这是一个独立的社区构建连接器——与 Google、Fitbit 或 Alphabet 无隶属关系,也未获得其认可或支持。它不是医疗器械,也不提供医疗建议;请仅将这些数据作为趋势参考。
⚡ 快速连接
前提条件:一个已启用 Google Health API 并注册了重定向地址
http://127.0.0.1:3000/callback的 Google Cloud OAuth 客户端(类型:Desktop)——详情请见安装。
步骤 1 — 安装并授权(仅需一次):
npx -y google-health-fitbit-mcp setup # guided: Google Cloud OAuth client + scopes
npx -y google-health-fitbit-mcp auth # browser OAuth — tokens stay on your machine
npx -y google-health-fitbit-mcp checkup # ✓ verifies everything is ready
🔑 第一次使用?获取 Google Client ID 和 Secret(约 2 分钟)
setup 会要求输入 Client ID 和 Client Secret。你只需在 Google Cloud 中免费创建一次:
- 新建项目 — 打开 console.cloud.google.com/projectcreate,为项目命名(例如
health-mcp),点击 Create,然后选中该项目。 - 启用 API — 打开 Google Health API 页面并点击 Enable。
- 同意屏幕 — 前往 OAuth consent screen,选择 External,并填写必需的应用名称 / 电子邮件字段。在 Test users 下,添加你自己的 Google 账号 — 如果跳过此步骤,登录会失败并显示
403: access_denied。 - 创建客户端 — 前往 Credentials → + Create credentials → OAuth client ID → Application type: Desktop app → Create。
- 复制 Client ID(以
…apps.googleusercontent.com结尾)和 Client secret,然后在setup提示时分别粘贴。
重定向 URI: Desktop app 客户端会自动允许
http://127.0.0.1:3000/callback环回地址 — 无需在任何地方注册。setup询问时,直接按 Enter 接受默认值即可。对于setup的其他所有提示(范围预设、隐私模式),按 Enter 会选择合理的默认值。
注意 — 7 天规则: 当同意屏幕的发布状态为 Testing 时,Google 会在 7 天后撤销刷新令牌。大约每周会有一次后续请求因
invalid_grant失败,这是正常现象,并非此服务的错误。服务会重新打开授权流程(参见保持连接);批准只需几秒钟。发布应用可彻底移除过期限制 — 切换前请在同意屏幕中确认你的范围需要满足哪些要求。
步骤 2 — 连接应用:
Claude Code
claude mcp add google-health -- npx -y google-health-fitbit-mcp
Claude Desktop
设置 → Developer → Edit Config,然后将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}
重启 Claude Desktop — 工具会显示在 🔌 连接器菜单中。
Cursor
将相同的 mcpServers 块添加到 .cursor/mcp.json(按项目)或 ~/.cursor/mcp.json(全局),也可以使用 Settings → MCP → Add new server。
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}
Windsurf
将相同的 mcpServers 块添加到 ~/.codeium/windsurf/mcp_config.json。
Hermes
npx -y google-health-fitbit-mcp setup --client hermes # writes the Hermes config for you
然后使用 /reload-mcp 或 hermes mcp test google_health 重新加载。
步骤 3 — 测试。 向你的 Agent 提问:
Run google_health_connection_status and tell me if I'm connected.
为什么要开发这个项目
Google Health API 是 Fitbit Web API 的后继者:采用全新的 OAuth 和基础 URL(https://health.googleapis.com),端点架构更精简,数据类型统一为 kebab-case,跨来源数据流经过协调,并支持按日 / 实际时间汇总。
它为 Agent 提供了一条清晰的路径来探索 API、验证配置、本地登录并提取数据 — 无需将令牌粘贴到提示词或 Agent 配置中。
与你的 Agent 一起试用
以下是三个不错的入门提示词,均围绕此连接器实际提供的工具设计:
Check my setup with google_health_connection_status, then call
google_health_data_inventory and tell me which Google Health
domains and scopes I've granted.
Pull today's google_health_daily_summary, then google_health_weekly_summary.
Keep observed data separate from any suggestions, and stay non-medical.
List my paired devices with google_health_list_paired_devices and tell me
which device is producing my sleep and heart-rate data.
工具
共 29 个工具,除下文明确说明的两个受限本地个人资料 / 身份验证操作外,均为只读。
从这里开始
| 工具 | 功能 |
|---|---|
google_health_connection_status | 本地配置、令牌、授权范围和 MCP 客户端就绪状态 — 不调用 Google |
google_health_quickstart | 根据当前状态调整的个性化 3 步设置指南 |
google_health_data_inventory | 支持的领域、授权范围、数据类型命名和推荐的 Agent 流程 |
google_health_list_data_types | 39 个 kebab-case 数据类型标识,以及单位、授权范围和支持的操作 |
google_health_demo | 逼真的合成数据载荷,让 Agent 在实际调用前了解接口约定 |
数据读取(Google Health API)
| 工具 | 端点 |
|---|---|
google_health_get_identity | /v4/users/me/identity — Google Health 和旧版 Fitbit 身份映射 |
google_health_get_profile | /v4/users/me/profile |
google_health_get_settings | /v4/users/me/settings — 单位、时区 |
google_health_list_paired_devices | /v4/users/me/pairedDevices — 你的 Fitbit 跟踪器和 Pixel Watch,以及各设备生成的数据 |
google_health_get_irn_profile | /v4/users/me/irnProfile — 心律不齐(AFib)通知参与状态 |
google_health_list_data_points | /v4/.../dataPoints — 任意数据类型的日内详情 |
google_health_get_data_point | /v4/.../dataPoints/{id} — 某一次特定的睡眠时段、锻炼或测量 |
google_health_reconcile_data_points | /v4/.../dataPoints:reconcile — 合并各来源的数据流(all-sources、google-wearables、google-sources) |
google_health_daily_rollup | /v4/.../dataPoints:dailyRollUp — 按自然日汇总 |
google_health_rollup | /v4/.../dataPoints:rollUp — 按实际时间窗口汇总 |
摘要和健康情境
| 工具 | 功能 |
|---|---|
google_health_daily_summary | 单日的步数、距离、卡路里、活动区间分钟数、睡眠、静息心率、HRV 和体重,以及数据质量标记 |
google_health_weekly_summary | 每周评分卡,可选与之前时间段对比,并提供负荷分类和瓶颈 |
google_health_wellness_context | 为推荐引擎规范化的活动/睡眠情境 |
身份验证、诊断和元数据
google_health_get_auth_url · google_health_exchange_code(受限:需要明确的用户意图)· google_health_revoke_access(受限且具有破坏性:断开 Google Health)· google_health_privacy_audit · google_health_cache_status · google_health_data_type_coverage · google_health_capabilities · google_health_agent_manifest · google_health_onboarding · google_health_profile_get · google_health_profile_update(仅修改本地文件,需要 explicit_user_intent=true)
资源和提示词
MCP 资源:google-health://agent-manifest、google-health://capabilities、google-health://inventory、google-health://latest/steps、google-health://profile、google-health://summary/daily、google-health://summary/weekly。
MCP 提示词:google_health_daily_checkin、google_health_weekly_review、google_health_data_type_investigation。
数据类型
官方 Google Health 表中的 39 种数据类型,包括 steps、sleep、heart-rate、heart-rate-variability、daily-resting-heart-rate、active-zone-minutes、distance、total-calories、weight、body-fat、blood-glucose、oxygen-saturation、vo2-max、electrocardiogram、irregular-rhythm-notification、exercise、floors、swim-lengths-data、nutrition-log 和 hydration-log。
Agent 需要了解的命名规则:
- 端点使用 kebab-case 数据类型:
steps、daily-resting-heart-rate。 - 筛选条件使用 snake_case 字段路径:
sleep.interval.civil_start_time、heart_rate.sample_time.physical_time。 - 来源系列:
all-sources、google-wearables、google-sources。
调用 google_health_list_data_types,查看包含单位、授权范围以及各类型支持的操作(list/reconcile/rollup)的完整目录。
隐私与离线运行的部分
- OAuth 令牌存储在磁盘上的
~/.google-health-mcp/tokens.json中,并限制为0600权限。 - 客户端密钥存储在
~/.google-health-mcp/config.json中,或通过GOOGLE_HEALTH_*环境变量提供。 - 工具绝不会返回访问令牌、刷新令牌或客户端密钥;错误输出也会进行脱敏。
- 默认隐私模式为
GOOGLE_HEALTH_PRIVACY_MODE=structured;summary会进一步移除标识符,而raw则是调试时明确选择启用的模式。 - GPS/路线数据被视为敏感信息,除非明确请求,否则会进行脱敏。
support会输出可复制粘贴到 GitHub 问题中的支持信息包——始终经过脱敏,绝不包含令牌、密钥、本地路径或健康测量数据。support --feedback --json会为 beta 测试人员输出匿名的设置反馈信息包(指南)。coverage --live --json只会输出经过脱敏的数据类型状态和数据点数量区间,不会输出原始 Google Health 负载(指南)。
安装
设置 Google Cloud OAuth 客户端(类型:Desktop),启用 Google Health API,并注册本地重定向地址:
http://127.0.0.1:3000/callback
然后运行:
npx -y google-health-fitbit-mcp setup --scope-preset full
npx -y google-health-fitbit-mcp auth
npx -y google-health-fitbit-mcp checkup
范围预设
预设让 OAuth 同意请求一目了然——只请求用例所需的权限:
| 预设 | 授予的权限 |
|---|---|
basic | 个人资料 + 设置 |
activity | 基本 + 活动/健身 + 健康指标 |
sleep | 基本 + 睡眠 |
heart | 基本 + 健康指标 + ECG + 心律不齐通知 |
full | 所有建议的只读权限范围(默认) |
nutrition-write | 选择启用的营养写入权限范围——唯一具备任何写入能力的预设;目前尚未提供写入工具 |
高级用户可以通过 --scopes 传入以空格或逗号分隔的明确权限范围列表。
如果设置遇到问题
npx -y google-health-fitbit-mcp checkup --fix # repairs local config/token permissions (chmod 600 where supported)
npx -y google-health-fitbit-mcp checkup --live # hits read-only identity/profile/settings endpoints to confirm the API responds
npx -y google-health-fitbit-mcp coverage --live --json # redacted read-only data-type coverage report
npx -y google-health-fitbit-mcp support # shareable support bundle, stripped of tokens/secrets/measurements
npx -y google-health-fitbit-mcp support --feedback --json # anonymous setup feedback bundle
保持连接
访问令牌会在后台静默刷新。真正会过期的是其背后的刷新令牌——当同意屏幕的发布状态为 Testing 时,Google 会在 7 天后撤销该令牌,下一次调用将返回 invalid_grant。重试无法解决问题:授权已失效,只有重新授权才能恢复。
因此,服务会代你完成授权。首次调用遇到已撤销的授权时,它会在浏览器中打开 Google 的同意屏幕;批准后,原始请求会自动完成——无需运行命令,也无需排查问题。如果所用时间超过 GOOGLE_HEALTH_REAUTH_WAIT_MS(默认为 45 秒),调用会改为返回 URL,且监听器会继续运行,因此批准操作仍然有效,下一次请求也会正常执行。
此功能仅适用于本地 stdio 传输方式,此时浏览器和服务运行在同一台机器上。使用 HTTP 传输时,服务可能位于远程,而且默认端口会与环回重定向端口冲突,因此调用会失败并明确提示你运行 auth。设置 GOOGLE_HEALTH_AUTO_REAUTH=0 可始终自行处理重新授权;在无头主机上设置 GOOGLE_HEALTH_AUTH_NO_BROWSER=1 可仅获取 URL,而不启动浏览器。
MCP 客户端配置
Claude Desktop / Cursor / Windsurf(参见 examples/):
{
"mcpServers": {
"google_health": {
"command": "npx",
"args": ["-y", "google-health-fitbit-mcp"]
}
}
}
Hermes
npx -y google-health-fitbit-mcp setup --client hermes --no-auth
npx -y google-health-fitbit-mcp auth
npx -y google-health-fitbit-mcp checkup --client hermes
配置更改后,运行 /reload-mcp 或 hermes mcp test google_health 即可——只为读取数据,无需重启网关。
HTTP 传输(可选)
默认传输方式为 stdio。需要此方式的客户端可以使用本地 Streamable-HTTP 传输:
npx -y google-health-fitbit-mcp --http # serves http://127.0.0.1:3000/mcp (+ /health)
配置
| 环境变量 | 用途 | 默认值 |
|---|---|---|
GOOGLE_HEALTH_CLIENT_ID | Google Cloud OAuth 客户端 ID | —(或本地配置) |
GOOGLE_HEALTH_CLIENT_SECRET | OAuth 客户端密钥(优先使用本地配置,而非 MCP 客户端配置) | —(或本地配置) |
GOOGLE_HEALTH_REDIRECT_URI | 已注册的重定向 URI | —(或本地配置) |
GOOGLE_HEALTH_TOKEN_PATH | 令牌文件位置 | ~/.google-health-mcp/tokens.json |
GOOGLE_HEALTH_PRIVACY_MODE | summary | structured | raw | structured |
GOOGLE_HEALTH_CACHE | 可选的 SQLite 响应缓存(true/sqlite) | 已禁用 |
GOOGLE_HEALTH_CACHE_PATH | SQLite 缓存位置 | ~/.google-health-mcp/cache.sqlite |
GOOGLE_HEALTH_NO_CACHE | 绕过内存中的 HTTP 缓存(60 秒 TTL,仅限 GET) | 未设置 |
GOOGLE_HEALTH_MCP_TRANSPORT | stdio | http | stdio |
GOOGLE_HEALTH_MCP_HOST / GOOGLE_HEALTH_MCP_PORT | HTTP 传输绑定地址 | 127.0.0.1 / 3000 |
GOOGLE_HEALTH_AUTO_REAUTH | 授权被撤销时自动重新打开同意流程(设为 0/false 可禁用) | 已启用 |
GOOGLE_HEALTH_REAUTH_WAIT_MS | 工具调用等待你批准的时长,超时后改为返回 URL | 45000 |
GOOGLE_HEALTH_AUTH_NO_BROWSER | 从不启动浏览器;仅打印/返回 URL(适用于无头主机) | 未设置 |
内置可靠性保障:每次 Google 调用都会经过重试中间件(指数退避 + 抖动、遵循 Retry-After,并重试 408/429/5xx),且使用仅限 GET、有效期为 60 秒的响应缓存。多日汇总会限制请求并发量,以避免触及速率限制。
CLI 命令
所有命令均通过 npx -y google-health-fitbit-mcp <command> 运行(已安装的二进制文件:google-health-fitbit-mcp-server)。
| 命令 | 功能 | 关键标志 |
|---|---|---|
| (无) | 通过 stdio 启动 MCP 服务 | --http — 在 127.0.0.1:3000/mcp 上使用本地 Streamable-HTTP |
setup | 引导式设置:写入本地配置和 MCP 客户端配置 | --scope-preset <basic|activity|sleep|heart|full|nutrition-write> · --scopes "<url …>" · --client <generic|claude|cursor|windsurf|hermes|openclaw> · --no-auth · --json |
auth | 使用本地回调进行浏览器 OAuth;以 0600 权限保存令牌 | --no-open — 打印身份验证 URL,而不打开浏览器 |
checkup | 诊断设置,提供 ✓/✗ 检查项和后续步骤(别名:doctor、status) | --json · --client <name> · --fix — 修复文件权限 · --live — 验证 API 可访问性 · --live-write — 对写入路径进行试运行,不会执行 POST |
coverage | 跨 list/reconcile/rollup 的数据类型覆盖率报告 | --json · --live — 针对你的真实账户执行脱敏只读检查 |
support | 用于 GitHub 问题的脱敏支持信息包 | --json · --feedback — 匿名设置反馈信息包 |
onboarding | 以 JSON 格式提供通用健康入门流程 | --pt-BR |
version / help | 打印版本信息 / 完整用法 |
征集 Beta 测试者
目前最有价值的贡献,是基于真实 Fitbit、Pixel Watch、Android 和 Google Health API 账户提供实际设置反馈。
如果你有真实账户可用于测试:
- 运行
npx -y google-health-fitbit-mcp checkup,并告知我们 OAuth 流程是否清晰易懂。 - 运行
npx -y google-health-fitbit-mcp support --feedback --json,并将匿名信息包发布到 GitHub 问题中。 - 完成 OAuth 后,运行
npx -y google-health-fitbit-mcp coverage --live --json,检查后发布脱敏后的覆盖率报告。 - 在 MCP 客户端中试用
google_health_connection_status、google_health_data_inventory和google_health_daily_summary。 - 如果遇到缺少数据类型、设置步骤不清晰、特定客户端使用不便或隐私问题,请提交问题。
- 请勿在公开问题中包含 OAuth 令牌、客户端密钥、本地路径和个人健康测量数据。
开发
git clone https://github.com/BerkKilicoglu/google-health-fitbit-mcp.git
cd google-health-fitbit-mcp
npm install
npm test
npm test 会运行类型检查、构建、MCP 冒烟测试(stdio + HTTP)、摘要测试样例、隐私/缓存/重试测试套件、CLI 体验检查和元数据验证。请参阅 CONTRIBUTING.md 了解指南,并参阅 SECURITY.md 了解安全政策。
链接
- 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
- 迁移指南(Fitbit → Google Health):https://developers.google.com/health/migration
联系与支持
- 🐛 错误报告 / 功能请求 — GitHub Issues
- 📨 [email protected] — 一般问题和集成协助
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。