mcpField
M
MetricBridge Apple Health

MetricBridge Apple Health

本地服务
healthexport.dev健康医疗10今天更新

关于 MetricBridge Apple Health

MetricBridge Apple Health 是本地 MCP 服务,可让 Agent 查询导出的 Apple Health 数据。它面向希望分析个人健康记录的用户,提供只读访问,且不会向服务器发起网络请求。

主要功能

  1. 01查询 194 项 Apple Health 指标
  2. 02提供 16 个只读工具和 22 个提示词
  3. 03比较趋势与不同时间段
  4. 04结果包含覆盖范围、单位和日期
  5. 05读取本地导出文件,不发起网络请求

适用场景

  1. 01比较本周与上周的 HRV
  2. 02按日期查看睡眠或锻炼记录
  3. 03检查导出数据的新鲜度和指标覆盖

MCP 相关

该 MCP 服务通过本地 stdio 向 MCP 客户端提供 Apple Health 指标、锻炼、睡眠片段、事件、个人资料上下文及相关分析工具。数据从本地导出文件读取。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmhealth-export-mcp1.8.0
mcpbhealth-export.mcpb1.8.0

工具

16

收录的工具列表 · 更新于 今天

此工具无需参数。

详细介绍

health-export-mcp

为你自己的 Apple Health 数据提供的 MCP 服务。 通过本地 stdio 提供 194 项指标、16 个只读工具和 22 个提示词,零依赖、无需账号,数据不会经过我们的服务器。你的 Agent 会收到带有单位、日期范围和覆盖情况的 JSON,并根据你的数据作答。

npm CI npm provenance dependencies: 0 License: MIT Glama score

文档和各客户端配置:healthexport.dev/mcp · Agent 可通过 SKILL.md 运行设置 · 隐私:服务只读取本地文件,不发起网络请求,因此你的健康数据不会通过它传给我们或云端 AI。

安装:一条命令

claude mcp add health-export -- npx -y health-export-mcp

在 Mac 上,这就是全部安装步骤:从 1.7.3 开始,服务会自动找到 MetricBridge app 的 iCloud Drive 文件夹。在 Windows 或 Linux 上,或者导出文件位于其他文件夹时,请在 -- 前添加 --env "HEALTH_DATA_DIR=/path/to/folder"。需要 Node.js 18 或更高版本。**Claude Desktop:**改为打开 health-export.mcpb(无需 JSON,也无需将 Node 放入 PATH)。Cursor、VS Code、opencode、OpenClaw、Hermes:参见 AGENTS.md。

然后询问 “使用 health-export:我本周的 HRV 与上周相比如何?” Agent 会调用 get_trends,并获得包含来源信息的数据:单位、准确日期范围、每个时间窗口是否完整,以及导出文件包含多少历史数据。以下是 1.7.3 的实际输出(来自内置 --demo 数据集,该数据集为合成数据,因此可以公开发布;真实导出文件会返回相同字段,但没有水印):

[SYNTHETIC DEMO DATA] {"metric":"heart_rate_variability","unit":"ms","window":7,"recent":50.859,"prior":51.306,
 "change":-0.447,"changePercent":-0.871,"direction":"flat","recentRange":{"from":"2026-08-12","to":"2026-08-18"},
 "recentDays":7,"priorDays":7,"windowSatisfied":true,"coverage":{"firstDate":"2025-07-15","lastDate":"2026-08-18","days":400}}

还没有 iPhone? 使用 claude mcp add health-export-demo -- npx -y health-export-mcp --demo,即可提供带水印的合成数据集;无需在手机上安装任何东西,就能在 30 秒内试用所有工具。

使用你的真实数据(首次约需 5 分钟,需要 iPhone)

  1. 导出。 在 iPhone 上安装 MetricBridge,允许读取 Health 数据,然后轻点 立即导出。数据会写入 iCloud Drive(或某个文件夹,或你的 LAN)中的 .health-cache.json。该应用提供 7 天免费试用,之后一次性购买($24.99),无需订阅。本服务采用 MIT 许可证且免费。
  2. 连接。 使用上面的一条命令(Claude Code)、.mcpb(Claude Desktop),或 AGENTS.md 中适用于你客户端的代码块。
  3. 确认文件已到达。 npx -y health-export-mcp --doctor 会显示所选文件夹及选择原因、每个文件的时间,以及数据新鲜度。iCloud 可能需要几分钟才能将新的导出文件同步到 Mac。

Apple Health 将数据导出到 iCloud、某个文件夹或你的 LAN;health-export-mcp 读取数据,并为你的 AI Agent 提供 16 个查询工具


什么是 health-export-mcp?

这是一个 MCP 服务,可将 Apple Health 导出数据转换为工具,让你的 AI Agent 能用自然语言查询 HRV、睡眠、静息心率、步数、锻炼、VO₂ max 等 180 多项数据。

  • **适用人群:**希望 AI 能基于自己的真实健康数据进行推理,而不是过时 CSV 的任何人。
  • **它不是什么:**云服务。数据不会经过开发者的服务器,只会发送到你指定的位置。
  • **设置:**将服务指向导出的数据,并将其添加到你的 AI 客户端。
  • 数据来源:MetricBridge iOS 应用(原名 Health Export AI,可在 App Store 下载)会写入此服务读取的导出文件。服务在 serverInfo 中仍将自身报告为 health-export-ai,npm 包和仓库名称也保持不变。

刚刚导出,但 Mac 还没收到? iCloud 可能需要几分钟才能同步文件, 因此在应用中轻点「运行」60 秒后检查,仍可能看到旧的 时间戳。get_mcp_status 会报告 lastDataDate 和日内的 lastWrite,这是判断“仍在同步”还是“尚未送达”的 最快捷方式。

无需 iPhone 即可试用:npx -y health-export-mcp --demo(或在克隆的仓库中运行 node server.mjs --demo)会提供一个确定性的合成数据集(400 天的数据、锻炼、事件、睡眠时段),每个回答都会标记为合成数据。也可以运行 npm test 来写入示例缓存并测试每个工具。


将 Apple Health 连接到 AI Agent:快速入门

1. 开始传输 Apple Health 数据

配套的 iOS 应用 MetricBridge 会以只读、自动、私密的方式导出 Apple Health 数据。对于此 MCP 服务,请将数据导出到它可以读取的位置:

在 App Store 下载 MetricBridge

目标位置说明
iCloud Drive(默认)Mac 会自动读取已同步的文件夹
本地文件夹任何会同步到 Mac 的文件夹(Dropbox、Google Drive、OneDrive、……)
局域网(HTTP / WebSocket)直接推送到服务,通过 Tailscale 使用效果很好

使用非 MCP 工具(ChatGPT、n8n、Home Assistant)?此应用也可以 POST 到这些工具可直接读取的webhook,详见兼容工具。

2. 将服务添加到你的 Agent

最快方式,一条命令(Claude Code):

claude mcp add health-export -- npx -y health-export-mcp
# Windows, Linux, or an export outside iCloud Drive:
claude mcp add health-export --env "HEALTH_DATA_DIR=/path/to/folder" -- npx -y health-export-mcp

-- 之前的所有内容都是 claude mcp add 的选项,之后的内容是启动服务的命令。在 Mac 上,若未设置 HEALTH_DATA_DIR,服务会读取应用的 iCloud Drive 文件夹(1.7.3+);如果手动将其设为该文件夹,请用双引号括起来(文件夹名称中含有空格),并使用 $HOME,因为 Shell 不会展开加引号的 ~。添加 --scope user 可让服务在每个项目中都可用(默认范围仅限当前项目)。使用 claude mcp list 检查。

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json),以及任何接受 mcpServers 块的客户端:

{
  "mcpServers": {
    "health-export": {
      "command": "npx",
      "args": ["-y", "health-export-mcp"]
    }
  }
}

在 Mac 以外的平台使用,或指定其他文件夹时,请在条目中添加 "env": { "HEALTH_DATA_DIR": "/path/to/folder" }(服务会展开开头的 ~)。npx -y 会在运行时获取已发布的软件包,无需安装提示(npm 会验证软件包完整性),因此无需克隆或使用绝对路径即可在任何地方运行。服务会自行展开 HEALTH_DATA_DIR 开头的 ~,因此 JSON 中可以保留它。更倾向于固定到经过审查的本地检出版本?请使用 "command": "node", "args": ["REPLACE_WITH_ABSOLUTE_PATH/server.mjs"],并在仓库内运行 node -e "console.log(process.cwd()+'/server.mjs')" 获取路径。 或者跳过 JSON,直接将 health-export.mcpb 拖到 Claude Desktop → Settings → Extensions。

从克隆版本自动配置:

git clone https://github.com/PhilipAD/health-export-mcp.git
cd health-export-mcp
node apply-mcp-config.mjs     # detects installed clients and writes the config for you

**Cursor / VS Code:**运行 node gen-deeplinks.mjs,即可生成一键安装链接。 **opencode / OpenClaw / Hermes:**参见 AGENTS.md,其中提供了每个客户端对应的确切配置块,格式相同。

3. 向你的 Agent 提问

重启客户端并试试:

“使用 health-export:我本周的平均 HRV 与上周相比如何?”


兼容 Claude、Cursor、ChatGPT、OpenClaw、Hermes

客户端 / Agent集成方式方法
Claude Code原生 MCPclaude mcp add ... -- npx -y health-export-mcp
Claude Desktop原生 MCP.mcpb 包,或 mcpServers 块
Cursor原生 MCP一键深层链接,或 ~/.cursor/mcp.json
opencode原生 MCPopencode.json 中的 mcp 块
OpenClaw原生 MCP将服务配置块添加到 MCP 配置中
Hermes原生 MCP将服务配置块添加到 Agent 的 MCP 配置中
VS Code(Copilot / Continue)原生 MCP一键深层链接
ChatGPT · Gemini · GrokWebhook*使用应用的 webhook 导出
n8n · Home AssistantWebhook*在导出的 JSON 上触发自动化

*MCP 客户端通过标准输入/输出直接查询此服务。ChatGPT / Gemini / Grok / n8n / Home Assistant 不支持 MCP,而是通过 iOS 应用中经令牌验证的 webhook 导出,使用相同的 Apple Health 数据。


16 个 MCP 工具

完整参考文档(含请求/响应示例):healthexport.dev/mcp。

工具功能
get_mcp_status健康检查:数据来源、指标/锻炼次数、已存在的上下文文件、最新数据日期,以及 freshness 摘要。请先调用。
get_freshness导出数据的时效性:根据指定阈值判断是否 stale(默认 26 h、HEALTH_STALE_AFTER_HOURS 或 maxAgeHours),并提供 age_hours、as_of、last_data_date 和各文件的写入时间。规则与 cron 的 status --max-age 门控相同。
list_metrics所有可用指标及其单位、天数和日期范围。
get_health_metrics指定指标(或所有指标)在日期范围内的每日数值,以及聚合结果(avg/sum/min/max/latest)。支持 filterDays(仅限有记录事件的日期,并支持 negate)。
get_trends对比最近 N 天与此前 N 天的窗口:变化值、变化百分比和方向。支持 excludeTravelDays。
compare_periods对比某项指标在任意两个日期范围内的数值(A 与 B),或通过 anchor: {eventId, days} 围绕已记录事件进行对比(事件当天不计入任一侧)。
get_structured_export为所选指标/日期范围提供简洁的 JSON,并支持使用游标分页。
get_intraday从应用的每小时自动化任务获取今天逐小时的数据窗口(health-intraday.json,应用 1.4+),每次运行时替换。
query_health_data自然语言便捷查询:例如 “上个月的平均 HRV”,并返回结构化结果。
list_events已记录的上下文事件(用药、习惯、就诊、生活、轮班、发作、旅行),支持按类型/标签/日期筛选。
get_profile用户选择提供的上下文字段(状况、用药、目标、过敏、备注),以及 presentFields。未提供的字段会被省略,绝不会显示为“无”。
get_workouts按活动/日期查询锻炼记录并支持分页;包含心率、跑步动态、骑行功率、间歇,以及导出时提供的 hasRoute。
get_sleep_sessions按醒来日期归属的聚类睡眠时段;拆分的夜间睡眠按原样返回。
get_cycle_context根据已记录的经期开始日期推导周期日和大致阶段。绝不进行预测。
correlate_metrics计算两个指标之间 0..3 天滞后的 Pearson 相关性。始终说明这是相关关系,而非因果关系。
resolve_metric为任意拼写(steps、StepCount、Body Weight、hrv)提供规范名称和单位、带有精确公式的单位变体、可选的 {value, unit} 转换结果,以及导出数据是否包含该指标。对于含义模糊的词,会返回候选项,绝不猜测。数据工具接受相同的别名,并报告 resolvedFrom。如果导出数据包含按来源归因的信息(写入每日数据点中的 src/by 字段和 health-sources.json 的应用构建版本,缓存架构次版本为 2),答案会添加 sources 区块,列出为导出数据提供信息的设备、每项指标采用的数据来源及优先级规则;sourceMerge 会显示数据不一致的情况。较旧的导出会报告该信息不可用。

**覆盖范围:**涵盖活动、心脏、HRV、行动能力、呼吸、身体、睡眠、听力和营养等领域的 194 项 Apple Health 指标,以及锻炼记录。数据答复会提供真实的 coverage 区块;单项指标的答复会将窗口内已记录的事件列为 segmentBoundaries,因此跨越用药开始或生活变化的平均值不会被误认为同一阶段的数据。

数据文件

每日缓存(.health-cache.json)和锻炼缓存会与可选的上下文文件结合使用。这些文件均为只读且全部可选:health-events.json(记录入口)、health-profile.json(自愿提供的上下文)、health-sessions.json(睡眠时段)、health-cycles.json(已观察到的周期开始日期)、health-days.json(时区变更日志)。如果文件不存在,系统会报告 available:false 并附上说明,绝不会将其视为“无数据”。格式请参阅:docs/SCHEMA-CONTRACTS.md。

有两种值得了解的用法:从你自己的 AI 查询父母的 Apple Health 数据(先征得同意,父母的手机是数据权威来源),以及通过 Shortcuts 将数据写入 Apple Health(服务和应用始终严格只读)。

MCP 提示词

该服务通过 prompts/list / prompts/get 提供 22 个提示词:每日简报、每周回顾、就诊准备、上次就诊后有哪些变化、睡眠质量与规律性、HRV 趋势、训练与比赛周回顾、各区间时长、n-of-1 实验、用药前后对比、GLP-1 剂量阶梯对比、戒酒里程碑、轮班区段对比、兼顾旅行因素的月度回顾、考虑周期因素的趋势解读、照护者签到、血糖日摘要、长期活动叙述、数据覆盖审计,以及结合个人档案的上下文引导。每个提示词都会先如实说明数据覆盖情况,绝不会将数据转化为诊断。

演示模式

node server.mjs --demo(或 HEALTH_DEMO=1)会提供一个确定性的合成数据集:约 15 项指标,覆盖 400 天;30 次包含间歇训练的锻炼;8 个事件;一份个人档案;60 个睡眠时段;周期开始日期和一次时区变更,所有数据均以固定日期为基准,并使用带种子的 PRNG。每个回答都会附带 demo: true 和 [SYNTHETIC DEMO DATA] 文本前缀,因此演示输出绝不会被误认为真实导出数据。

命令行工具
node server.mjs --doctor            # diagnostics: files, sizes, schema, freshness, pairing
node server.mjs status --max-age 24 # exit 0 if data is fresh, 1 if stale (cron gate)
node server.mjs receive             # standalone LAN receiver (binds 127.0.0.1 by default)
node server.mjs --help

AI 查询示例

"What has my resting heart rate done over the last 30 days?"
"Compare my deep sleep this week vs last week."
"Is my VO₂ max trending up or down this quarter?"
"Give me a clean JSON export of HRV, RHR and sleep for the last 14 days."
"Correlate my step count with my sleep duration this month."

用例

  • **AI 健康教练:**让 Agent 基于你真实的 HRV、静息心率和睡眠数据进行分析,并据此建议何时加大训练强度、何时恢复,而不是提供泛泛的建议。
  • **训练负荷分析:**提取锻炼、VO₂ max 和心率趋势,让 Agent 标记训练过度、绘制体能进展,并为训练阶段安排节奏。
  • **睡眠相关性:**让 Agent 分析深度睡眠时长与步数、咖啡因、较晚的锻炼或屏幕使用时间之间的相关性,看看哪些因素往往与更好的夜间睡眠相伴(相关性,不代表因果关系)。
  • **量化自我追踪仪表板:**将任意指标集和日期范围的干净 JSON 直接提供给笔记本、电子表格或由 LLM 构建的仪表板,用于个人自我追踪。
  • **个人研究与实验:**开展 n-of-1 实验(补充剂、日常习惯或方案变更),让 Agent 对比 194 项指标在变更前后的时段,看看发生了哪些变化。

正在构建健康或教练产品?

该服务会读取由 MetricBridge iOS 应用在用户自己的设备上写入的文件,数据不会经过任何集中式健康数据处理器。同一应用也可以将签名后的 JSON(Standard Webhooks v1、已发布的 JSON Schemas)直接 POST 到你的端点,让用户将自己的 Apple Health 数据带入你的产品,无需在你的应用中集成 SDK,也无需由任何供应商的服务端持有数据。方案、固定价格和适用范围:healthexport.dev/platforms。集成指南和零依赖一致性测试工具包:healthexport.dev/docs/platforms。 仅适用于健康与健身领域,并由最终用户主动使用;不适用于临床或 HIPAA 场景。


为它提供数据的应用

MetricBridge 仪表板    194 项 Apple Health 指标    导出到 iCloud、文件夹、局域网或 webhook

MetricBridge 会自动将你的 Apple Health 数据导出给你的 Agent。

在 App Store 下载 →


隐私与安全

服务端从导出数据中读取的唯一非健康信息是 _meta.license,这是应用写入的标记,只有两种格式:{"state": "trial", "daysRemaining": N} 或 {"state": "unlocked"}。试用期间的新导出会在 get_freshness 中添加一句说明试用何时结束;已解锁的导出则不会添加任何内容。整个过程不涉及网络调用,也不会向任何地方发送数据。

  • 只读。 服务端只读取你导出的数据,不会接触 HealthKit,也不会写回数据。
  • 本地优先。 服务通过 stdio 在你的设备上运行。整个流程中没有开发者服务端。
  • 可选配对。 将 PAIRING_SECRET 设置为 iOS 应用显示的代码(设置 → Agent 配对),即可限制访问。
  • 加密导出(可选)。 如果你在 iOS 应用中开启了导出加密,请将 HEALTH_EXPORT_PASSPHRASE(或 HEALTH_EXPORT_PASSPHRASE_FILE)设为相同的密码短语,服务端便会在你的设备上解密。请参阅加密导出。
  • 无遥测。 服务端不会发出网络请求。get_mcp_status 始终包含一个指向配套应用网站的静态链接(以及其 App Store 页面),因此可以追溯该桥接工具的安装来源。两个链接都带有固定的活动标签(utm_source=mcp、utm_medium=agent-tool、utm_campaign=mcp-unlock;ct=mcpserver、ppid=…),对所有用户都相同,不包含任何与你或你的数据有关的信息;只有你选择打开其中一个链接时才会产生统计。
  • 可审计。 零运行时依赖,约 4,000 行纯 ES 模块代码,且无需构建步骤:npm 上发布的内容就是此仓库中的内容,npm 来源信息会将每个压缩包关联到构建它的提交和工作流。
  • 已签名的发布版本。 托管的构件均使用 minisign 签名并附有校验和,请参阅验证发布版本。

加密导出

iOS 应用可以使用你选择的密码短语加密导出内容(“设置” > “导出加密”,按目标位置分别开启:iCloud Drive、文件夹、你的服务或本地网络)。在服务端设置相同的密码短语后,此机器上的每个文件都会在内存中透明解密:

HEALTH_EXPORT_PASSPHRASE='your passphrase' HEALTH_DATA_DIR=... node server.mjs
# or keep it out of your shell history and process list:
HEALTH_EXPORT_PASSPHRASE_FILE=~/.config/metricbridge/passphrase HEALTH_DATA_DIR=... node server.mjs

如果两种方式都已设置,则以 HEALTH_EXPORT_PASSPHRASE 为准;文件末尾的一个换行符会被忽略,空值视为未设置。.mcpb 包含一个可选的 导出密码短语 字段。无论是否设置密码短语,明文导出都能正常工作。密码短语缺失或错误,或文件未通过完整性检查时,系统会如实报告(get_mcp_status 会显示 encrypted: true 以及原因,--doctor 会打印一行 encryption:),绝不会报告为“无数据”。密码短语绝不会被记录到日志或回显。

LAN 接收器(HEALTH_LISTEN=1)使用同一个变量解密加密推送,并以 422 响应,同时返回机器可读的 reason(passphrase_missing、passphrase_mismatch、tampered、malformed、unsupported_version、passphrase_file_unreadable、encryption_required)。该链路中的配对令牌通过纯文本 http 标头传输,因此应用加密该链路后,请设置 HEALTH_REQUIRE_ENCRYPTED=1 以拒绝明文推送。要自行解密一个请求体(例如你运行的 webhook 或脚本):

HEALTH_EXPORT_PASSPHRASE='...' node envelope.mjs open body.json     # prints the decrypted JSON

格式(metricbridge.enc v1、envelope.mjs,仅使用 node:crypto):一个 JSON 对象 {format, v, alg: "A256GCM", kdf: "PBKDF2-HMAC-SHA256", iter, salt, kcv, nonce, ct}。 master = PBKDF2-HMAC-SHA256(NFC(passphrase), salt[16], iter)(600,000 次迭代,即 OWASP 建议值);通过 HKDF-SHA256 从中派生 AES-256-GCM 密钥和一个 8 字节的密钥校验值;每条消息使用随机的 12 字节 nonce;所有标头字段都作为字符串绑定为 AAD:metricbridge.enc|v=1|alg=A256GCM|kdf=PBKDF2-HMAC-SHA256|iter=<n>|salt=<b64>|kcv=<b64>|nonce=<b64>。Base64 使用带填充的规范形式。test/fixtures/ 中存放由 iOS 应用的 Swift 编码器和本模块生成的信封;envelope.test.mjs 验证两者都能解密,并能逐字节重新生成。

**保护范围:**目标位置(iCloud Drive、同步文件夹、webhook 主机的存储)中的静态导出数据、传输中的 LAN 推送,以及每个密封文件的完整性。**不保护:**已解锁的手机、本机(其中保存着密码短语)、元数据(大小、时间)、整个密封文件的回滚或重放、通过应用手动分享的文件,以及较弱的密码短语(任何拿到文件的人都可以离线猜测;应用要求至少 8 个字符)。


验证发布版本

托管在 healthexport.dev/mcp/ 的服务端构件(setup skill 使用)均采用 minisign 签名,并且每个下载文件都经过 SHA-256 校验。签名公钥发布在此仓库中(minisign.pub)以及 SKILL.md 中。请从此处固定公钥,不要只从网站获取,这样即使网站单独遭到入侵,也无法同时替换构件和公钥。

PUBKEY='RWS6TxVWSKUblYkx7Db6ZpmvHALwHpznZpjaED/FlZj+PpxSlel0MxHZ'   # = minisign.pub in this repo
curl -fsSL https://healthexport.dev/mcp/SHA256SUMS         -o SHA256SUMS
curl -fsSL https://healthexport.dev/mcp/SHA256SUMS.minisig -o SHA256SUMS.minisig
minisign -Vm SHA256SUMS -P "$PUBKEY" || { echo "signature INVALID, do not run"; exit 1; }   # fail closed
curl -fsSL https://healthexport.dev/mcp/server.mjs -o server.mjs
shasum -a 256 --ignore-missing -c SHA256SUMS || { echo "checksum mismatch, do not run"; exit 1; }

上方固定公钥并通过校验和验证的下载方式是安全性更严格的路径。npx -y health-export-mcp 则会在运行时解析 npm 上发布的最新版本(npm 会提供自身的包完整性校验)。GitHub 发布版本包含 SHA256SUMS 文件和 CycloneDX SBOM(*.cdx.json);维护者在本地签署该发布版本后,还会附上使用同一密钥生成的 SHA256SUMS.minisig,因此依赖它之前请先检查该文件是否存在。完整政策(包括 npm 来源证明以及如何私下报告漏洞):SECURITY.md。安全概述:https://healthexport.dev/security。


要求

  • Node.js ≥ 18(node -v)。
  • 一个包含由 MetricBridge 导出的 .health-cache.json 的文件夹,或者运行 npm test 生成一个示例文件。
  • 与 MCP 兼容的客户端(Claude Desktop、Cursor、opencode、OpenClaw、Hermes、VS Code),或任何能够读取 webhook 导出的工具。

常见问题

如何将我的 Apple Health 数据导入 Claude / ChatGPT / 我的 AI Agent? 安装 health-export-mcp,使用 MetricBridge iOS 应用导出 Apple Health 数据(导出到 iCloud、文件夹或局域网),然后将 MCP 服务添加到你的 AI 客户端。之后,你的 Agent 就可以用自然语言查询 Apple Health 指标。(ChatGPT 等非 MCP 工具会读取应用的 webhook 导出数据。)

我的健康数据会发送到服务端吗? 不会发送给我们。MCP 服务在本地运行,只读取你配置的导出文件或端点,整个流程不会经过开发者的服务端。你可以自行选择 iOS 导出的目标位置(iCloud、局域网或 webhook)。

支持哪些 Agent? 支持任何 MCP 客户端,也原生支持 Claude Desktop、Cursor、opencode、OpenClaw、Hermes 和 VS Code。ChatGPT、Gemini、Grok、n8n 和 Home Assistant 可通过 webhook 使用同一份数据。

我需要 iOS 应用吗? 如果要使用你自己的数据,需要:服务会读取 MetricBridge 应用写入的文件,不会直接访问 HealthKit。若想先进行评估,可使用 --demo 提供带水印的合成数据集,无需应用或 iPhone。


故障排除

  • **“未找到指标”:**运行 npx -y health-export-mcp --doctor。它会显示服务选择的文件夹及其原因(HEALTH_DATA_DIR、Mac 上的 iCloud 默认位置,或当前目录),以及其中是否存在 .health-cache.json。确认应用至少导出过一次;get_mcp_status 会显示相同的数据源和最新日期。
  • **客户端中看不到服务:**在终端运行 npx -y health-export-mcp --doctor。如果在那里能正常运行,说明客户端找不到 npx(Claude Desktop 使用来自 nvm 或 Homebrew 的 Node 时很常见):请使用 .mcpb,或将 "command" 设为 which npx 返回的完整路径。然后完全退出并重新打开客户端。
  • **导出一周后停止:**应用的免费试用期已结束。get_freshness 会报告导出数据已过期,并提供解锁页面链接;解锁应用后,导出会恢复,此处无需更改。
  • **数据已锁定错误:**重启后,导出文件在首次解锁前受保护;请先解锁设备一次。

在本地运行

# Node ≥18, no install needed
HEALTH_DATA_DIR=~/Library/Mobile\ Documents/iCloud~ai~healthexport~app/Documents node server.mjs

# integration test, writes a 14-day sample cache and exercises every tool
npm test

stdio 传输(以换行符分隔的 JSON-RPC 2.0),这是通用的 MCP 传输方式。也可以设置 HEALTH_LISTEN=1,让同一进程接收来自 iOS 应用的局域网推送(参见 receiver.mjs)。


工作原理

iOS 应用以只读方式读取 Apple Health,并将精简的 .health-cache.json(以及可选的上下文文件)写入你选择的目标位置。此服务会读取这些文件,并通过 MCP 提供上述 16 个工具。无需桥接、Docker 或数据库:只需文件和 stdio。

Apple Health → MetricBridge (iOS) → .health-cache.json → health-export-mcp → MCP client → you

相关项目

生态中还有其他 Apple Health MCP 服务,可根据你的设置了解:

**health-export-mcp 的不同之处:**iPhone 应用会在后台保持导出数据为最新状态,因此无需手动导出 export.xml,也无需重新导入;服务没有任何依赖,无需 Docker、数据库或 Mac 应用;每个回答都会附带单位、日期范围和覆盖范围;整个流程均为只读。


相关信息

如果这对你的设置有帮助,点个 ⭐ 能让其他人更容易找到它。

License

MIT, see LICENSE. Contributions welcome.


评论

支持 Markdown

第一次接触 MCP?

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

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