Oglinda auto-găzduită
Un mic server pe hardware-ul tău, care ține o copie completă și live a datelor tale Marrow și răspunde agenților cât telefonul doarme, e în buzunar sau e la capătul lumii.
Configurarea pentru fiecare aplicație în parte este pe pagina ei, la conexiuni.
Toate ghidurile Marrow: MCP · Oglindă auto-găzduită · Automatizări · Fișiere · Asistență
Ce este
Un mic server open source pe care îl rulezi pe hardware-ul tău: un Raspberry Pi, un NAS, un laptop vechi, un VPS de $5. Telefonul tău se asociază cu el o singură dată scanând un cod QR, apoi trimite fiecare schimbare în fundal, cu aplicația închisă. Serverul păstrează o copie SQLite completă a datelor tale Marrow și servește treisprezece instrumente MCP pentru citire: cele șapte ale telefonului, sleep_log și symptoms_and_mood, plus patru care răspund în termenii proprii ai aplicației (daily_brief, baselines, what_changed, data_quality), așa că un agent poate întreba „cum am dormit săptămâna asta” la 3 dimineața, cu telefonul într-un sertar. Licență MIT: github.com/MarrowHealth/marrow-mcp.
Instalare
Un fișier Python, doar biblioteca standard, Python 3.10 sau mai nou:
pip install marrow-mcp marrow-server # or: python3 marrow_server.py
Sau cu Docker:
git clone https://github.com/MarrowHealth/marrow-mcp cd marrow-mcp docker compose up -d
La prima pornire afișează un URL de asociere și arată un cod QR în orice browser din rețeaua ta.
Asociază telefonul
- Deschide URL-ul de asociere pe orice ecran din apropierea ta.
- În Marrow: Exportă, MCP pe server, Asociază cu un server, scanează codul.
- Gata. Telefonul începe să trimită, iar pagina Server arată ora ultimei trimiteri și câte înregistrări așteaptă.
Asocierea creează două tokenuri în directorul de date al serverului: unul pe care îl folosește telefonul ca să trimită și unul pe care îl folosesc agenții ca să citească. Șterge un fișier de token ca să-l schimbi.
Îndreaptă un agent spre el
claude mcp add --transport http marrow http://<server-ip>:8800/mcp \ --header "Authorization: Bearer <mcp token>"
Treisprezece instrumente, toate de citire. Cele nouă brute: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. Și patru care încep unde se opresc cele brute, raportate la normalul tău recent, cu aceleași calcule pe care le folosește pagina Acasă a aplicației: daily_brief (o zi: fiecare metrică cheie cu valoarea ei și fraza proprie a aplicației, mâncarea și apa față de obiective, somnul de azi-noapte, antrenamentul făcut, indicatori care merită pomeniți), baselines (normalul tău pe metrică, z-ul ultimei valori și tendința pe 90 de zile), what_changed (ultima săptămână față de cele patru dinainte: ce s-a mișcat, cât de notabil e pentru tine, schimbări de somn și de ora de culcare, fluxuri care au început sau s-au oprit) și data_quality (ce e proaspăt, vechi sau lipsă, ca un agent să nu confunde niciodată un gol cu un fapt). Fiecare citire primește zile în urmă sau from și to, pe calendarul telefonului. Serverul listează și patru prompturi (how_am_i_doing, weekly_review, doctor_prep, log_from_text) și patru resurse pentru clienții care le arată. Are și douăsprezece instrumente de scriere, listate după ce telefonul tău le permite. De la Marrow 1.5, activează Permite scrierea de către AI pentru serverul tău în Exportă, Conexiunile tale și un AI poate înregistra prin el mese, apă, greutate, antrenamente, somn, simptome, dispoziție și obiective, gratuit. Serverul pune fiecare intrare la coadă, iar telefonul o aplică când Marrow se deschide sau se trezește, și fiecare poate fi anulată. Configurarea pentru Claude Desktop, Cursor și altele este pe pagina MCP. Se schimbă doar URL-ul.
Cum ajungi la el din afara LAN-ului
Serverul vorbește HTTP simplu și nu are TLS propriu. Nu redirecționa porturi către el în stare brută. Pune Tailscale pe mașină și pe telefon și folosește tailscale serve sau pune în față un Cloudflare Tunnel sau orice reverse proxy care termină HTTPS. Codul QR de asociere poartă adresa pe care o anunță serverul: propria lui adresă din LAN sau cea pe care i-o dai cu --url. Pornește-l cu adresa pe care o vei folosi de fapt, de exemplu marrow-server --url https://pi.your-tailnet.ts.net, apoi asociază.
Ce ajunge pe disc
- O bază de date SQLite cu fiecare serie zilnică, eșantion, intrare de jurnal și serie de forță, ținută la zi de trimiterile telefonului.
- Fiecare trimitere brută păstrată ca JSONL alături, ca baza de date să poată fi reconstruită dacă o strici vreodată.
- Socotește 50 până la 150 MB pe an de istoric complet.
Unități: metricile de sănătate ajung în unitățile SI stocate, cu etichete. Seriile de forță ajung în livre, cu "unit": "lb", indiferent de setarea de afișare a telefonului, așa că oglinda nu amestecă niciodată unitățile. Îndreaptă Grafana, DuckDB sau un job cron direct spre fișierul bazei de date.
Depanare
Două teste de pe calculatorul pe care rulează AI-ul tău îți spun unde e problema. Mai întâi, funcționează serverul? Acesta nu cere token:
curl http://<server-ip>:8800/health
Răspunde cu {"server": "marrow", "ok": true}. Apoi, funcționează tokenul agentului tău?
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"}'
| Ce primești | Ce înseamnă |
|---|---|
200 OK și o listă de instrumente | Serverul funcționează. Verifică adresa, tokenul și tipul serverului (HTTP) în configurația agentului tău, apoi repornește agentul. |
401 cu bad bearer token | Token greșit. Agenții folosesc tokenul mcp, nu cel cu care se asociază telefonul. Vezi mai jos. |
| Conexiune refuzată sau expirare | Serverul nu rulează, portul este greșit sau un firewall de pe mașină blochează portul 8800. Cu Docker, verifică maparea de port 8800:8800. |
- Ce token. Serverul afișează tokenul agenților când pornește, pe linia care începe cu
agents:. Se află și în fișierul.mcp-tokendin dosarul de date (./datadacă nu ai dat--data,/dataîn Docker). Telefonul folosește un alt token, din.app-token. Ca să schimbi tokenul agenților, șterge.mcp-token, repornește serverul și actualizează fiecare agent. - Pagina de asociere spune că tokenul este greșit sau lipsește. Deschide linkul de asociere exact așa cum l-a afișat serverul, cu partea lui
?token=. - Pagina de asociere arată text, nu un cod QR. Codul QR are nevoie de pachetul opțional
segno:pip install "marrow-mcp[qr]". Sau, în Marrow, alege Introdu manual și tasteazăurlșitokendin acel text. - Asocierea a eșuat pe telefon. Telefonul nu a putut ajunge la adresa din codul QR. Sub Docker, serverul vede doar adresa proprie a containerului, așa că dă-i-o pe a ta: adaugă
--url http://<your-computer-ip>:8800la comanda lui. În afara Wi-Fi-ului de acasă, folosește o adresă HTTPS de latailscale servesau de la un tunel. - Accesul la Local Network. Ca să ajungă la un server din rețeaua ta de acasă, Marrow are nevoie de acces la Local Network. iOS întreabă prima dată când asociezi. Dacă ai spus nu, activează Marrow în Settings, Privacy and Security, Local Network, apoi asociază din nou cu Marrow deschis.
- Codul QR acela nu este un cod de asociere Marrow. Camera a citit alt cod. Scanează-l pe cel de pe pagina de asociere a serverului.
- Date vechi sau Datele nu ajung în Marrow. Telefonul nu poate trimite la server. Pagina MCP pe server din Marrow arată ultima trimitere și câte înregistrări așteaptă. Verifică dacă serverul rulează, apoi deschide Marrow ca să trimită ce așteaptă. Trimiterile în fundal rulează când permite iOS.
- Acest server are nevoie de o actualizare înainte să poată înregistra. Actualizează-l cu
pip install -U marrow-mcpși repornește-l. Cu Docker, ruleazăgit pullșidocker compose up -d --buildîn clonă. - Intrările de la AI nu apar. Activează Permite scrierea de către AI pentru server în Exportă, Conexiunile tale. Instrumentele de scriere apar pe server abia după aceea. Fiecare intrare așteaptă pe server și ajunge când Marrow se deschide sau se trezește data viitoare.
- Conexiunea nu se activează. Gratuit păstrează 1 conexiune activă odată, Marrow Pro până la 10: AI-uri, servere și automatizări la un loc.
Când o alegi pe aceasta în loc de celelalte
Alege oglinda când agentul tău are nevoie de date cât telefonul doarme sau e departe, sau când vrei o bază de date interogabilă în loc de fișiere. Alege serverul MCP de pe telefon când agentul rulează lângă telefon și nu vrei nimic altceva de întreținut. Alege automatizările când ai deja un loc în care ar trebui să ajungă datele.