# marrow [Health: Active]

**Category:** 🧬 Biology & Bioinformatics  
**Repository:** https://github.com/DukeAidanHall/marrow-mcp  
**GitHub Stars:** 3  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/marrow-4

## Description
Read-only MCP access to your own Apple Health data, mirrored from the Marrow iOS app.

## Tools
Capabilities this server exposes over MCP:

- **health_summary** — Recent days across activity, heart, sleep and nutrition
- **list_metrics** — Every metric in the mirror, with units and coverage
- **metric_daily** — Daily values for any metric, up to 400 days
- **metric_samples** — Raw records with timestamps and source devices
- **workouts** — Workouts from every source: activity, start, end, duration and source
- **nutrition_log** — The meal diary: every logged food with full nutrient detail, by day
- **strength_log** — Every lifting set with its set type and estimated 1RM, per-exercise progression, and volume per muscle group (warm-ups left out)
- **sleep_log** — One night per wake day: bedtime, wake time, hours asleep, minutes per stage
- **symptoms_and_mood** — Symptoms with their severity, and State of Mind entries with valence, feelings and what they were about

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "marrow": {
    "command": "uvx",
    "args": ["--from","marrow-mcp","marrow-server"]
  }
}
```

## Documentation

## 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.

_Full upstream README: https://allmcps.com/mcp/marrow-4/readme_

