mcpField
G
google-health-fitbit-mcp

google-health-fitbit-mcp

本地服务
github.com健康医疗1912 周前更新

关于 google-health-fitbit-mcp

google-health-fitbit-mcp 是供个人和健康数据 Agent 使用的本地 MCP 服务,通过 OAuth 读取 Google Health API 中的 Fitbit、Pixel Watch 等数据。凭证保存在本机,数据工具默认只读。

主要功能

  1. 01读取活动、睡眠、心率等健康数据
  2. 02提供每日与每周摘要及数据汇总
  3. 03查询设备、数据类型、授权范围和连接状态
  4. 04本地保存 OAuth 凭证并遮蔽敏感信息
  5. 05通过提示词和资源提供数据入口

适用场景

  1. 01查看个人每日活动与睡眠趋势
  2. 02确认哪些设备及数据类型已连接
  3. 03为健康建议系统提供标准化活动和睡眠背景

MCP 相关

作为本地 MCP 服务,提供健康数据查询工具、资源和提示词;AI Agent 可通过 OAuth 读取 Google Health API 数据。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"berkkilicoglu-google-health-fitbit": {
"command": "npx",
"args": [
"-y",
"google-health-fitbit-mcp"
],
"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-fitbit-mcp
需要配置的环境变量
GOOGLE_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmgoogle-health-fitbit-mcp1.0.2

工具

29

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

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

详细介绍

Google Health Fitbit MCP

Google Health Fitbit MCP — 面向 AI Agent 的 Google Health API MCP 服务
通过本地 OAuth 查询您自己的 Google Health API 数据 — Fitbit、Pixel Watch 和已连接的合作伙伴数据源 —。Beta。
所有操作都在您自己的设备上运行 — 您的凭据绝不会离开您的设备。

npm 版本 npm 下载量 MIT 许可证 为 MCP 构建 GitHub 星标数


一个在本地运行的 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 中免费创建一次:

  1. 新建项目 — 打开 console.cloud.google.com/projectcreate,为项目命名(例如 health-mcp),点击 Create,然后选中该项目。
  2. 启用 API — 打开 Google Health API 页面并点击 Enable。
  3. 同意屏幕 — 前往 OAuth consent screen,选择 External,并填写必需的应用名称 / 电子邮件字段。在 Test users 下,添加你自己的 Google 账号 — 如果跳过此步骤,登录会失败并显示 403: access_denied。
  4. 创建客户端 — 前往 Credentials → + Create credentials → OAuth client ID → Application type: Desktop app → Create。
  5. 复制 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_types39 个 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_IDGoogle Cloud OAuth 客户端 ID—(或本地配置)
GOOGLE_HEALTH_CLIENT_SECRETOAuth 客户端密钥(优先使用本地配置,而非 MCP 客户端配置)—(或本地配置)
GOOGLE_HEALTH_REDIRECT_URI已注册的重定向 URI—(或本地配置)
GOOGLE_HEALTH_TOKEN_PATH令牌文件位置~/.google-health-mcp/tokens.json
GOOGLE_HEALTH_PRIVACY_MODEsummary | structured | rawstructured
GOOGLE_HEALTH_CACHE可选的 SQLite 响应缓存(true/sqlite)已禁用
GOOGLE_HEALTH_CACHE_PATHSQLite 缓存位置~/.google-health-mcp/cache.sqlite
GOOGLE_HEALTH_NO_CACHE绕过内存中的 HTTP 缓存(60 秒 TTL,仅限 GET)未设置
GOOGLE_HEALTH_MCP_TRANSPORTstdio | httpstdio
GOOGLE_HEALTH_MCP_HOST / GOOGLE_HEALTH_MCP_PORTHTTP 传输绑定地址127.0.0.1 / 3000
GOOGLE_HEALTH_AUTO_REAUTH授权被撤销时自动重新打开同意流程(设为 0/false 可禁用)已启用
GOOGLE_HEALTH_REAUTH_WAIT_MS工具调用等待你批准的时长,超时后改为返回 URL45000
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 了解安全政策。

链接

联系与支持

许可证

MIT — 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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