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
- Apri l'URL di abbinamento su qualsiasi schermo vicino a te.
- In Marrow: Esporta, MCP server, Abbina a un server, scansiona il codice.
- 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
- Un database SQLite con ogni serie giornaliera, campione, voce del diario e serie di forza, tenuto aggiornato dagli invii del telefono.
- Ogni invio grezzo messo da parte come JSONL accanto, così il database si può ricostruire se mai lo rovini.
- Calcola da 50 a 150 MB all'anno di cronologia a piena fedeltà.
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 ottieni | Che cosa significa |
|---|---|
200 OK e un elenco di strumenti | Il 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 token | Token sbagliato. Gli agenti usano il token mcp, non quello con cui si abbina il telefono. Vedi sotto. |
| Connessione rifiutata o timeout | Il 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. |
- Quale token. Il server stampa il token degli agenti all'avvio, sulla riga che inizia con
agents:. Si trova anche nel file.mcp-tokennella cartella dati (./dataa meno che tu non abbia passato--data,/datain Docker). Il telefono usa un token diverso, da.app-token. Per cambiare il token degli agenti, elimina.mcp-token, riavvia il server e aggiorna ogni agente. - La pagina di abbinamento dice token sbagliato o mancante. Apri il link di abbinamento esattamente come l'ha stampato il server, con la sua parte
?token=. - La pagina di abbinamento mostra del testo, non un codice QR. Il QR richiede il pacchetto facoltativo
segno:pip install "marrow-mcp[qr]". Oppure, in Marrow, scegli Inserisci invece manualmente e digitaurletokenda quel testo. - Abbinamento non riuscito sul telefono. Il telefono non ha potuto raggiungere l'indirizzo nel QR. Con Docker il server vede solo l'indirizzo del proprio container, quindi dagli il tuo: aggiungi
--url http://<your-computer-ip>:8800al suo comando. Fuori dal Wi-Fi di casa, usa un indirizzo HTTPS datailscale serveo da un tunnel. - Accesso alla rete locale. Per raggiungere un server sulla tua rete di casa, Marrow ha bisogno dell'accesso alla rete locale. iOS lo chiede la prima volta che abbini. Se hai detto no, attiva Marrow in Impostazioni, Privacy e sicurezza, Rete locale, poi abbina di nuovo con Marrow aperto.
- Quel codice QR non è un codice di abbinamento di Marrow. La fotocamera ha letto un altro codice. Scansiona quello nella pagina di abbinamento del server.
- Dati vecchi, oppure Non riceve dati in Marrow. Il telefono non riesce a inviare al server. La pagina MCP server in Marrow mostra l'ultimo invio e quanti record sono in attesa. Controlla che il server sia in esecuzione, poi apri Marrow per inviare ciò che è in attesa. Gli invii in background partono quando iOS lo consente.
- Questo server ha bisogno di un aggiornamento prima di poter registrare. Aggiornalo con
pip install -U marrow-mcpe riavvialo. Con Docker, eseguigit pulledocker compose up -d --buildnel clone. - Le voci dall'IA non compaiono. Attiva Consenti scrittura all'IA per il server in Esporta, Le tue connessioni. Gli strumenti di scrittura compaiono sul server solo dopo. Ogni voce aspetta sul server e arriva alla successiva apertura o riattivazione di Marrow.
- La connessione non si attiva. Il piano gratuito ne tiene attiva 1 alla volta, Marrow Pro fino a 10: IA, server e automazioni insieme.
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.