Yummy Health MCP
Private, read-only health data bridge that reads from Android Health Connect and exposes heart rate, steps, sleep, and other health metrics to ChatGPT via MCP tools.
README
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_statusget_health_recordsget_heart_rateget_sleepget_daily_activity
- 华为直连数据源接口已预留;尚未填入 Health Service Kit SDK,因为需要你自己的
App ID、签名证书、
agconnect-services.json和已批准 scopes
1. 部署后端到 Zeabur
-
新建一个 Service,源码目录选本项目根目录,让 Zeabur 使用
Dockerfile。 -
给 Service 挂载持久卷到
/data。不挂卷会在重建后丢记录和 OAuth token。 -
设置环境变量:
PUBLIC_BASE_URL=https://你的域名 APP_PASSWORD=只在ChatGPT授权页输入的长密码 SYNC_TOKEN=只填进手机同步器的另一条长随机字符串 DATA_DIR=/data ACCESS_TOKEN_TTL_SECONDS=3600 -
部署后检查:
https://你的域名/healthz应返回:
{"ok":true,"version":"0.1.1"}
不要把 APP_PASSWORD、SYNC_TOKEN 或 /data/health.sqlite3 提交到 GitHub。
2. 编译手机同步器
不安装 Android Studio:用 GitHub Actions
- 打开 GitHub 仓库的
Actions。 - 左侧选择
Build Android APK。 - 点右侧
Run workflow,再确认运行。 - 等任务变绿,点进该次运行。
- 页面底部
Artifacts下载yummy-health-sync-debug。 - 解压后把
app-debug.apk安装到手机。
仓库中已包含 .github/workflows/build-apk.yml,不需要 Gradle Wrapper。
用 Android Studio
- 用 Android Studio 打开
android-sync。 - 等 Gradle 同步完成,连接手机并运行
app。 - 在应用里填:
- Zeabur 地址:
https://你的域名 SYNC_TOKEN:与 Zeabur环境变量完全一致
- Zeabur 地址:
- 点“授权并同步最近 14 天”,在系统 Health Connect 页面允许需要的数据类型。
目前是手动同步,便于先验证数据是否完整;确认稳定后再加 WorkManager 定时后台同步, 避免手机省电策略导致“看似成功、实际没更新”。
如果华为数据没有出现在 Health Connect:
- 先确认华为运动健康到 Health Connect 的共享开关;
- 确认 Health Connect 中“应用权限/数据和访问权限”能看见对应记录;
- 华为运动健康和同步器都允许后台运行;
- 第一次可先只同步 1–14 天,避免记录量太大被手机杀后台。
3. 连接 ChatGPT
ChatGPT 需要远程 HTTPS MCP;本项目地址是:
https://你的域名/mcp
在 ChatGPT 的 Developer mode / Apps 中创建自定义 MCP:
- 填上面的 MCP 地址。
- 选择 OAuth。
- 扫描工具。
- 浏览器会打开本项目的授权页,输入
APP_PASSWORD。 - 授权后应扫描到 5 个只读工具。
服务端会动态接受 ChatGPT 提供的 HTTPS callback,因此没有写死 Claude callback。 OAuth metadata:
/.well-known/oauth-protected-resource/mcp
/.well-known/oauth-authorization-server
4. 华为运动健康直连
华为官方允许应用在用户授权后读取华为运动健康数据,但需要:
- 注册 HUAWEI Developer;
- 在 AppGallery Connect 创建 Android 应用;
- 固定包名(当前为
love.yummy.healthsync); - 配置签名证书指纹;
- 申请 Health Service Kit 和所需读取 scopes;
- 下载
agconnect-services.json; - 审核通过后补全
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 持久卷。
- 这套工具用于陪伴和趋势观察,不把输出包装成医疗诊断。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。