A saját üzemeltetésű tükör
Egy kis szerver a saját hardveredön, amely a Marrow-adataid teljes, élő másolatát tartja, és válaszol az ügynököknek, amíg a telefonod alszik, a zsebedben van, vagy a világ másik felén.
Az egyes appok beállítása a saját oldalán található a kapcsolatok alatt.
Az összes Marrow-útmutató: MCP · Saját üzemeltetésű tükör · Automatizálások · Fájlok · Támogatás
Mi ez
Egy kis nyílt forráskódú szerver, amelyet a saját hardveredön futtatsz: egy Raspberry Pi-n, egy NAS-on, egy régi laptopon, egy $5-os VPS-en. A telefonod egyszer párosul vele egy QR-kód beolvasásával, aztán minden változást a háttérben küld, zárt appal. A szerver a Marrow-adataid teljes SQLite-másolatát tartja, és tizenhárom MCP-eszközt szolgál ki olvasásra: a telefon hetét, a sleep_log és a symptoms_and_mood eszközt, valamint négyet, amelyek az app saját fogalmaival válaszolnak (daily_brief, baselines, what_changed, data_quality), így egy ügynök hajnali 3-kor is megkérdezheti: „hogyan aludtam ezen a héten”, miközben a telefonod egy fiókban van. MIT licenc: github.com/MarrowHealth/marrow-mcp.
Telepítés
Egyetlen Python-fájl, csak a standard könyvtárral, Python 3.10 vagy újabb:
pip install marrow-mcp marrow-server # or: python3 marrow_server.py
Vagy Docker-rel:
git clone https://github.com/MarrowHealth/marrow-mcp cd marrow-mcp docker compose up -d
Az első indításkor kiír egy párosítási URL-t, és QR-kódot mutat a hálózatod bármelyik böngészőjében.
A telefon párosítása
- Nyisd meg a párosítási URL-t egy közeli képernyőn.
- A Marrow-ban: Exportálás, Szerver MCP, Párosítás szerverrel, olvasd be a kódot.
- Kész. A telefon elkezd küldeni, és a Szerver oldal megmutatja az utolsó küldés idejét és hogy hány rekord vár.
A párosítás két tokent hoz létre a szerver adatkönyvtárában: az egyiket a telefon használja a küldéshez, a másikat az ügynökök az olvasáshoz. Egy token cseréjéhez töröld a token fájlját.
Irányíts rá egy ügynököt
claude mcp add --transport http marrow http://<server-ip>:8800/mcp \ --header "Authorization: Bearer <mcp token>"
Tizenhárom eszköz, mind olvasásra. A kilenc nyers: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. És négy, amely ott kezdődik, ahol a nyersek véget érnek, a saját, hátrafelé számolt normáloddal összevetve, ugyanazzal a matematikával, amelyet az app Kezdőlapja használ: daily_brief (egy nap: minden kulcsmutató az értékével és az app saját megfogalmazásával, étel és víz a célokhoz mérve, a tegnap éjszakai alvás, az elvégzett edzés, a megemlítésre érdemes jelzések), baselines (a saját normálod mutatónként, a legutóbbi érték z-értéke és a 90 napos trend), what_changed (az elmúlt hét az azt megelőző négyhez képest: mi mozdult, mennyire figyelemre méltó ez nálad, alvás és lefekvés eltolódásai, adatfolyamok, amelyek megindultak vagy leálltak) és data_quality (mi friss, mi elavult vagy hiányzik, így az ügynök sosem téveszt össze egy hiányt egy ténnyel). Minden olvasás fogad visszamenőleges napokat vagy kezdő- és végdátumot a telefon naptára szerint. A szerver négy promptot (how_am_i_doing, weekly_review, doctor_prep, log_from_text) és négy erőforrást is listáz az ezeket megjelenítő klienseknek. Tizenkét író eszközt is hordoz, amelyek akkor jelennek meg, ha a telefonod engedélyezi őket. A Marrow 1.5-től kapcsold be a szerveredhez az AI-írás engedélyezése opciót az Exportálás, Kapcsolataid alatt, és egy AI naplózhat rajta át étkezéseket, vizet, testsúlyt, edzéseket, alvást, tüneteket, hangulatot és célokat, ingyen. A szerver sorba állítja az egyes bejegyzéseket, a telefon pedig akkor alkalmazza őket, amikor a Marrow megnyílik vagy felébred, és mindegyik visszavonható. A Claude Desktop, a Cursor és mások beállítása az MCP oldalon található. Csak az URL változik.
Elérés a LAN-on kívülről
A szerver sima HTTP-t beszél, és nincs saját TLS-e. Ne irányítsd át nyersen a portját. Tedd fel a Tailscale-t a gépre és a telefonra, és használd a tailscale serve parancsot, vagy tegyél elé egy Cloudflare Tunnel-t vagy bármilyen fordított proxyt, amely lezárja a HTTPS-t. A párosítási QR azt a címet hordozza, amelyet a szerver hirdet: a saját LAN-címét, vagy azt, amelyet a --url kapcsolóval megadsz neki. Azzal a címmel indítsd, amelyet ténylegesen használni fogsz, például marrow-server --url https://pi.your-tailnet.ts.net, aztán párosíts.
Mi kerül a lemezre
- Egy SQLite-adatbázis minden napi adatsorral, mintával, naplóbejegyzéssel és erőnléti sorozattal, amelyet a telefon küldései tartanak frissen.
- Minden nyers küldés JSONL-ként elmentve mellette, így az adatbázis újraépíthető, ha valaha elrontanád.
- Számolj évi 50-150 MB-tal a teljes pontosságú előzményekhez.
Mértékegységek: az egészségmutatók a tárolt SI-egységeikben érkeznek, címkékkel. Az erőnléti sorozatok fontban érkeznek "unit": "lb" jelöléssel, a telefon megjelenítési beállításától függetlenül, így a tükör sosem keveri a mértékegységeket. Irányítsd közvetlenül az adatbázisfájlra a Grafana-t, a DuckDB-t vagy egy cron-feladatot.
Hibaelhárítás
Két teszt azon a számítógépen, amelyen az AI fut, megmondja, hol a probléma. Először: fut a szerver? Ehhez nem kell token:
curl http://<server-ip>:8800/health
Ezt válaszolja: {"server": "marrow", "ok": true}. Aztán: működik az ügynököd tokenje?
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"}'
| Mit kapsz | Mit jelent |
|---|---|
200 OK és egy eszközlista | A szerver működik. Ellenőrizd a címet, a tokent és a szerver-típust (HTTP) az ügynököd konfigurációjában, aztán indítsd újra az ügynököt. |
401 a bad bearer token üzenettel | Rossz token. Az ügynökök az mcp tokent használják, nem azt, amellyel a telefon párosul. Lásd alább. |
| Kapcsolat elutasítva vagy időtúllépés | A szerver nem fut, rossz a port, vagy a gépen egy tűzfal blokkolja a 8800-as portot. Docker esetén ellenőrizd a 8800:8800 portleképezést. |
- Melyik token. A szerver induláskor kiírja az ügynökök tokenjét, abban a sorban, amely
agents:szóval kezdődik. Ott van az adatmappa.mcp-tokenfájljában is (./data, hacsak nem adtál meg--dataértéket, Dockerben/data). A telefon másik tokent használ, a.app-tokenfájlból. Az ügynökök tokenjének megváltoztatásához töröld a.mcp-tokenfájlt, indítsd újra a szervert, és frissíts minden ügynököt. - A párosítási oldal hibás vagy hiányzó tokent jelez. Pontosan úgy nyisd meg a párosítási linket, ahogy a szerver kiírta, a
?token=résszel együtt. - A párosítási oldal szöveget mutat, nem QR-kódot. A QR-hoz az opcionális
segnocsomag kell:pip install "marrow-mcp[qr]". Vagy a Marrow-ban válaszd az Inkább kézi megadás lehetőséget, és írd be aurlés atokenértékét abból a szövegből. - Sikertelen párosítás a telefonon. A telefon nem érte el a QR-ban lévő címet. Dockerben a szerver csak a konténer saját címét látja, ezért add meg a tiédet: fűzd hozzá a parancsához a
--url http://<your-computer-ip>:8800részt. Az otthoni Wi-Fi-n kívül használj HTTPS-címet atailscale serveparancsból vagy egy alagútból. - Helyi hálózati hozzáférés. Az otthoni hálózaton lévő szerver eléréséhez a Marrow-nak helyi hálózati hozzáférés kell. Az iOS az első párosításkor rákérdez. Ha nemet mondtál, kapcsold be a Marrow-t a Beállítások, Adatvédelem és biztonság, Helyi hálózat alatt, aztán párosíts újra nyitott Marrow-val.
- Ez a QR-kód nem Marrow párosítási kód. A kamera egy másik kódot olvasott be. Olvasd be azt, amelyik a szerver párosítási oldalán van.
- Régi adatok, vagy „Nem érkeznek adatok” a Marrow-ban. A telefon nem tud küldeni a szervernek. A Marrow Szerver MCP oldala megmutatja az utolsó küldést és hogy hány rekord vár. Ellenőrizd, hogy a szerver fut, aztán nyisd meg a Marrow-t, hogy elküldje, ami vár. A háttérküldések akkor futnak, amikor az iOS engedi.
- Ezt a szervert frissíteni kell, mielőtt naplózhatna. Frissítsd a
pip install -U marrow-mcpparanccsal, és indítsd újra. Docker esetén futtasd agit pullés adocker compose up -d --buildparancsot a klónban. - Az AI bejegyzései nem jelennek meg. Kapcsold be az AI-írás engedélyezése opciót a szerverhez az Exportálás, Kapcsolataid részben. Az író eszközök csak ezután jelennek meg a szerveren. Minden bejegyzés a szerveren vár, és akkor érkezik meg, amikor a Marrow legközelebb megnyílik vagy felébred.
- A kapcsolat nem kapcsol be. Az Ingyenes csomagban egyszerre 1 kapcsolat lehet bekapcsolva, a Marrow Pro-ban legfeljebb 10: az AI-k, a szerverek és az automatizálások együtt.
Mikor válaszd ezt a többi helyett
A tükröt válaszd, ha az ügynöködnek akkor is kell az adat, amikor a telefonod alszik vagy távol van, vagy ha fájlok helyett lekérdezhető adatbázist szeretnél. A telefonon futó MCP-szervert válaszd, ha az ügynököd a telefon közelében fut, és nem akarsz mást karbantartani. Az automatizálásokat válaszd, ha már van helyed, ahová az adatnak meg kell érkeznie.