Marrow Health
UK
Завантажити

Дзеркало на власному сервері

Невеликий сервер на обладнанні, яким ви володієте, що зберігає повну живу копію ваших даних Marrow і відповідає агентам, поки ваш телефон спить, лежить у кишені або на іншому кінці світу.

Налаштування для кожного застосунку окремо є на його власній сторінці в розділі підключень.

Усі посібники Marrow: MCP · Дзеркало на власному сервері · Автоматизації · Файли · Підтримка

Що це

Невеликий сервер із відкритим кодом, який ви запускаєте на обладнанні, яким володієте: Raspberry Pi, NAS, старий ноутбук, VPS за $5. Ваш телефон з'єднується з ним один раз скануванням QR-коду, а потім надсилає кожну зміну у фоні, коли застосунок закрито. Сервер зберігає повну копію SQLite ваших даних Marrow і віддає тринадцять MCP-інструментів для читання: сім з телефона, sleep_log і symptoms_and_mood, а також чотири, що відповідають термінами самого застосунку (daily_brief, baselines, what_changed, data_quality), тож агент може спитати «як я спав цього тижня» о 3-й ночі, коли ваш телефон лежить у шухляді. Ліцензія MIT: github.com/MarrowHealth/marrow-mcp.

Встановлення

Один файл Python, лише стандартна бібліотека, Python 3.10 або новіший:

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

Або з Docker:

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

Під час першого запуску він виводить URL для з'єднання та показує QR-код у будь-якому браузері у вашій мережі.

З'єднайте телефон

  1. Відкрийте URL для з'єднання на будь-якому екрані поруч із вами.
  2. У Marrow: Експорт, Серверний MCP, З'єднати із сервером, скануйте код.
  3. Готово. Телефон починає надсилати дані, а на сторінці Server видно час останнього надсилання та скільки записів чекає.

З'єднання створює два токени в теці даних сервера: один телефон використовує для надсилання, інший агенти використовують для читання. Видаліть файл токена, щоб його замінити.

Спрямуйте на нього агента

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

Тринадцять інструментів, усі для читання. Дев'ять сирих: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. І чотири, що починають там, де закінчуються сирі, зіставляючи з вашою власною нормою за попередній період за тією ж математикою, що й сторінка Головна в застосунку: daily_brief (один день: кожен ключовий показник зі значенням і власною фразою застосунку, їжа та вода порівняно з цілями, сон минулої ночі, виконане тренування, прапорці, про які варто згадати), baselines (ваша власна норма за кожним показником, z останнього значення і 90-денний тренд), what_changed (останній тиждень порівняно з чотирма попередніми: що змінилося, наскільки це помітно для вас, зміни сну та часу відходу до сну, потоки, що почали або перестали надходити) і data_quality (що свіже, застаріле чи відсутнє, щоб агент ніколи не сплутав прогалину з фактом). Кожне читання приймає кількість днів назад або від і до за календарем телефона. Сервер також пропонує чотири підказки (how_am_i_doing, weekly_review, doctor_prep, log_from_text) і чотири ресурси для клієнтів, що їх показують. Він має й дванадцять інструментів запису, які з'являються, щойно ваш телефон їх дозволяє. Починаючи з Marrow 1.5, увімкніть Дозволити запис для ШІ для вашого сервера в Експорт, Ваші підключення, і ШІ зможе через нього записувати прийоми їжі, воду, вагу, тренування, сон, симптоми, настрій і цілі, безкоштовно. Сервер ставить кожен запис у чергу, а телефон застосовує його, коли Marrow відкривається чи прокидається, і кожен можна скасувати. Налаштування для Claude Desktop, Cursor та інших є на сторінці MCP. Змінюється лише URL.

Доступ ззовні вашої локальної мережі

Сервер говорить звичайним HTTP і не має власного TLS. Не відкривайте його порт напряму. Поставте Tailscale на пристрій і телефон та використовуйте tailscale serve або поставте перед ним Cloudflare Tunnel чи будь-який зворотний проксі, що завершує HTTPS. QR-код з'єднання містить адресу, яку оголошує сервер: його власну адресу в локальній мережі або ту, яку ви задали через --url. Запускайте його з адресою, якою ви справді користуватиметеся, наприклад marrow-server --url https://pi.your-tailnet.ts.net, а потім з'єднуйтеся.

Що потрапляє на диск

Одиниці: показники здоров'я надходять у збережених одиницях SI з підписами. Силові підходи надходять у фунтах з "unit": "lb" незалежно від налаштування показу на телефоні, тож дзеркало ніколи не змішує одиниці. Спрямуйте Grafana, DuckDB чи завдання cron просто на файл бази.

Усунення несправностей

Два тести з комп'ютера, на якому працює ваш ШІ, покажуть, де проблема. Спершу, чи працює сервер? Цей тест токена не потребує:

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

Він відповідає {"server": "marrow", "ok": true}. Потім, чи працює токен вашого агента?

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"}'
Що ви отримуєтеЩо це означає
200 OK і список інструментівСервер працює. Перевірте адресу, токен і тип сервера (HTTP) у конфігурації агента, а потім перезапустіть агента.
401 з bad bearer tokenНеправильний токен. Агенти використовують токен mcp, а не той, з яким з'єднується телефон. Див. нижче.
У з'єднанні відмовлено або тайм-аутСервер не запущено, порт неправильний або брандмауер на пристрої блокує порт 8800. У Docker перевірте відображення порту 8800:8800.

Коли обирати це замість інших

Обирайте дзеркало, коли вашому агентові потрібні дані, поки телефон спить чи далеко, або коли вам потрібна база даних, до якої можна робити запити, а не файли. Обирайте MCP-сервер на телефоні, коли ваш агент працює поруч із телефоном і ви не хочете підтримувати нічого іншого. Обирайте автоматизації, коли у вас уже є місце, куди дані мають потрапляти.