Marrow Health
RU
Скачать

Зеркало на своем сервере

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

Настройка для каждого приложения по отдельности находится на своей странице в разделе подключения.

Все руководства Marrow: MCP · Зеркало на своем сервере · Автоматизации · Файлы · Поддержка

Что это

Небольшой сервер с открытым кодом, который вы запускаете на своем оборудовании: Raspberry Pi, NAS, старом ноутбуке или VPS за $5. Телефон один раз создает с ним пару по QR-коду, а затем отправляет каждое изменение в фоне, при закрытом приложении. Сервер хранит полную копию ваших данных Marrow в SQLite и предоставляет тринадцать 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. Готово. Телефон начинает отправлять данные, а на странице сервера видно время последней отправки и сколько записей ждут.

При создании пары в каталоге данных сервера появляются два токена: один использует телефон для отправки, другой агенты для чтения. Удалите файл токена, чтобы заменить его.

Подключите к нему агента

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, затем создавайте пару.

Что остается на диске

Единицы: показатели здоровья приходят в хранимых единицах СИ с подписями. Силовые подходы приходят в фунтах с "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-токен, а не тот, с которым сопрягается телефон. См. ниже.
Connection refused или таймаутСервер не запущен, порт неверный или брандмауэр на машине блокирует порт 8800. В Docker проверьте сопоставление портов 8800:8800.

Когда выбирать его вместо остальных

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