Skip to main content
Glama
yummy520730

Yummy Health MCP

by yummy520730

Yummy Health MCP

私人、只读的健康数据桥:

华为手表
   ↓
华为运动健康
   ↓(当前可用)                    ↓(拿到华为 Health Service Kit 权限后)
Android Health Connect  ← 手机同步器 →  Huawei Health Source
                         ↓ HTTPS
                    Zeabur 私人存储
                         ↓ OAuth 2.1 + MCP
                       ChatGPT

当前版本已经实现:

  • Android Health Connect 读取:心率、静息心率、步数、睡眠、运动、血氧、体重

  • 手机到 Zeabur 的独立 SYNC_TOKEN 认证

  • SQLite 持久化和重复记录更新

  • ChatGPT 动态 OAuth 客户端注册、PKCE、access token、refresh token

  • 只读 MCP 工具:

    • get_latest_health_status

    • get_health_records

    • get_heart_rate

    • get_sleep

    • get_daily_activity

  • 华为直连数据源接口已预留;尚未填入 Health Service Kit SDK,因为需要你自己的 App ID、签名证书、agconnect-services.json 和已批准 scopes

1. 部署后端到 Zeabur

  1. 新建一个 Service,源码目录选本项目根目录,让 Zeabur 使用 Dockerfile

  2. 给 Service 挂载持久卷到 /data。不挂卷会在重建后丢记录和 OAuth token。

  3. 设置环境变量:

    PUBLIC_BASE_URL=https://你的域名
    APP_PASSWORD=只在ChatGPT授权页输入的长密码
    SYNC_TOKEN=只填进手机同步器的另一条长随机字符串
    DATA_DIR=/data
    ACCESS_TOKEN_TTL_SECONDS=3600
  4. 部署后检查:

    https://你的域名/healthz

    应返回:

    {"ok":true,"version":"0.1.1"}

不要把 APP_PASSWORDSYNC_TOKEN/data/health.sqlite3 提交到 GitHub。

Related MCP server: oura-mcp-server

2. 编译手机同步器

不安装 Android Studio:用 GitHub Actions

  1. 打开 GitHub 仓库的 Actions

  2. 左侧选择 Build Android APK

  3. 点右侧 Run workflow,再确认运行。

  4. 等任务变绿,点进该次运行。

  5. 页面底部 Artifacts 下载 yummy-health-sync-debug

  6. 解压后把 app-debug.apk 安装到手机。

仓库中已包含 .github/workflows/build-apk.yml,不需要 Gradle Wrapper。

用 Android Studio

  1. 用 Android Studio 打开 android-sync

  2. 等 Gradle 同步完成,连接手机并运行 app

  3. 在应用里填:

    • Zeabur 地址:https://你的域名

    • SYNC_TOKEN:与 Zeabur环境变量完全一致

  4. 点“授权并同步最近 14 天”,在系统 Health Connect 页面允许需要的数据类型。

目前是手动同步,便于先验证数据是否完整;确认稳定后再加 WorkManager 定时后台同步, 避免手机省电策略导致“看似成功、实际没更新”。

如果华为数据没有出现在 Health Connect:

  • 先确认华为运动健康到 Health Connect 的共享开关;

  • 确认 Health Connect 中“应用权限/数据和访问权限”能看见对应记录;

  • 华为运动健康和同步器都允许后台运行;

  • 第一次可先只同步 1–14 天,避免记录量太大被手机杀后台。

3. 连接 ChatGPT

ChatGPT 需要远程 HTTPS MCP;本项目地址是:

https://你的域名/mcp

在 ChatGPT 的 Developer mode / Apps 中创建自定义 MCP:

  1. 填上面的 MCP 地址。

  2. 选择 OAuth。

  3. 扫描工具。

  4. 浏览器会打开本项目的授权页,输入 APP_PASSWORD

  5. 授权后应扫描到 5 个只读工具。

服务端会动态接受 ChatGPT 提供的 HTTPS callback,因此没有写死 Claude callback。 OAuth metadata:

/.well-known/oauth-protected-resource/mcp
/.well-known/oauth-authorization-server

4. 华为运动健康直连

华为官方允许应用在用户授权后读取华为运动健康数据,但需要:

  1. 注册 HUAWEI Developer;

  2. 在 AppGallery Connect 创建 Android 应用;

  3. 固定包名(当前为 love.yummy.healthsync);

  4. 配置签名证书指纹;

  5. 申请 Health Service Kit 和所需读取 scopes;

  6. 下载 agconnect-services.json

  7. 审核通过后补全 HuaweiHealthSource

基础数据可供个人开发者申请;部分高级健康数据只开放企业开发者。测试 scopes 也需要 华为审核,所以 Health Connect 是今天就能运行的入口,华为直连作为无缝升级路径。

5. 本地测试

python -m venv .venv
.venv/bin/pip install -r requirements.txt pytest
PYTHONPATH=. .venv/bin/pytest -q

测试覆盖 SQLite 往返、动态客户端注册、OAuth PKCE、refresh token、MCP 初始化与工具扫描。

隐私边界

  • MCP 工具全部只读,不提供写回或删除手机健康记录的能力。

  • ChatGPT token 与手机同步 token 分离。

  • 原始数据只保存在你的 Zeabur 持久卷。

  • 这套工具用于陪伴和趋势观察,不把输出包装成医疗诊断。

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yummy520730/health-connect-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server