Marrow vs MetricBridge: Free On-Phone MCP vs a Zero-Dep Local Server

Both keep your Apple Health data on hardware you own. Both speak MCP. What separates them is not the price, it is which one your agent can actually reach, from where it runs, when you ask.

By MetricBridge · Updated 29 September 2026 · ~6 min read

Quick answer. Marrow is free and turns your iPhone into a read-only MCP endpoint on your own Wi-Fi, plus an optional self-hosted Python mirror for when the phone is away. MetricBridge is a $24.99 one-time unlock: 190 metrics written to a JSON file your iPhone keeps fresh, read by a zero-dependency Node server over stdio, with on-device Ask, provenance cards and a Weekly Brief on the same data. Both are local and account-free. Reach comes down to where the agent runs, whether your phone is unlocked, and whether you want an HTTP endpoint or a file.

What each one actually is

Marrow (skeletonarmy.tech) is a free iOS 17+ app that reads 178 series: 172 Apple Health metrics plus its own meal diary and a set-by-set weightlifting log. It reaches an agent two ways. Switch on the server under Export then Agents and it binds to your local network, serving seven read-only tools over Streamable HTTP with a bearer token. Or run marrow-mcp, a self-hosted companion: one Python file, standard library only, keeping a SQLite mirror on your machine so agents query 24/7 with the phone in your pocket. It is MIT licensed, v0.2.4 on PyPI, on GitHub since 16 August 2026.

MetricBridge (npm: health-export-mcp) is a $24.99 one-time unlock. The iOS app writes .health-cache.json plus an hourly health-intraday.json to a folder you pick: iCloud Drive, a synced folder, your LAN, or a webhook you run. A zero-dependency Node 18 server reads those files and exposes 14 read-only tools and 22 prompts over stdio. No database, no import step. On the phone, Ask answers questions on-device with provenance cards, and the Weekly Brief summarizes the same data on a schedule.

Which one can your agent actually reach?

This is where the designs diverge.

  • Marrow, on-device server. The endpoint is http://<phone-ip>:21212/mcp. Your agent must be on the same local network. Claude Desktop or Cursor on your Mac, same Wi-Fi, works. An agent on a remote or hosted box does not, and no config fixes that, because the server is local-network only.
  • Marrow, self-hosted mirror. Run python3 marrow_server.py, get a pairing URL, scan it once. Background pushes keep the SQLite mirror current with the app closed, so the agent reaches it regardless of where the phone is. The cost is a machine that stays awake.
  • MetricBridge. The client spawns the server over stdio on the machine it already runs on, and the server reads a file. It does not need your phone awake or on the network at query time, only that the app has synced recently.

Put plainly: if your agent lives on the same Mac and your phone is usually on your desk, Marrow's on-device server is the shortest path to first answer. If your agent runs anywhere else, the mirror or the file path is the one that survives contact with reality.

The locked-phone reality neither one escapes

You will see "reachable 24/7" claims on on-phone MCP servers. Read them closely. Apple's platform security documentation is explicit: HealthKit data sits in the Protected Unless Open data protection class, and access is relinquished 10 minutes after the device locks, returning when you next use a passcode or Face ID.

That is a platform rule, not a vendor choice. A server on the iPhone cannot read HealthKit while the phone is locked, and neither can one beside it. What differs is what happens next: the on-phone server fails the call, the mirror serves the last synced copy, a file snapshot serves what the app last wrote. Degrading to older data is not the same as failing, and you should know which one you bought.

Where Marrow genuinely wins

  • Price. Free, no unlock, no account. If cost decides, the conversation is over.
  • Agent-first onboarding. Its setup page hands your agent a copy-paste prompt that installs the app, turns the server on and writes the MCP config. Better than "export a folder, then edit JSON".
  • Its own logging. The meal diary and set-by-set strength log are Marrow-native, so lifting volume per muscle group or a full nutrient breakdown is in the box.
  • One tool surface, two transports. The same seven tools answer from the phone or from your server.

Where MetricBridge genuinely wins

  • Stdio, so reach is boring. No LAN binding, no IP, no token to rotate, no phone on the network. The client spawns the server; the server reads a file. Same on macOS, Linux and Windows.
  • The on-device answer layer. Ask answers inside the app with provenance cards that show which metrics and which date range produced the answer, and the Weekly Brief summarizes on a schedule. Marrow is a strong data server; it is not an ask-your-data product and does not claim to be.
  • Freshness is a one-call check. A single tool call reports the source, the metric count, the most recent date and whether the hourly window is present, so a stale feed is visible instead of silent:
{
  "ok": true,
  "source": "file ~/Library/Mobile Documents/iCloud~ai~healthexport~app/Documents/.health-cache.json",
  "metricCount": 190,
  "workoutCount": 412,
  "lastDataDate": "2026-09-29",
  "intraday": { "present": true, "lastWrite": "2026-09-29T06:00:11.402Z" }
}

If lastDataDate is not today, your export is not running and the agent is reasoning over old numbers. Every local design needs a check like this, because the failure mode is otherwise invisible.

Same privacy shape, different plumbing. Marrow makes no cloud calls in the read path and its privacy policy says health data stays on the device. MetricBridge's server makes zero network calls of its own and reads a folder you chose. Neither needs an account to answer a question about your own data.

Which one should you run?

  • Pick Marrow if budget decides, your agent shares your phone's network, and you want Marrow's meal and lifting logs in the same feed. Add the mirror when you want access while the phone is away.
  • Pick MetricBridge if you want on-device Ask with provenance plus a Weekly Brief, reach that does not depend on the phone being awake, or one file that works the same on Windows and Linux as on a Mac.
  • Run both if you like Marrow's logging and MetricBridge's answer layer. Different sources, different server names, both tool sets side by side.

190 metrics as JSON, read by a zero-dep server

On-device Ask with provenance cards, a Weekly Brief, and 14 read-only MCP tools. One purchase for everything. $24.99 one-time, no subscription.

Frequently asked questions

Is Marrow free?

Yes. Marrow is a free iOS app with no account and no subscription, and its self-hosted marrow-mcp companion server is MIT licensed on GitHub and PyPI. The cost is the setup: you run the mirror yourself if you want access when the phone is not on your network.

Which Apple Health MCP server can my agent actually reach?

It depends on where the agent runs. Marrow's on-device server is Streamable HTTP bound to your local network, so a client on the same Wi-Fi can reach it and a cloud agent cannot. Marrow's self-hosted mirror and MetricBridge's file plus stdio server both run on the machine the agent runs on, so they are reachable without your phone being nearby.

Do on-phone MCP servers work when the iPhone is locked?

No, and this is an Apple platform rule rather than a vendor choice. Apple's platform security documentation states health data is held in the Protected Unless Open data protection class and access is relinquished 10 minutes after the device locks. Any app, including Marrow and MetricBridge, reads HealthKit again once you unlock with a passcode or Face ID.

MetricBridge price versus Marrow: what do you pay for?

Marrow is free. MetricBridge is a single $24.99 one-time unlock that covers the JSON export, the zero-dependency MCP server, on-device Ask with provenance cards, and the Weekly Brief. It is one purchase, not a subscription, and no part of it is metered or throttled.

Can I run Marrow and MetricBridge at the same time?

Yes. They do not conflict. Marrow serves HealthKit from the phone or from its SQLite mirror, and MetricBridge reads the JSON folder its iOS app writes. Give them different server names in your MCP client config and both tool sets appear side by side.

MetricBridge · Apple Health → your AI agent, privately. · Home · Privacy · Terms · Support