Connections / Automation
n8n and Marrow Health
Two ways in: Marrow posts your data to an n8n webhook on a schedule, or an n8n AI agent reads it live through the MCP Client Tool node.
Open in Marrow works on an iPhone with Marrow 1.4.2 or later.
Which way?
- Local MCP if the computer running it shares your phone's Wi-Fi or tailnet. Free, and it answers while Marrow is open.
- Server MCP if you keep a small server running. Free, and it answers any time.
Automated: Webhook node Local MCP Server MCP
Automated (Webhook node) Free
Marrow posts CSV or JSON to a URL on a schedule, with the app closed. You need: An n8n you run or host.
- In Marrow, open Export and tap n8n. Turn Automated on.
- n8n: add a Webhook node (POST) and copy its production URL.
- In Marrow: New Automation. Its page asks for:
- Address: The Webhook node's Production URL. The Test URL only answers while the editor is listening. It looks like
https://n8n.example.com/webhook/…. - Headers: If the node uses Header Auth, add the same Authorization header here.
- Data and Cadence: the kind of data, JSON or CSV, and how often it runs.
- Run: Activate the workflow in n8n first, so the Production URL answers. Then tap Run now.
- Address: The Webhook node's Production URL. The Test URL only answers while the editor is listening. It looks like
Local MCP (MCP Client Tool node) Free
A server on your iPhone. It answers while Marrow is open, to apps on the same Wi-Fi or tailnet. Nothing leaves your network. You need: Self-hosted n8n on your network reads this phone. n8n Cloud needs your own server.
- In Marrow, open Export and tap n8n. Pick Local MCP.
- Turn Local MCP on and add n8n to Your connections. Marrow shows the address and a token made for this connection.
- n8n: MCP Client Tool node, Server Transport HTTP Streamable, Authentication Bearer, with the address and token below.
http://<phone-ip>:21212/mcp Token: <token>
Placeholders shown: Marrow fills in your phone's address and the token.
Server MCP (MCP Client Tool node) Free
Marrow's open-source server on a computer you keep on (a Pi, a NAS, an old laptop). The phone keeps it current and it answers any time. You need: Self-hosted n8n on your network reads this phone. n8n Cloud needs your own server.
- Run Marrow's server on a computer you keep on and pair it with the app (how).
- In Marrow, open Export, tap n8n and pick Server MCP. Add it to Your connections. Marrow shows the server's address. The token is the mcp token your server printed when it started.
- n8n: MCP Client Tool node, Server Transport HTTP Streamable, Authentication Bearer, with the address and token below.
http://<server-ip>:8800/mcp Token: <token>
Placeholders shown: Marrow fills in your server's address. The token is the one your server printed.
What it can do
- Read. A daily brief scored against your own normal, your baselines, what changed this week, any metric day by day, workouts, lifts set by set, sleep stages and your food diary.
- Log. Your AI logs meals, water, weight, workouts, sleep, symptoms and mood when you ask, after you turn on Allow AI write for that way in Marrow. Every entry can be undone.
Try asking
- How am I doing today?
- What changed in my sleep this week compared with my normal?
- Which of my lifts went up this month?
- Log a turkey sandwich and an apple for lunch.
If it does not work
In n8n
- The requested webhook is not registered. n8n's 404 when nothing listens at that address. The Production URL answers only while the workflow is published (newer n8n says Publish where older versions say Activate). The Test URL answers only after Listen for test event, for 120 seconds and one call.
- Test URL or Production URL. Paste the Production URL into Marrow, the one with
/webhook/, not/webhook-test/. Production runs show in the workflow's Executions tab, not on the canvas. - Server answered 403. With Header Auth on the Webhook node, a missing or wrong header gets 403. Add the same Authorization header in Marrow, with the same value.
- The URL n8n shows starts with localhost. Behind a reverse proxy, set
N8N_WEBHOOK_URL(WEBHOOK_URLon older versions) to your public address so n8n shows the right one. - The MCP Client Tool node cannot reach the phone. n8n Cloud runs on n8n's servers, so it cannot reach Local MCP. Self-hosted n8n on your Wi-Fi or tailnet can. From n8n Cloud, use Server MCP on a public HTTPS address.
- A long range fails. The webhook takes up to 16 MB by default (
N8N_PAYLOAD_SIZE_MAX). Pick a shorter range or fewer metrics.
Local MCP checks
- Keep Marrow open. The phone's server answers only while Marrow is open in front. When you switch apps or lock the phone, iOS soon pauses it. Open Marrow again and it answers again.
- Same Wi-Fi or tailnet. The computer must be on the phone's Wi-Fi or tailnet, never cellular. Guest Wi-Fi often stops devices reaching each other. Over Tailscale, use the phone's tailnet address (it starts with 100.) in place of its Wi-Fi address, and check the Wi-Fi address again if your router hands out a new one.
- 401 Unauthorized. The token is wrong, or this connection is off in Marrow. Each connection has its own token, and turning one off locks that app out. Switch it on in Your connections, or copy the token again.
- Test from the computer. The curl line in the Local MCP guide shows whether the phone answers, and with which error.
Server MCP checks
- Reach the server first. From the computer running your AI, open
http://<server-ip>:8800/health. It answers without a token. If it does not, the server is not running or the address is wrong. Then try the curl test on the Server MCP page. - 401 from the server. Agents use the mcp token the server printed when it started. It is also in the
.mcp-tokenfile in the server's data folder. The phone's pairing token does not work for agents. - Old data, or Not delivering in Marrow. The phone cannot reach the server to push. Check the server is running and that its address in Marrow still works from the phone. For a server on your home network, Marrow needs Local Network access: Settings, Privacy and Security, Local Network.
- It reads but cannot log. Turn on Allow AI write for this server in Export, Your connections. Entries wait on the server and land when Marrow next opens or wakes.
Automated checks
- Test with Run now. The line under Run now says what happened. Any 2xx answer counts as delivered. Anything else shows as Server answered and the status code, or the network error.
- Check the Activity log. In the automation, More options, Activity log lists its last 30 runs with the result of each.
- Runs come late. iOS picks the moment for background runs, and a phone that stays locked sends when it is next unlocked. Since last run catches up on the next run that succeeds.
- A receiver on your home network. Marrow needs Local Network access to reach it (Settings, Privacy and Security, Local Network). Tap Run now once with Marrow open, so iOS can ask: in the background it refuses without asking.
- It will not switch on. Each automation that is on counts as a connection. Free keeps 1 connection on at a time. Marrow Pro keeps up to 10: AIs, servers and automations together.
More fixes in the guides: Local MCP, Server MCP, Automated.