Marrow Health
IT
Scarica

Il mirror self-hosted

Un piccolo server su un hardware tuo che tiene una copia completa e in tempo reale dei tuoi dati di Marrow e risponde agli agenti mentre il telefono è in standby, in tasca o dall'altra parte del mondo.

La configurazione per ogni singola app è nella sua pagina in connessioni.

Tutte le guide di Marrow: MCP · Mirror self-hosted · Automazioni · File · Assistenza

Che cos'è

Un piccolo server open source che gestisci su un hardware tuo: un Raspberry Pi, un NAS, un vecchio portatile, una VPS da $5. Il tuo telefono si abbina una volta sola scansionando un codice QR, poi invia ogni modifica in background, con l'app chiusa. Il server conserva una copia SQLite completa dei tuoi dati di Marrow e offre tredici strumenti MCP di lettura: i sette del telefono, sleep_log e symptoms_and_mood, e quattro che rispondono con i termini propri dell'app (daily_brief, baselines, what_changed, data_quality), così un agente può chiedere «come ho dormito questa settimana» alle 3 di notte con il tuo telefono in un cassetto. Con licenza MIT: github.com/MarrowHealth/marrow-mcp.

Installazione

Un solo file Python, solo libreria standard, Python 3.10 o successivo:

pip install marrow-mcp
marrow-server         # or: python3 marrow_server.py

Oppure con Docker:

git clone https://github.com/MarrowHealth/marrow-mcp
cd marrow-mcp
docker compose up -d

Al primo avvio stampa un URL di abbinamento e mostra un codice QR in qualsiasi browser sulla tua rete.

Abbina il telefono

  1. Apri l'URL di abbinamento su qualsiasi schermo vicino a te.
  2. In Marrow: Esporta, MCP server, Abbina a un server, scansiona il codice.
  3. Fatto. Il telefono inizia a inviare, e la pagina Server mostra l'ora dell'ultimo invio e quanti record sono in attesa.

L'abbinamento crea due token nella cartella dati del server: uno che il telefono usa per inviare, uno che gli agenti usano per leggere. Elimina un file di token per ruotarlo.

Punta un agente su di esso

claude mcp add --transport http marrow http://<server-ip>:8800/mcp \
  --header "Authorization: Bearer <mcp token>"

Tredici strumenti, tutti di lettura. I nove grezzi: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. E quattro che partono da dove si fermano quelli grezzi, valutati rispetto alla tua normalità recente con gli stessi calcoli della pagina Home dell'app: daily_brief (un giorno: ogni metrica chiave con il suo valore e l'espressione propria dell'app, cibo e acqua rispetto ai tuoi obiettivi, il sonno della notte scorsa, l'allenamento fatto, i segnali degni di nota), baselines (la tua normalità per metrica, lo z dell'ultimo valore e la tendenza a 90 giorni), what_changed (l'ultima settimana rispetto alle quattro precedenti: che cosa si è mosso, quanto è notevole per te, spostamenti di sonno e orario di coricarsi, flussi che hanno iniziato o smesso) e data_quality (che cosa è aggiornato, vecchio o mancante, così un agente non scambia mai un vuoto per un fatto). Ogni lettura accetta i giorni indietro oppure da e a sul calendario del telefono. Il server elenca anche quattro prompt (how_am_i_doing, weekly_review, doctor_prep, log_from_text) e quattro risorse per i client che li mostrano. Porta anche dodici strumenti di scrittura, elencati quando il tuo telefono li consente. Da Marrow 1.5, attiva Consenti scrittura all'IA per il tuo server in Esporta, Le tue connessioni e un'IA può registrare tramite esso pasti, acqua, peso, allenamenti, sonno, sintomi, umore e obiettivi, gratis. Il server mette in coda ogni voce e il telefono la applica quando Marrow si apre o si riattiva, e ognuna si può annullare. La configurazione per Claude Desktop, Cursor e altri è nella pagina MCP. Cambia solo l'URL.

Raggiungerlo da fuori della tua LAN

Il server parla semplice HTTP e non ha un TLS proprio. Non fare port-forward diretto. Metti Tailscale sulla macchina e sul telefono e usa tailscale serve, oppure mettilo dietro un Cloudflare Tunnel o qualsiasi reverse proxy che termini l'HTTPS. Il QR di abbinamento porta l'indirizzo che il server annuncia: il suo indirizzo LAN, o quello che gli dai con --url. Avvialo con l'indirizzo che userai davvero, per esempio marrow-server --url https://pi.your-tailnet.ts.net, poi abbina.

Che cosa finisce sul disco

Unità: le metriche di salute arrivano nelle unità SI salvate con le etichette. Le serie di forza arrivano in libbre con "unit": "lb" qualunque sia l'impostazione di visualizzazione del telefono, così il mirror non mescola mai le unità. Punta Grafana, DuckDB o un cron job direttamente sul file del database.

Risoluzione dei problemi

Due test dal computer su cui gira la tua IA ti dicono dov'è il problema. Primo, il server è attivo? Questo non richiede token:

curl http://<server-ip>:8800/health

Risponde {"server": "marrow", "ok": true}. Poi, il token del tuo agente funziona?

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"}'
Che cosa ottieniChe cosa significa
200 OK e un elenco di strumentiIl server funziona. Controlla l'indirizzo, il token e il tipo di server (HTTP) nella configurazione del tuo agente, poi riavvia l'agente.
401 con bad bearer tokenToken sbagliato. Gli agenti usano il token mcp, non quello con cui si abbina il telefono. Vedi sotto.
Connessione rifiutata o timeoutIl server non è in esecuzione, la porta è sbagliata, oppure un firewall sulla macchina blocca la porta 8800. Con Docker, controlla la mappatura delle porte 8800:8800.

Quando sceglierlo rispetto agli altri

Scegli il mirror quando il tuo agente ha bisogno dei dati mentre il telefono è in standby o lontano, o quando vuoi un database interrogabile e non file. Scegli il server MCP sul telefono quando il tuo agente gira vicino al telefono e non vuoi altro da mantenere. Scegli le automazioni quando hai già un posto in cui i dati devono arrivare.