Anslut en agent till Marrow
Marrow serverar din Apple Health-data över Model Context Protocol, från din egen iPhone eller din egen server. Sju skrivskyddade verktyg på telefonen, tretton på din egen server (fyra av dem svarar på appens egna villkor, mätta mot din egen normalnivå), autentisering med bearer-token, inget konto någonstans. Den här sidan är hela installationen.
En agent på en annan dator, eller behöver du svar medan telefonen sover? Parkoppla spegeln på egen server (pip install marrow-mcp): den svarar dygnet runt för Claude Code, Cursor och OpenClaw. Om du kom hit från den inbyggda kopplingen i Claude eller ChatGPT, så här är det den gör som de inte gör.
Installation för en app i taget, Claude Code, Cursor, Codex och fler, finns på en egen sida under anslutningar.
Jag vill koppla min egen Apple Health-data till dig. Marrow är en gratis iOS-app som serverar den över MCP, utan konto och utan att någon prenumeration behövs för detta. Den finns i App Store: https://apps.apple.com/app/id6800819435. Guida mig genom hela processen: installera appen, slå på servern under Exportera och sedan Lokal MCP, och lägga till URL:en och den bearer-token som den visar mig i din MCP-konfiguration som en Streamable HTTP-server. Om du inte kan redigera den konfigurationen själv, tala om för mig exakt vilken fil det gäller och vad jag ska klistra in. Dokumentation för installationen: https://marrowhealthapp.com/mcp. När den är ansluten, anropa health_summary för de senaste 7 dagarna och berätta vad som sticker ut.
1. Slå på servern
Den levereras avstängd. I appen: Exportera → Lokal MCP, slå sedan på servern. Du får en URL, en token och en QR-kod. Servern binds bara till ditt lokala nätverk, och appen visar den exakta adress den lyssnar på.
2. Peka din klient mot den
Ersätt <phone-ip> och <token> med det som appen visar dig.
Claude Code
claude mcp add --transport http marrow \ http://<phone-ip>:21212/mcp \ --header "Authorization: Bearer <token>"
Claude Desktop, ett klick
Ladda ner marrow.mcpb till din dator och dubbelklicka på den. Claude Desktop installerar tillägget och frågar efter URL:en och token ovan. Ingen terminal behövs.
Claude Desktop (manuellt), Cursor eller vilken klient som helst som använder en mcp.json
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<phone-ip>:21212/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Kontrollera för hand
curl -s http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Verktygen
Läsningar finns alltid. Skrivningar är ett andra reglage. Från Marrow 1.5 listar telefonens server samma tolv skrivverktyg som Cloud-MCP (log_meal, log_water, log_weight, log_workout, log_strength, log_sleep, log_symptom, log_mood, edit_entry, delete_entry, set_targets, undo_entry) när du slår på Tillåt AI att skriva under Lokal MCP, utförda direkt på telefonen och skrivna till Apple Health, och var och en kan ångras. Avstängd är servern skrivskyddad.
| Verktyg | Returnerar |
|---|---|
health_summary | Senaste dagarna över aktivitet, hjärta, sömn och kost |
list_metrics | Varje mätvärde som följs, med enheter och täckning |
metric_daily | Dagliga värden för vilket mätvärde som helst, upp till 400 dagar |
metric_samples | Råposter med tidsstämplar och källenheter |
workouts | Träningspass från alla källor. På telefonen också Marrows styrkepass set för set |
nutrition_log | Kostdagbok med full uppdelning av näringsämnen |
strength_log | Varje lyftset med sin settyp, uppskattad 1RM per övning, volym per muskelgrupp. Uppvärmningsset räknas aldrig mot volym eller rekord |
sleep_log | En natt per vakendag: läggdags, uppvaknande, timmar sömn, minuter per stadium (spegel på egen server) |
symptoms_and_mood | Symtom med sin svårighetsgrad, och poster för State of Mind med känslor och vad de handlade om (spegel på egen server) |
Fyra till på spegeln på egen server och på Cloud-MCP. De börjar där de råa läsningarna slutar: varje värde mäts mot din egen normalnivå bakåt i tiden med samma matematik som appens startsida använder (själva dagen undantagen), så en agent utgår från en läsning som redan stämmer för dig i stället för att bedöma en siffra mot befolkningen.
| Verktyg | Returnerar |
|---|---|
daily_brief | En dag: varje nyckelmätvärde med sitt värde och appens egen fras (normalt för dig, över din normala nivå, långt under din normala nivå), mat och vatten mot dina mål, gårdagens sömn, genomförd träning, humör och symtom, och flaggor värda att nämna |
baselines | Din egen normalnivå per mätvärde: medelvärde och spridning över fönstret, det senaste värdets z och fras, 7-dagarsmedelvärdet och 90-dagarstrenden per månad |
what_changed | Den senaste veckan mot de fyra före: vad som förändrades och hur anmärkningsvärt det är för dig, mat, träning, sömn och förskjutningar i läggdags, flöden som började eller slutade komma |
data_quality | Vad spegeln håller och hur färskt det är: per mätvärde senaste dagen, täckning, takt, källor och om det har blivit gammalt, så att en agent aldrig misstar ett glapp för ett faktum |
Servern på enheten serverar de första sju råa verktygen plus daily_brief och baselines (nio läsningar). Spegeln på egen server serverar alla tretton, liksom kopian i molnet för Cloud-MCP. Varje läsning på spegeln tar dagar tillbaka eller från och till i telefonens kalender, och spegeln erbjuder också fyra prompter (how_am_i_doing, weekly_review, doctor_prep, log_from_text) och fyra resurser till klienter som visar dem. Råprover bär sömnstadier och symtomens svårighetsgrader.
Det finns 172 Apple Health-mätvärden bakom list_metrics, plus Marrows egna dagboks- och styrkedata bakom nutrition_log och strength_log, som täcker aktivitet, hjärta, sömn, kropp, andning, rörlighet, hörsel, kost, sinne, symtom, cykel och vanor. Maskinläsbar version av den här sidan: tools.json.
Hålla den uppe när telefonen inte är det
Servern på enheten svarar medan appen körs. För åtkomst dygnet runt, parkoppla en spegel på egen server: en Python-fil med bara standardbiblioteket på en Pi, NAS eller gammal laptop. Telefonens utskick i bakgrunden håller den aktuell, och den talar samma MCP-yta på http://<server-ip>:8800/mcp med sin egen token. Telefonens verktyg använder appens nycklar för mätvärden (active_energy, heart_rate_variability). Servern accepterar både dem och Apples korta namn (active_energy_burned), så en agent kan växla mellan dem utan att lära om. Den har öppen källkod och går att installera:
pip install marrow-mcp marrow-server
Källa: github.com/MarrowHealth/marrow-mcp. Listad i det officiella MCP-registret som tech.skeletonarmy/marrow.
Öppna inte portar för någon av servrarna mot det öppna internet. Båda är gjorda för ett LAN eller ett tailnet. Om du behöver åtkomst på distans, lägg tailscale serve eller motsvarande framför, så att transporten är HTTPS och enheten autentiseras innan bearer-token någonsin syns.
Felsökning
Börja med testet nedan, kört från datorn som din AI körs på. Det visar vilken sida problemet finns på. Använd adressen och token från anslutningens sida i Marrow, med Marrow öppen på telefonen.
curl -i http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| Det du får | Vad det betyder |
|---|---|
HTTP/1.1 200 OK och en lista över verktyg | Telefonen fungerar. Problemet finns i din apps inställningar: adressen, token eller en servertyp som inte är HTTP (Streamable HTTP). Rätta konfigurationen och starta om appen. |
401 Unauthorized | Token är fel, eller så är den här anslutningen av i Marrow. Varje anslutning i Dina anslutningar har sin egen token, och att slå av en låser ute den appen medan de andra fortsätter fungera. Slå på den, eller kopiera dess token igen. |
404 Not Found med use POST /mcp | Sökvägen är fel. Adressen slutar på /mcp. |
| Anslutningen nekas, eller inget svar tills tidsgränsen går ut | Datorn kan inte nå telefonen. Gå igenom listan nedan. |
- Marrow måste vara öppen. Telefonens server svarar bara medan Marrow är öppen i förgrunden. När du byter app eller låser telefonen pausar iOS den snart. Öppna Marrow igen så svarar den igen. För svar med telefonen i vila, använd Server-MCP eller Cloud-MCP.
- Samma wifi eller tailnet. Datorn och telefonen måste dela ett wifi-nätverk eller ett tailnet. Lokal MCP svarar aldrig över mobildata. Om Marrow säger Ingen nätverksadress hittades, anslut till wifi eller ett tailnet. Wifi för gäster och på hotell hindrar ofta enheter från att nå varandra.
- Tailnet-adress eller wifi-adress. Marrow visar en av telefonens adresser, oftast wifi-adressen. En dator som når telefonen över Tailscale behöver i stället telefonens tailnet-adress. Appen Tailscale visar den (den börjar med
100.). Lägg in den i din konfiguration i stället för wifi-adressen och behåll samma port och token. - Adressen har ändrats. En router kan ge telefonen en ny wifi-adress efter ett tag. Jämför adressen i Marrow med den i din konfiguration. En reserverad adress i routern håller den fast.
- Åtkomst till lokalt nätverk är inte orsaken. iOS frågar om det när Marrow når ut till en enhet i ditt nätverk, till exempel en parkopplad server. Att telefonens server svarar en dator kräver inget tillstånd, så att slå det reglaget på eller av ändrar inte Lokal MCP.
- Ett VPN på datorn. Ett annat VPN än ditt tailnet kan skicka lokal trafik bort från ditt wifi. Pausa det och prova testet igen.
- En 405 i din apps logg. Telefonen svarar bara på POST och håller ingen ström öppen, så en GET får
405. Appar som talar Streamable HTTP fortsätter med POST, så den här raden ensam är inte problemet. - Din app tar bara ett kommando (stdio). Kör telefonens adress genom bryggan mcp-remote. Den behöver
--allow-httpför en vanlig http-adress som inte finns på själva datorn:npx -y mcp-remote http://<phone-ip>:21212/mcp --allow-http --header "Authorization: Bearer <token>". I en konfigurationsfil för Cursor, Codex eller Claude Desktop på Windows kan mellanslag inuti args bli förvanskade. Skriv rubriken somAuthorization:${AUTH_HEADER}och sättAUTH_HEADERtillBearer <token>i serverns env. - Den läser men kan inte logga. Slå på Tillåt AI att skriva under Lokal MCP. Posterna utförs direkt på telefonen och var och en kan ångras.
- Anslutningen går inte att slå på. Gratis har 1 anslutning på åt gången, Marrow Pro upp till 10: AI:er, servrar och automatiseringar tillsammans. Slå av en i Dina anslutningar först.
Installation och lösningar för en app i taget, Claude Code, Cursor, VS Code och fler, finns under anslutningar.
Vad det kostar
Ingenting. Åtkomst för agenter ingår i gratisnivån, tillsammans med synkning i bakgrunden, automatisk export, export till CSV och JSON och streckkodsskanning. Health Auto Export levererade en MCP-server före Marrow, och den är bra, men deras kräver en Premium-prenumeration. Den skillnaden, inte att vara först, är påståendet värt att göra.
Krav
- iOS 17 eller senare, och Apple Health. Det finns ingen version för Android eller webben.
- Marrow finns i App Store, gratis: apps.apple.com/app/id6800819435.
- Det finns inget Marrow-konto, så det finns inget API i molnet att anropa utan en användares egen enhet.