Marrow logo

Marrow

Reads mirrored Apple Health, nutrition, workout, sleep, symptom, and mood data through nine MCP tools.

Install Marrow

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "marrow-4": {
      "command": "uvx",
      "args": [
        "--from",
        "marrow-mcp",
        "marrow-server"
      ]
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

uvx --from marrow-mcp marrow-server

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1d ago.

Overview

The marrow MCP server mirrors Apple Health data from the Marrow iOS app into SQLite on hardware you control. It exposes nine read-only MCP tools over Streamable HTTP, protected by a bearer token, for health metrics, workouts, meals, lifting, sleep, symptoms, and mood. Reach for it when an agent needs ongoing access from a computer, home server, or supported MCP client instead of only from an iPhone chat. The server does not send data to a cloud service, but remote access should use HTTPS through a private network or authenticated proxy.

Use cases

  • Analyze sleep changes alongside workout timing
  • Review daily Apple Health metrics over several months
  • Inspect meals and nutrient details by day
  • Compare lifting progression and muscle-group volume
  • Search symptoms and mood entries by date

Key features

  • Read-only Apple Health mirror
  • SQLite storage on self-hosted hardware
  • Nine MCP query tools
  • Streamable HTTP with bearer authentication
  • Nutrition, strength, sleep, symptom, and mood records
  • Background phone-to-server synchronization

Tools9

What Marrow lets your agent do. Expand a tool for its parameters.

Self-reported~187 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

7/7 checks healthy over the last 44d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 2d ago via OSV.dev · marrow-mcp (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars3Stargazers on the source repository.
Last commit4d agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed9Callable tools this server registers over MCP.
Directory activity3 viewsConfig copies, upvotes, and views on AllMCPs.

How Marrow works

What the marrow MCP server does

The marrow MCP server gives MCP-compatible agents read access to Apple Health data collected by the Marrow iOS app. It also includes Marrow-specific records, such as meal diary entries and set-by-set weightlifting logs. Data is stored in a SQLite mirror on a machine you own rather than retrieved from a hosted service.

The companion iOS app tracks Apple Health series and sends updates to the self-hosted server. Once paired, background pushes keep the local mirror current while the phone is not actively being used. The server is intended for analysis and questions about personal health history; the self-hosted configuration exposes reads only.

How it works

The server runs as a Python application and communicates with agents using MCP over Streamable HTTP. The MCP endpoint uses JSON-RPC 2.0 and the 2025-06-18 protocol version. On first startup, it creates separate tokens for phone ingestion and agent access. The agent token is supplied as a bearer token in the HTTP Authorization header.

The phone connects to the pairing URL printed by the server. In Marrow, choose Export, then Server MCP, then Pair with a server, and scan the displayed code when QR support is installed. Phone uploads are idempotent and keyed by UUID, so replaying a batch does not create duplicate records.

Setup and configuration

Install the package with pip install "marrow-mcp[qr]" to include QR-code generation, then start it with a port and data directory such as marrow-server --port 8800 --data ./data. Running the Python file directly or using Docker Compose are also supported. Without the optional QR dependency, the pairing page displays pairing JSON instead of a code.

After pairing, configure an MCP client with the server URL ending in /mcp and the bearer token printed at startup. Claude Desktop also has a downloadable .mcpb bundle that asks for these values during installation. Existing data and pairing tokens can be retained when upgrading by restarting the newer version with the same data directory.

Tools and capabilities

The marrow MCP server provides nine read tools:

  • health_summary returns recent activity, heart, sleep, and nutrition information.
  • list_metrics lists mirrored metrics, units, and available coverage.
  • metric_daily returns daily values for a selected metric for up to 400 days.
  • metric_samples exposes timestamped records and their source devices.
  • workouts reports workout type, timing, duration, activity, and source.
  • nutrition_log returns logged foods and nutrient details by day.
  • strength_log reports lifting sets, set types, estimated one-repetition maximums, exercise progression, and muscle-group volume. Warm-up sets are excluded from volume calculations.
  • sleep_log summarizes each night by wake day, including bedtime, wake time, total sleep, and stage minutes.
  • symptoms_and_mood returns symptom severity plus State of Mind valence, feelings, and associated subjects.

Metric queries accept Apple short names and Marrow’s alternate keys, including examples such as active_energy_burned, active_energy, and heart_rate_variability.

Limitations and notes

All tools available to a self-hosted, app-paired instance are reads. The iOS app requires iOS 17 or later and Apple Health.

The server is designed for a LAN or tailnet. Do not expose it directly to the public internet. For remote use, place it behind HTTPS using Tailscale Serve, Caddy, or an equivalent setup that authenticates the device before the bearer token is sent. Plain HTTP pairing is limited to permitted private-network, local, or tailnet addresses.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Marrow

marrow is an MCP server that connects the Marrow iOS app’s Apple Health mirror to AI agents through Streamable HTTP. Its main tools read health summaries, metrics, workouts, nutrition, strength, sleep, symptoms, and mood. Data is stored in SQLite on hardware you control, and the self-hosted setup exposes read operations only.

Install it with `pip install "marrow-mcp[qr]"`, then run `marrow-server --port 8800 --data ./data`. You can also execute `marrow_server.py` from a clone or start it with Docker Compose. The server prints a pairing URL and the MCP bearer token when it starts.

Connect it with the downloadable `marrow.mcpb` bundle or a manual HTTP MCP configuration. The bundle asks for the server URL and token; manual setup uses the `/mcp` URL and an `Authorization: Bearer` header. Pair the Marrow app separately through Export, Server MCP, and Pair with a server.

Yes, Cursor can connect to marrow through an `mcp.json` entry using the server’s HTTP URL and bearer token. The configuration points to the `/mcp` endpoint and supplies the token in the headers object.

No, it should not be port-forwarded directly to the open internet. Use a LAN or tailnet, or put the server behind HTTPS with Tailscale Serve, Caddy, or an equivalent authenticated proxy before sending the bearer token.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewMarrow AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/marrow-4?style=directory)](https://allmcps.com/mcp/marrow-4)
HTML Embed
<a href="https://allmcps.com/mcp/marrow-4"><img src="https://allmcps.com/api/badge/marrow-4?style=directory" alt="Marrow on AllMCPs" /></a>