De zelfgehoste mirror
Een kleine server op hardware die van jou is en een complete, live kopie van je Marrow-gegevens bijhoudt en agents antwoordt terwijl je telefoon slaapt, in je zak zit of aan de andere kant van de wereld is.
De installatie voor één app tegelijk staat op een eigen pagina onder verbindingen.
Alle handleidingen van Marrow: MCP · Zelfgehoste mirror · Automatiseringen · Bestanden · Ondersteuning
Wat het is
Een kleine open source server die je draait op hardware die van jou is: een Raspberry Pi, een NAS, een oude laptop, een vps van $5. Je telefoon koppelt er één keer mee door een QR-code te scannen en pusht daarna elke wijziging op de achtergrond, ook met de app gesloten. De server bewaart een complete SQLite-kopie van je Marrow-gegevens en biedt dertien MCP-tools om te lezen: de zeven van de telefoon, sleep_log en symptoms_and_mood, en vier die antwoorden in de eigen termen van de app (daily_brief, baselines, what_changed, data_quality), zodat een agent om 3 uur 's nachts kan vragen "hoe sliep ik deze week" terwijl je telefoon in een la ligt. MIT-licentie: github.com/MarrowHealth/marrow-mcp.
Installeren
Eén Python-bestand, alleen de standaardbibliotheek, Python 3.10 of nieuwer:
pip install marrow-mcp marrow-server # or: python3 marrow_server.py
Of met Docker:
git clone https://github.com/MarrowHealth/marrow-mcp cd marrow-mcp docker compose up -d
Bij de eerste start toont hij een koppel-URL en een QR-code in elke browser op je netwerk.
De telefoon koppelen
- Open de koppel-URL op een scherm bij je in de buurt.
- In Marrow: Exporteer, Server-MCP, Koppel met een server, scan de code.
- Klaar. De telefoon begint met pushen, en de pagina Server toont het tijdstip van de laatste push en hoeveel records er wachten.
Koppelen maakt twee tokens aan in de gegevensmap van de server: een waarmee de telefoon pusht en een waarmee agents lezen. Verwijder een tokenbestand om het te vernieuwen.
Een agent ernaartoe wijzen
claude mcp add --transport http marrow http://<server-ip>:8800/mcp \ --header "Authorization: Bearer <mcp token>"
Dertien tools, allemaal om te lezen. De negen ruwe: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. En vier die beginnen waar de ruwe ophouden, afgezet tegen je eigen voortschrijdende normaal met dezelfde berekening als de Home-pagina van de app: daily_brief (één dag: elke belangrijke meetwaarde met zijn waarde en de eigen formulering van de app, voeding en water ten opzichte van je doelen, de slaap van afgelopen nacht, gedane training, signalen die het noemen waard zijn), baselines (je eigen normaal per meetwaarde, de z van de laatste waarde en de trend van 90 dagen), what_changed (de laatste week ten opzichte van de vier ervoor: wat bewoog, hoe opvallend dat voor jou is, verschuivingen in slaap en bedtijd, reeksen die begonnen of stopten) en data_quality (wat vers, verouderd of ontbrekend is, zodat een agent een gat nooit voor een feit aanziet). Elke leestool accepteert dagen terug of van en tot op de kalender van de telefoon. De server toont ook vier prompts (how_am_i_doing, weekly_review, doctor_prep, log_from_text) en vier resources voor clients die ze tonen. Hij heeft ook twaalf schrijftools, die verschijnen zodra je telefoon ze toestaat. Zet vanaf Marrow 1.5 AI-schrijftoegang toestaan aan voor je server in Exporteer, Je verbindingen en een AI kan er gratis maaltijden, water, gewicht, work-outs, slaap, symptomen, stemming en doelen mee loggen. De server zet elk item in de wachtrij en de telefoon verwerkt het zodra Marrow opent of ontwaakt, en elk item kan ongedaan worden gemaakt. De installatie voor Claude Desktop, Cursor en andere staat op de MCP-pagina. Alleen de URL verandert.
Van buiten je lokale netwerk erbij komen
De server spreekt gewoon HTTP en heeft geen eigen TLS. Gebruik geen port-forwarding zonder meer. Zet Tailscale op de machine en de telefoon en gebruik tailscale serve, of zet er Cloudflare Tunnel of een reverse proxy voor die HTTPS afhandelt. De koppel-QR bevat het adres dat de server aanbiedt: zijn eigen lokale adres, of het adres dat je hem geeft met --url. Start hem met het adres dat je echt gaat gebruiken, bijvoorbeeld marrow-server --url https://pi.your-tailnet.ts.net, en koppel dan.
Wat er op schijf terechtkomt
- Een SQLite-database met elke dagreeks, sample, dagboekitem en krachtset, actueel gehouden door de pushes van de telefoon.
- Elke ruwe push als JSONL ernaast bewaard, zodat de database kan worden herbouwd als je hem ooit verknoeit.
- Reken op 50 tot 150 MB per jaar aan geschiedenis in volledige kwaliteit.
Eenheden: gezondheidsmeetwaarden komen binnen in hun opgeslagen SI-eenheden met labels. Krachtsets komen binnen in pounds met "unit": "lb", wat de weergave-instelling van de telefoon ook is, zodat de mirror nooit eenheden door elkaar haalt. Wijs Grafana, DuckDB of een cronjob rechtstreeks naar het databasebestand.
Problemen oplossen
Twee tests vanaf de computer waarop je AI draait, vertellen je waar het probleem zit. Eerst: draait de server? Deze heeft geen token nodig:
curl http://<server-ip>:8800/health
Hij antwoordt {"server": "marrow", "ok": true}. Dan: werkt het token van je agent?
curl -i http://<server-ip>:8800/mcp \ -H "Authorization: Bearer <mcp token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| Wat je krijgt | Wat het betekent |
|---|---|
200 OK en een lijst met tools | De server werkt. Controleer het adres, het token en het servertype (HTTP) in de configuratie van je agent en start de agent daarna opnieuw. |
401 met bad bearer token | Verkeerd token. Agents gebruiken het mcp-token, niet het token waarmee de telefoon koppelt. Zie hieronder. |
| Verbinding geweigerd of een time-out | De server draait niet, de poort klopt niet, of een firewall op de machine blokkeert poort 8800. Controleer bij Docker de poortkoppeling 8800:8800. |
- Welk token. De server toont het token voor agents bij het starten, op de regel die begint met
agents:. Het staat ook in het bestand.mcp-tokenin de gegevensmap (./datatenzij je--dataopgaf,/datain Docker). De telefoon gebruikt een ander token, uit.app-token. Om het token voor agents te wijzigen, verwijder je.mcp-token, start je de server opnieuw en werk je elke agent bij. - De koppelpagina zegt bad or missing token. Open de koppellink precies zoals de server hem toonde, met het deel
?token=. - De koppelpagina toont tekst, geen QR-code. De QR heeft het optionele pakket
segnonodig:pip install "marrow-mcp[qr]". Of kies in Marrow Liever handmatig invoeren en typ deurlen hettokenuit die tekst. - Koppelen mislukt op de telefoon. De telefoon kon het adres in de QR niet bereiken. Onder Docker ziet de server alleen het eigen adres van de container, dus geef hem het jouwe: voeg
--url http://<your-computer-ip>:8800toe aan de opdracht. Gebruik buiten je wifi thuis een HTTPS-adres vantailscale serveof een tunnel. - Toegang tot Lokaal netwerk. Om een server op je thuisnetwerk te bereiken, heeft Marrow toegang tot Lokaal netwerk nodig. iOS vraagt erom de eerste keer dat je koppelt. Heb je nee gezegd, zet Marrow dan aan bij Instellingen, Privacy en beveiliging, Lokaal netwerk en koppel opnieuw met Marrow open.
- Die QR-code is geen Marrow-koppelcode. De camera las een andere code. Scan die op de koppelpagina van de server.
- Oude gegevens, of Levert niet in Marrow. De telefoon kan niet naar de server pushen. De pagina Server-MCP in Marrow toont de laatste push en hoeveel records er wachten. Controleer of de server draait en open dan Marrow om te versturen wat wacht. Pushes op de achtergrond draaien als iOS dat toestaat.
- Deze server heeft een update nodig voordat hij kan loggen. Werk hem bij met
pip install -U marrow-mcpen start hem opnieuw. Voer bij Dockergit pullendocker compose up -d --builduit in de clone. - Items van de AI verschijnen niet. Zet AI-schrijftoegang toestaan aan voor de server bij Exporteer, Je verbindingen. De schrijftools verschijnen pas daarna op de server. Elk item wacht op de server en komt binnen zodra Marrow weer opent of ontwaakt.
- De verbinding gaat niet aan. Gratis houdt 1 verbinding tegelijk aan, Marrow Pro maximaal 10: AI's, servers en automatiseringen samen.
Wanneer je dit boven de andere kiest
Kies de mirror als je agent de gegevens nodig heeft terwijl je telefoon slaapt of weg is, of als je liever een database hebt die je kunt bevragen dan bestanden. Kies de MCP-server op de telefoon als je agent in de buurt van de telefoon draait en je niets anders wilt onderhouden. Kies automatiseringen als je al een plek hebt waar gegevens moeten landen.