关于 marrow
marrow-mcp 是 Marrow 免费 iOS 应用的自托管伴随服务器,将 Apple Health 数据镜像到本地 SQLite,供 AI Agent 查询。数据保存在自有硬件上,并通过 MCP 提供只读健康数据访问。
主要功能
- 01镜像 178 类健康数据
- 02提供每日摘要与个人基线
- 03查询睡眠、营养、运动和症状
- 04本地 SQLite 存储与后台同步
- 05附带提示词和资源
适用场景
- 01回顾近期睡眠与训练变化
- 02按个人基线解读健康指标
- 03准备就诊时整理健康记录
MCP 相关
通过 Streamable HTTP 提供 MCP 服务,使用 bearer token 验证。配对的自托管服务器提供 13 种只读工具、4 个提示词和 4 个资源;写入工具不会向此类客户端开放。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Marrow Health MCP 服务(marrow-mcp)
让你的 AI Agent 读取你自己的 Apple Health 数据。
Marrow 是一款免费的 iOS 应用,可追踪 178 项健康数据系列——172 种 Apple Health 类型,以及应用自带的饮食日记和 逐组记录的举重日志。这个仓库是它的可自托管配套服务:仅一个 Python 文件,只使用 标准库,可在你自己的硬件上保存数据的 SQLite 镜像,并通过 Model Context Protocol 提供服务,让 Agent 随时随地查询,即使手机放在口袋里也没问题。
这里的任何内容都不会连接云端。数据只会从手机流向你的设备,仅此而已。

运行
pip install "marrow-mcp[qr]" # [qr] adds segno, which draws the pairing QR
marrow-server --port 8800 --data ./data # prints a pairing URL
如果不加 [qr],配对页面会显示配对 JSON,而不是二维码。
也可以从克隆的仓库运行
python3 marrow_server.py # prints a pairing URL
python3 marrow_server.py --port 8800 --data ./data
或者使用 Docker
docker compose up -d
在任意屏幕上打开配对 URL,然后在 Marrow 中依次选择:Export、Server MCP、
Pair with a server,并扫描二维码。此后,即使应用关闭,应用的后台推送也会
让镜像保持最新。应用只会在你自己的网络上通过普通 http 配对(私有或 tailnet IPv4
地址、.local 或 .ts.net 名称、简短的 LAN 名称)。公用地址需要使用 https(--url https://...)。
升级到 0.3.0
停止旧服务,并在同一个 --data 目录下启动新服务。
现有的 mirror.sqlite 会在首次启动时添加新列,--data 中的令牌也会保留,因此手机仍保持配对状态。
Marrow 1.4 记录的组会带有 set_type(work、
warmup、failure 或 drop)。热身组仍会列出,但不再计入训练量或记录;升级前镜像中的
行则会读取为正式组。
连接 Agent
该服务通过 Streamable HTTP 提供 MCP(JSON-RPC 2.0,协议版本
2025-06-18),并使用首次运行时生成、与配对链接一同打印的 bearer 令牌进行身份验证。
Claude Code
claude mcp add --transport http marrow \
http://<server-ip>:8800/mcp \
--header "Authorization: Bearer <mcp token>"
Claude Desktop,一键安装
下载 marrow.mcpb,
双击后,Claude Desktop 会安装扩展并询问 URL 和令牌。无需使用终端。(该软件包是一个位于 mcpb/ 中、体积很小且无依赖的桥接程序。它只会将 Claude 的 stdio 转发到你的 Marrow URL,不做其他操作。)
Claude Desktop(手动配置)、Cursor,或任何使用 mcp.json 的客户端
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<server-ip>:8800/mcp",
"headers": { "Authorization": "Bearer <mcp token>" }
}
}
}
手动检查
curl -s http://<server-ip>:8800/mcp \
-H "Authorization: Bearer <mcp token>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
工具
共有 13 个工具,全部为只读。服务也包含写入工具(记录餐食、锻炼等),但只有在手机注册以启用写回后才会列出这些工具,而目前只有 Marrow Connect 会这样做。通过应用配对的可自托管服务提供这 13 个只读工具,不包含任何 Agent 可调用、会写入你健康记录的工具。
其中 4 个工具会使用应用自身的表达方式回答,并采用与应用主页相同的算法,将数据与个人近期正常水平进行比较(不包括当天数据),让 Agent 一开始就能读取对你而言已经有意义的结果,而不是拿某个数值与总体人群进行比较:
| 工具 | 返回内容 |
|---|---|
daily_brief | 某一天的数据:每项关键指标及其数值和描述(对你而言正常、高于你的正常水平、远低于你的正常水平)、饮食和饮水与目标的对比、前一晚的睡眠、已完成的训练、情绪和症状,以及值得提及的标记 |
baselines | 每项指标对你而言的正常水平:时间窗口内的平均值和波动范围、最新数值的 z 值和描述、7 天平均值,以及按月计算的 90 天趋势 |
what_changed | 最近几天与此前一段时间的对比:有哪些变化、这些变化对你而言有多显著,以及饮食、训练、睡眠和就寝时间的变化,还有开始或停止接收数据的项目 |
data_quality | 镜像中保存的数据及其新鲜度:每项指标的最新日期、覆盖情况、频率、来源和是否已过期,以及日记、睡眠和训练数据的覆盖情况,还有手机上次同步的时间 |
9 个原始数据读取工具:
| 工具 | 返回内容 |
|---|---|
health_summary | 最近几天的活动、心脏、睡眠和营养数据 |
list_metrics | 镜像中的所有指标,包括单位和覆盖情况 |
metric_daily | 任意指标的每日数值,最多 400 天 |
metric_samples | 带时间戳和来源设备的原始记录 |
workouts | 来自所有来源的训练:活动、开始时间、结束时间、时长和来源 |
nutrition_log | 餐食日记:按天记录的所有食物及完整营养详情 |
strength_log | 每组举重记录及其组别类型和估算 1RM、各项运动的进展,以及各肌群的训练量(不包括热身组) |
sleep_log | 按醒来日期记录每晚数据:就寝时间、醒来时间、睡眠时长和各睡眠阶段的分钟数 |
symptoms_and_mood | 症状及其严重程度,以及包含效价、感受和相关对象的 State of Mind 记录 |
每次读取都会从手机上的当天往前取 days 天的数据,或者按手机日历中的日期范围指定 from 和 to。metric_samples 使用 before 分页(填写你已有的最后一条记录的开始时间)。具有输出架构的工具也会返回 structuredContent。
服务还提供 4 个提示词(how_am_i_doing、weekly_review、doctor_prep、log_from_text)和 4 个资源(marrow://today、marrow://metrics、marrow://targets、marrow://quality),供能够展示这些内容的客户端使用。
指标键:list_metrics 显示 Apple 的短名称(active_energy_burned),工具也接受应用自身的键(active_energy、heart_rate_variability),因此从手机切换过来的 Agent 可以继续使用原有术语。
接着问你的 Agent 这样的问题,例如 “我开始晨练后,睡眠发生了什么变化?”,让它去查找答案。
Kits、recipes 和 Claude Code 插件
- kits/:可直接复制粘贴的配置,适用于 Claude Code、Claude Desktop、 Cursor、OpenClaw 和 Hermes Agent。
- recipes/:Marrow Automations 的接收端(应用会按计划将 数据 POST 到任意 URL,即使应用已关闭也可以):Home Assistant、 n8n、通过 Apps Script 接入 Google Sheets、InfluxDB。
- 使用 Marrow 构建: 人们基于这些连接运行的完整项目,从 Body Ops 开始,这是一个适用于 Marrow 发送的各种数据的 Grafana 仪表板。欢迎提交 你的项目。
- Claude Code 插件:运行
/plugin marketplace add MarrowHealth/marrow-mcp然后运行/plugin install marrow-health@marrow。它会添加 Marrow Connect 服务和四个命令(/marrow-health:how-am-i-doing、weekly-review、doctor-prep、log),以及一个了解各个问题该由哪个工具回答的技能。
为什么不使用内置的 Claude 或 ChatGPT 连接器?
Claude(Pro/Max,美国)和 ChatGPT 现在都能原生读取 Apple Health。如果这就是你 所需的全部功能,可以使用它们。但它们的功能止于此服务所能实现的地方:
| Claude / ChatGPT 连接器 | Marrow + 此服务 | |
|---|---|---|
| 适用范围 | 仅限 iOS 应用 | Claude Code、Claude Desktop、Cursor、OpenClaw、Hermes、任何 MCP 客户端,可在任何设备上使用 |
| 可用时间 | 你在手机上使用聊天时 | 全天候,手机放在口袋里,也能通过你自己的设备使用 |
| 模型可见的数据 | 原始 HealthKit 数值 | 与 Apple 自身汇总值核对后的每日数值、饮食日记、逐组训练记录 |
| 数据存储位置 | 他们的云端,按对话隔离 | 你拥有的硬件上的 SQLite |
| 费用 | 订阅 | 免费,MIT |
OpenClaw / Hermes / 家用设备上的任何 Agent。 将 Agent 的 MCP 配置指向带有
Bearer 令牌的服务 URL,具体配置方式与上面的 mcp.json
代码块完全相同。使用 tailscale serve --bg --https=8800 http://127.0.0.1:8800 从局域网外访问,并使用 tailnet URL。
其他接入方式
此服务是 Marrow「导出」标签页中的一种接入方式;若要让 Agent 访问数据,并不一定要使用它:
- 本地 MCP。 Marrow 会直接在 iPhone 上运行 MCP 服务,地址为
http://<phone-ip>:21212/mcp,应用运行时即可响应。无需额外硬件, 即可读取上述七种原始数据。 - 服务端 MCP。 此软件包:在你自己的设备上运行始终在线的数据镜像。
- 自动化。 按计划推送到任意 URL(Home Assistant、n8n 或你自己的 端点)。
- 手动。 通过共享菜单导出 CSV、JSON 和 GPX 文件。
以上四种方式都包含在免费套餐中。所有方式的设置指南: https://marrowhealthapp.com/guides。
Marrow Connect 是托管式 Pro 方案:Marrow 运行数据镜像,ChatGPT、Claude 或 Gemini 可以在手机休眠且无需运行任何程序的情况下读取数据。它是唯一可以代你记录数据的接入方式,但你需要先在应用中启用「允许 AI 写入」。 https://marrowhealthapp.com/connect
安全性
- 两个服务都面向局域网或 tailnet 构建。不要将其端口转发到
公网。 如果需要远程访问,请在前面设置
tailscale serve、Caddy 或同等服务,确保传输使用 HTTPS,并在提供 Bearer 令牌之前 验证设备身份。 --data中存放着两个独立的令牌:.app-token用于接收手机推送的数据,.mcp-token用于 Agent。轮换其中一个不会影响另一个。- 数据写入具有幂等性,并以 UUID 为键,因此重复发送的数据批次不会重复计数。
状态
Marrow 已上架 App Store,支持 iOS 17 及更高版本,并且需要 Apple Health。 在 App Store 下载。
iOS 应用为闭源。此服务则不是,因为你应该能够查看任何要求你在自有硬件上运行的程序。
注册信息
已列入官方 MCP 注册表,
名称为 tech.skeletonarmy/marrow,并已通过 skeletonarmy.tech 的 DNS 验证。
mcp-name: tech.skeletonarmy/marrow
帮助与政策
- Agent 配置指南,提供按客户端划分的完整操作说明
- 支持与故障排除,或发送邮件至 [email protected]
- 隐私政策。简而言之:你的健康数据保留在你的设备上,此服务运行在你拥有的硬件上,且此处的任何内容都不会向我们报告。
- 使用条款
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。