Marrow Health
NL
Download

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

  1. Open de koppel-URL op een scherm bij je in de buurt.
  2. In Marrow: Exporteer, Server-MCP, Koppel met een server, scan de code.
  3. 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

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 krijgtWat het betekent
200 OK en een lijst met toolsDe 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 tokenVerkeerd token. Agents gebruiken het mcp-token, niet het token waarmee de telefoon koppelt. Zie hieronder.
Verbinding geweigerd of een time-outDe server draait niet, de poort klopt niet, of een firewall op de machine blokkeert poort 8800. Controleer bij Docker de poortkoppeling 8800:8800.

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.