我用Claude接Apple健康试了试,结果真没想到

体检报告上那些数字,单独看都正常,凑一块儿就让人犯嘀咕:静息心率是不是偏高?深睡比例够不够?Apple 健康里其实全有,问题是它只给你看图,不给你解释。让 Claude 直接读这些数据、用聊天的方式问,是 MCP(Model Context Protocol)能落地的一个具体场景。这篇把路线、配置、提问方式和边界一次说清。

为什么值得折腾这一趟

Apple 健康 App 的记录粒度不低,心率、睡眠、步数、 workout 都在,但它的呈现方式是”图表 + 单点数值”。你想知道”最近四周深睡时长和静息心率有没有同向变化”,得自己翻页对照。MCP 的思路是把导出的健康数据放进一个本地数据库,再把这个数据库以工具的形式挂给 Claude——Claude 不直接读你的文件,而是通过服务端提供的查询工具去取数。社区里已经有几个现成实现,比如 apple-health-mcp(把 export.zip 载入 SQLite 内存库)、@neiltron/apple-health-mcp(走 CSV + DuckDB 路线)、以及自托管的 marrow-mcp。本文以 apple-health-mcp 为主线,CSV+DuckDB 作为备选补充。

准备:导出数据和装服务端

iPhone 上打开健康 App,点右上角头像,滑到底部点”导出所有健康数据”,确认后等几分钟,会生成一个 export.zip。用 AirDrop 或文件传输丢到 Mac 上,记住路径。

服务端安装按项目文档有两种方式:临时运行用 uvx apple-health-mcp --input /绝对路径/export.zip,长期装用 uv tool install apple-health-mcp 后再执行同样的命令。注意文档示例里写的是 ~/Downloads/export.zip,但配置到 Claude Desktop 的 JSON 里时,建议统一写成展开后的绝对路径(如 /Users/你的用户名/Downloads/export.zip),避免不同启动环境对 ~ 解析不一致导致找不到文件。这个服务端的工作方式是把导出文件读进一个内存 SQLite 数据库,进程退出数据即释放,不落盘成持久库——这点和”塞进本地数据库长期保存”是两回事,别混。

CSV 路线则是另一套:iPhone 上装 Simple Health Export CSV 这类第三方导出应用,把健康数据导成按 HKQuantityTypeIdentifier*.csv 命名的文件目录,再用 npx @neiltron/apple-health-mcp 拉起服务端,配置项是 HEALTH_DATA_DIR 指向那个目录,可选项还有 MAX_MEMORY_MB 和 CACHE_SIZE。两条路线二选一即可,前者省事,后者适合想把数据留在 CSV 里自己掌控的情况。

接上 Claude:配置文件写什么

person reviewing sleep chart on laptop screen

Claude Desktop 的配置在 macOS 上是 ~/Library/Application Support/Claude/claude_desktop_config.json。在 mcpServers 下加一条:

{
  "mcpServers": {
    "apple-health": {
      "command": "uvx",
      "args": ["apple-health-mcp", "--input", "/Users/你的用户名/Downloads/export.zip"]
    }
  }
}

保存后完全退出 Claude Desktop 再重开,工具菜单里会出现这个服务端的工具列表。据项目文档,它提供 list_metrics()(列出所有记录类型及条数)、list_workout_types()、summary(metric, period)(按天/周/月聚合,返回 count、avg、min、max、sum)和 query(sql)(只允许 SELECT)。关于授权:MCP 客户端对工具调用的确认行为因版本和客户端而异,Claude Desktop 在部分场景会弹出工具调用确认,不是”写了配置就静默放行”,第一次调用时留意界面提示即可。配置文件本身决定的是”哪些服务端可用”,不等于绕过客户端的调用确认机制。

实战提问:先校验再分析

配好之后别急着问结论。第一步让它调 list_metrics(),看返回的记录类型和条数是否和你手机上的数据量级对得上——比如步数记录条数应该和导出时间跨度大致匹配。这一步是防止路径写错、读了个空库还以为分析出了结果。

确认有数之后,再用 summary 做趋势。比如问”用 summary 工具按周聚合 HeartRate,给我最近八周的 avg 和 max”,或者”按天聚合 StepCount 看最近 30 天”。这类问题对应的是服务端现成的聚合函数,返回的是结构化数字,比让模型自由发挥可靠。想让 Claude 自己写 SQL 也可以,query 工具接受只读 SELECT,schema 是 records(type, source_name, unit, value, start_date, end_date) 和 workouts(...),按这个结构提问即可。验证读对没读对,最简单的办法是拿某一周的步数总和跟 iPhone 健康 App 里同期的周均值对一下,数字接近说明链路通了。

几个容易踩的地方

隐私边界要自己划清楚。apple-health-mcp 是本机进程读本地文件,数据不出机器;但如果你选的是把数据同步到 Supabase/Postgres 再挂 MCP 的方案(如 health4ai),那数据就进了你自有的云数据库,配置前想清楚这个取舍。另外,导出的 export.zip 里包含相当完整的健康记录,别随手丢在共享目录或同步盘里。

person reviewing sleep chart on laptop screen

数据精度别过度解读。Apple Watch 的睡眠分期、心率采样都有设备和算法误差,周与周之间几个百分点的波动说明不了什么。让模型做的是”描述趋势”,不是”下诊断”。提问时明确说”只做数据描述,不给医疗建议”,比事后纠正省事。社区项目里 vaultbeat-apple-health 就在 MCP prompts 里内置了”描述而非处方”的风格约束,说明这个坑不是个例。

还有一点:这些 MCP 服务端都是社区项目,不是 Apple 或 Anthropic 的官方能力。功能、参数名以各自仓库文档为准,升级后配置项可能变,出问题先看 README 的 troubleshooting 段落。

常见问题

数据会上传吗?
取决于你选哪个服务端。apple-health-mcp 和 @neiltron/apple-health-mcp 都是本机进程读本地导出文件,不上传;health4ai 那类走 Supabase/Postgres 的方案会把数据放进你自己的云库。选之前看清楚架构再配。

没有 Mac 能玩吗?
Claude Desktop 的配置文件路径以 macOS 为例,Windows 上对应的是 %APPDATA%\Claude\claude_desktop_config.json,逻辑一样。但 Apple 健康导出本身需要 iPhone 操作,导出后的 zip 传到哪台机器处理都行。纯 iPad 或纯 Windows 环境,卡点主要在客户端是否支持 MCP 配置,以及能不能跑起 Python 或 Node 服务端。

本文工具直达

想亲自上手体验?

立即体验 Claude →

金正K5专业录音笔 取证超长待机高清降噪 录音豆设备

京东去看看

延伸阅读