Marrow Health
ID
Unduh

Mirror self-hosted

Server kecil di perangkat keras milikmu yang menyimpan salinan lengkap dan langsung dari data Marrow kamu dan menjawab agen saat ponselmu tidur, ada di saku, atau berada di belahan dunia lain.

Pengaturan per aplikasi ada di halamannya sendiri di bawah koneksi.

Semua panduan Marrow: MCP · Mirror self-hosted · Otomatisasi · File · Dukungan

Apa itu

Server sumber terbuka kecil yang kamu jalankan di perangkat keras milikmu: Raspberry Pi, NAS, laptop lama, VPS $5. Ponselmu dipasangkan sekali dengan memindai kode QR, lalu mengirim setiap perubahan di latar belakang, dengan aplikasi tertutup. Server menyimpan salinan SQLite lengkap dari data Marrow kamu dan menyajikan tiga belas tool MCP untuk membaca: tujuh milik ponsel, sleep_log dan symptoms_and_mood, serta empat yang menjawab dengan istilah aplikasi sendiri (daily_brief, baselines, what_changed, data_quality), sehingga agen bisa bertanya "bagaimana tidur saya minggu ini" pukul 3 pagi dengan ponselmu di dalam laci. Berlisensi MIT: github.com/MarrowHealth/marrow-mcp.

Pasang

Satu file Python, hanya pustaka standar, Python 3.10 atau lebih baru:

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

Atau dengan Docker:

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

Saat pertama dijalankan, ia mencetak URL penyandingan dan menampilkan kode QR di browser mana pun di jaringanmu.

Pasangkan ponsel

  1. Buka URL penyandingan di layar mana pun di dekatmu.
  2. Di Marrow: Ekspor, MCP server, Pasangkan dengan server, pindai kodenya.
  3. Selesai. Ponsel mulai mengirim, dan halaman Server menampilkan waktu pengiriman terakhir dan berapa banyak catatan yang menunggu.

Penyandingan membuat dua token di direktori data server: satu dipakai ponsel untuk mengirim, satu dipakai agen untuk membaca. Hapus file token untuk menggantinya.

Arahkan agen ke sana

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

Tiga belas tool, semuanya hanya baca. Sembilan yang mentah: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. Dan empat yang mulai dari tempat yang mentah berhenti, dinilai terhadap kondisi normal terkini milikmu sendiri dengan perhitungan yang sama dengan halaman Beranda aplikasi: daily_brief (satu hari: setiap metrik utama dengan nilainya dan frasa dari aplikasi sendiri, makanan dan air terhadap targetmu, tidur semalam, latihan yang dilakukan, tanda-tanda yang layak disebut), baselines (kondisi normalmu sendiri per metrik, z dari nilai terbaru, dan tren 90 hari), what_changed (minggu terakhir dibandingkan empat minggu sebelumnya: apa yang bergerak, seberapa penting bagimu, pergeseran tidur dan jam tidur, aliran data yang mulai atau berhenti) dan data_quality (apa yang segar, basi, atau hilang, agar agen tidak pernah keliru menganggap celah sebagai fakta). Setiap bacaan menerima jumlah hari ke belakang atau from dan to menurut kalender ponsel. Server juga mencantumkan empat prompt (how_am_i_doing, weekly_review, doctor_prep, log_from_text) dan empat resource untuk klien yang menampilkannya. Server ini juga membawa dua belas tool tulis, yang dicantumkan begitu ponselmu mengizinkannya. Mulai Marrow 1.5, nyalakan Izinkan AI menulis untuk servermu di Ekspor, Koneksi kamu dan sebuah AI bisa mencatat makanan, air, berat badan, latihan, tidur, gejala, suasana hati, dan target lewat server itu, gratis. Server mengantrekan setiap entri dan ponsel menerapkannya saat Marrow dibuka atau bangun, dan setiap entri bisa dibatalkan. Pengaturan untuk Claude Desktop, Cursor, dan lainnya ada di halaman MCP. Hanya URL-nya yang berubah.

Menjangkaunya dari luar LAN-mu

Server berbicara HTTP biasa dan tidak punya TLS sendiri. Jangan lakukan port-forward mentah-mentah. Pasang Tailscale di perangkat itu dan di ponsel lalu pakai tailscale serve, atau taruh Cloudflare Tunnel atau reverse proxy mana pun yang mengakhiri HTTPS di depannya. QR penyandingan membawa alamat yang diumumkan server: alamat LAN-nya sendiri, atau yang kamu berikan dengan --url. Mulai server dengan alamat yang benar-benar akan kamu pakai, misalnya marrow-server --url https://pi.your-tailnet.ts.net, lalu pasangkan.

Apa yang tersimpan di disk

Satuan: metrik Kesehatan datang dalam satuan SI yang tersimpan beserta labelnya. Set kekuatan datang dalam pon dengan "unit": "lb" apa pun pengaturan tampilan ponsel, jadi mirror tidak pernah mencampur satuan. Arahkan Grafana, DuckDB, atau cron job langsung ke file database.

Pemecahan masalah

Dua uji dari komputer tempat AI kamu berjalan akan menunjukkan di mana masalahnya. Pertama, apakah server menyala? Ini tidak membutuhkan token:

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

Ia menjawab {"server": "marrow", "ok": true}. Lalu, apakah token agenmu berfungsi?

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"}'
Yang kamu dapatArtinya
200 OK dan daftar toolServernya berfungsi. Periksa alamat, token, dan jenis server (HTTP) di konfigurasi agenmu, lalu mulai ulang agennya.
401 dengan bad bearer tokenToken salah. Agen memakai token mcp, bukan yang dipasangkan dengan ponsel. Lihat di bawah.
Koneksi ditolak atau timeoutServer tidak berjalan, port salah, atau firewall di perangkat itu memblokir port 8800. Dengan Docker, periksa pemetaan port 8800:8800.

Kapan memilih ini dibanding yang lain

Pilih mirror kalau agenmu butuh data saat ponselmu tidur atau jauh, atau kalau kamu ingin database yang bisa di-query, bukan file. Pilih server MCP di ponsel kalau agenmu berjalan di dekat ponsel dan kamu tidak ingin ada lagi yang dirawat. Pilih otomatisasi kalau kamu sudah punya tempat tujuan data.