marrow-mcp
Provides read-only access to Apple Health data, including daily health metrics, workouts with set-by-set strength detail, nutrition logs, and raw health samples.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@marrow-mcpwhat was my average heart rate during runs last week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
marrow-mcp
Give your AI agents read-only access to your own Apple Health data.
Marrow is a free iOS app that tracks 178 health data series - 172 Apple Health types plus its own meal diary and set-by-set weightlifting log. This repo is its self-hosted companion server: one Python file, standard library only, that keeps a SQLite mirror of your data on hardware you own and serves it over the Model Context Protocol so agents can query it 24/7, phone in your pocket.
Nothing here talks to a cloud. Data flows phone → your machine, full stop.

Run it
python3 marrow_server.py # prints a pairing URL
python3 marrow_server.py --port 8800 --data ./dataor
docker compose up -dOpen the pairing URL on any screen, then in Marrow: Server → Pair with a server → scan. From then on the app's background pushes keep the mirror current with the app closed.
Related MCP server: Health Export AI
Connect an agent
The server speaks MCP over Streamable HTTP (JSON-RPC 2.0, protocol version
2025-06-18), authenticated with a bearer token it generates on first run and
prints alongside the pairing link.
Claude Code
claude mcp add --transport http marrow \
http://<server-ip>:8800/mcp \
--header "Authorization: Bearer <mcp token>"Claude Desktop, one click
Download marrow.mcpb,
double-click it, and Claude Desktop installs the extension and asks for the
URL and token. No terminal involved. (The bundle is a tiny zero-dependency
bridge in mcpb/; it forwards Claude's stdio to your Marrow URL and nothing
else.)
Claude Desktop (manual), Cursor, or anything using an mcp.json
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<server-ip>:8800/mcp",
"headers": { "Authorization": "Bearer <mcp token>" }
}
}
}Check it by hand
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"}'Tools
All read-only. Nothing an agent can call writes to your health record.
Tool | Returns |
| Recent days across activity, heart, sleep and nutrition |
| Every metric in the mirror, with units and coverage |
| Daily values for any metric, up to 400 days |
| Raw records with timestamps and source devices |
| Workouts, including set-by-set strength detail |
| The meal diary: every logged food with full nutrient detail, by day |
| Every lifting set with estimated 1RM, per-exercise progression, and volume per muscle group |
Then ask your agent things like "how did my sleep change once I started training in the mornings?" and let it go and look.
Why not the built-in Claude or ChatGPT connector?
Both Claude (Pro/Max, US) and ChatGPT now read Apple Health natively. Use them if that is all you need. They stop where this server starts:
Claude / ChatGPT connector | Marrow + this server | |
Where it works | The iOS app only | Claude Code, Claude Desktop, Cursor, OpenClaw, Hermes, any MCP client, on any machine |
When it works | While you are in the chat on the phone | 24/7, phone in your pocket, from your own box |
What the model sees | Raw HealthKit numbers | Daily values reconciled against Apple's own totals, meal diary, set-by-set lifts |
Where the data lives | Their cloud, per conversation | SQLite on hardware you own |
Cost | Subscription | Free, MIT |
OpenClaw / Hermes / any agent on a home machine. Point the agent's MCP
config at the server URL with the bearer token, exactly as in the mcp.json
block above. Reach it from outside the LAN with tailscale serve --bg --https=8800 http://127.0.0.1:8800 and use the tailnet URL.
The other three ways in
This server is one of four, and you do not need it to give agents access:
On-device MCP. Marrow runs the same MCP surface on the iPhone itself at
http://<phone-ip>:21212/mcp, answering while the app is running. Richest data, zero extra hardware.This server. Always-on mirror on your own box.
Relay gateway. Serves the mirror when the phone is asleep.
Manual files. CSV, JSON and GPX out of the share sheet, plus scheduled webhook pushes to any URL (Home Assistant, n8n, your own endpoint).
All four are in the free tier. Setup for all of them: https://skeletonarmy.tech/mcp.
Security
Both servers are built for a LAN or a tailnet. Do not port-forward this to the open internet. If you need it remotely, front it with
tailscale serve, Caddy, or an equivalent so the transport is HTTPS and the device is authenticated before the bearer token is ever presented.Two separate tokens live in
--data:.app-tokenfor the phone's pushes and.mcp-tokenfor agents. Rotating one does not disturb the other.Ingest is idempotent and UUID-keyed, so a replayed batch cannot double-count.
Status
Marrow is in TestFlight beta (0.2.0, build 85), iOS 17+, and requires Apple Health. Ask for an invite.
The iOS app is closed source; this server is not, because you should be able to read anything you are asked to run on your own hardware.
Registry
Listed in the official MCP registry
as tech.skeletonarmy/marrow, verified by DNS on skeletonarmy.tech.
mcp-name: tech.skeletonarmy/marrow
Help and policies
Agent setup guide, the full client-by-client walkthrough
Support and troubleshooting, or email support@skeletonarmy.tech
Privacy policy. Short version: your health data stays on your device, this server runs on hardware you own, and nothing here reports to us.
Licence
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- freddyOAuthcoach.freddy
Connect your wearables, rings and training apps, then ask your AI about your own health data.
Connect your health, fitness, nutrition, sleep, and wearable data to your AI assistant.
- SomviaOAuthapp.somvia
Apple Health training load, recovery, HRV and workout detail for Claude, ChatGPT and any MCP client.
Your strength-training data for any AI assistant: workouts, progress, muscle volume, routines.
Related MCP Servers
- AlicenseAqualityBmaintenanceApple HealthKit → PostgreSQL sync + MCP server for Claude Code, Cursor, and Ollama. Open-source iOS app with reliable background sync (HKObserverQuery). 11 tools covering health summary, sleep, HRV trends, workouts, daily snapshots, metric stats, period comparison, and coaching briefs. Supports Supabase, Neon, and self-hosted Postgres. Privacy-first: your data goes to your own database.11MIT
- AlicenseAqualityAmaintenanceAn MCP server that enables AI agents to query Apple Health data (190+ metrics) in natural language, including trends, comparisons, and structured exports.14119 npm4MIT
- AlicenseNot gradedqualityAmaintenanceRead-only MCP server that exposes Apple Health data (steps, workouts, sleep, etc.) from a local SQLite store, allowing AI agents to query health metrics without sending data to hosted services.7Apache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides AI with read-only access to Apple Health data via three tools (health_now, health_detail, health_trends). Deployable on Cloudflare with a one-click mobile setup.MIT