Дзеркало на власному сервері
Невеликий сервер на обладнанні, яким ви володієте, що зберігає повну живу копію ваших даних 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-код у будь-якому браузері у вашій мережі.
З'єднайте телефон
- Відкрийте URL для з'єднання на будь-якому екрані поруч із вами.
- У Marrow: Експорт, Серверний MCP, З'єднати із сервером, скануйте код.
- Готово. Телефон починає надсилати дані, а на сторінці 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, а потім з'єднуйтеся.
Що потрапляє на диск
- База даних SQLite з кожним денним рядом, вимірюванням, записом щоденника та силовим підходом, яку телефон підтримує актуальною надсиланнями.
- Кожне сире надсилання зберігається поруч як JSONL, щоб базу можна було перебудувати, якщо ви її колись зіпсуєте.
- Закладайте від 50 до 150 МБ на рік повної історії.
Одиниці: показники здоров'я надходять у збережених одиницях 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. |
- Який токен. Сервер виводить токен для агентів під час запуску в рядку, що починається з
agents:. Він також лежить у файлі.mcp-tokenу теці даних (./data, якщо ви не передали--data,/dataу Docker). Телефон використовує інший токен, з.app-token. Щоб змінити токен агентів, видаліть.mcp-token, перезапустіть сервер і оновіть кожного агента. - Сторінка з'єднання пише bad or missing token. Відкрийте посилання для з'єднання точно так, як його вивів сервер, з частиною
?token=. - Сторінка з'єднання показує текст, а не QR-код. Для QR потрібен необов'язковий пакет
segno:pip install "marrow-mcp[qr]". Або в Marrow виберіть Ввести вручну і введітьurlіtokenз цього тексту. - Не вдалося створити пару на телефоні. Телефон не зміг дістатися до адреси в QR. У Docker сервер бачить лише власну адресу контейнера, тож вкажіть йому вашу: додайте до його команди
--url http://<your-computer-ip>:8800. Поза вашим домашнім Wi-Fi використовуйте адресу HTTPS відtailscale serveабо тунелю. - Доступ до локальної мережі. Щоб дістатися сервера у вашій домашній мережі, Marrow потрібен доступ до локальної мережі. iOS питає під час першого з'єднання. Якщо ви відмовили, увімкніть Marrow у Параметри, Конфіденційність і безпека, Локальна мережа, а потім з'єднайтеся знову при відкритому Marrow.
- Цей QR-код не є кодом з'єднання Marrow. Камера прочитала інший код. Скануйте той, що на сторінці з'єднання сервера.
- Старі дані або «Дані не надходять» у Marrow. Телефон не може надсилати дані на сервер. Сторінка Серверний MCP у Marrow показує останнє надсилання та скільки записів чекає. Перевірте, що сервер працює, а потім відкрийте Marrow, щоб надіслати те, що чекає. Фонові надсилання відбуваються, коли iOS дозволяє.
- Цей сервер потребує оновлення, щоб записувати. Оновіть його командою
pip install -U marrow-mcpі перезапустіть. У Docker виконайтеgit pullіdocker compose up -d --buildу клоні. - Записи від ШІ не з'являються. Увімкніть Дозволити запис для ШІ для сервера в Експорт, Ваші підключення. Інструменти запису з'являються на сервері лише після цього. Кожен запис чекає на сервері й потрапляє в Marrow, коли той наступного разу відкривається чи прокидається.
- Підключення не вмикається. У безкоштовному тарифі одночасно ввімкнено 1 підключення, у Marrow Pro до 10: ШІ, сервери й автоматизації разом.
Коли обирати це замість інших
Обирайте дзеркало, коли вашому агентові потрібні дані, поки телефон спить чи далеко, або коли вам потрібна база даних, до якої можна робити запити, а не файли. Обирайте MCP-сервер на телефоні, коли ваш агент працює поруч із телефоном і ви не хочете підтримувати нічого іншого. Обирайте автоматизації, коли у вас уже є місце, куди дані мають потрапляти.