Подключите агента к Marrow
Marrow отдает ваши данные Apple Health по Model Context Protocol, с вашего iPhone или вашего собственного сервера. Семь инструментов только для чтения на телефоне, тринадцать на вашем сервере (четыре из них отвечают в терминах самого приложения, оценивая данные относительно вашей нормы), аутентификация bearer-токеном, нигде нет аккаунта. Эта страница содержит всю настройку.
Агент на другом компьютере или нужны ответы, пока телефон спит? Создайте пару с зеркалом на своем сервере (pip install marrow-mcp): оно отвечает круглосуточно для Claude Code, Cursor и OpenClaw. Если вы пришли сюда из встроенного коннектора Claude или ChatGPT, вот что оно умеет такого, чего не умеют они.
Настройка для каждого приложения по отдельности, Claude Code, Cursor, Codex и других, находится на своей странице в разделе подключения.
Я хочу подключить свои данные Apple Health к тебе. Marrow, бесплатное приложение для iOS, отдает их по MCP, и для этого не нужны ни аккаунт, ни подписка. Оно есть в App Store: https://apps.apple.com/app/id6800819435. Проведи меня через весь процесс: установку приложения, включение сервера в разделе «Экспорт», затем «Локальный MCP» и добавление показанного мне URL и bearer-токена в твою конфигурацию MCP как сервера Streamable HTTP. Если ты не можешь сам править эту конфигурацию, скажи мне, какой именно файл и что вставить. Документация по настройке: https://marrowhealthapp.com/mcp. Когда подключение будет готово, вызови health_summary за последние 7 дней и скажи, что бросается в глаза.
1. Включите сервер
Он поставляется выключенным. В приложении: Экспорт → Локальный MCP, затем включите сервер. Вы получите URL, токен и QR-код. Сервер привязывается только к вашей локальной сети, и приложение показывает точный адрес, который он слушает.
2. Направьте клиент на него
Замените <phone-ip> и <token> тем, что показывает приложение.
Claude Code
claude mcp add --transport http marrow \ http://<phone-ip>:21212/mcp \ --header "Authorization: Bearer <token>"
Claude Desktop в один клик
Скачайте marrow.mcpb на компьютер и дважды щелкните по нему. Claude Desktop установит расширение и запросит URL и токен, указанные выше. Терминал не нужен.
Claude Desktop (вручную), Cursor или любой клиент с mcp.json
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<phone-ip>:21212/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Проверка вручную
curl -s http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Инструменты
Чтение доступно всегда. Запись включается вторым переключателем. Начиная с Marrow 1.5 сервер на телефоне показывает те же двенадцать инструментов записи, что и облачный MCP (log_meal, log_water, log_weight, log_workout, log_strength, log_sleep, log_symptom, log_mood, edit_entry, delete_entry, set_targets, undo_entry), когда вы включаете Разрешить запись через ИИ в разделе «Локальный MCP»: они применяются сразу на телефоне и записываются в Apple Health, и каждый можно отменить. Когда выключено, сервер только для чтения.
| Инструмент | Что возвращает |
|---|---|
health_summary | Последние дни по активности, сердцу, сну и питанию |
list_metrics | Все отслеживаемые показатели, с единицами и охватом |
metric_daily | Дневные значения любого показателя, до 400 дней |
metric_samples | Исходные записи с временными метками и устройствами-источниками |
workouts | Тренировки из всех источников. На телефоне еще и силовые тренировки Marrow по подходам |
nutrition_log | Дневник питания с полной разбивкой по нутриентам |
strength_log | Каждый силовой подход с его типом, расчетный 1ПМ по упражнению, объем по группе мышц. Разминочные подходы не учитываются ни в объеме, ни в рекордах |
sleep_log | Одна ночь на день пробуждения: время отхода ко сну, время пробуждения, часы сна, минуты по фазам (зеркало на своем сервере) |
symptoms_and_mood | Симптомы с тяжестью и записи State of Mind с чувствами и тем, к чему они относились (зеркало на своем сервере) |
Еще четыре на зеркале на своем сервере и в облачном MCP. Они начинаются там, где заканчиваются исходные чтения: каждое значение оценивается относительно вашей собственной нормы за предыдущий период по той же математике, что использует экран «Главная» в приложении (сам день исключается), так что агент начинает с данных, которые уже верны для вас, а не оценивает число по меркам всего населения.
| Инструмент | Что возвращает |
|---|---|
daily_brief | Один день: каждый ключевой показатель со значением и собственной формулировкой приложения (в норме для вас, выше вашей нормы, значительно ниже вашей нормы), питание и вода относительно ваших целей, сон прошлой ночи, выполненные тренировки, настроение и симптомы, а также отметки, о которых стоит упомянуть |
baselines | Ваша собственная норма по каждому показателю: среднее и разброс за период, z и формулировка последнего значения, 7-дневное среднее и 90-дневный тренд по месяцам |
what_changed | Последняя неделя в сравнении с четырьмя предыдущими: что изменилось и насколько заметно это для вас, питание, тренировки, сон и сдвиги времени отхода ко сну, потоки данных, которые начали или перестали поступать |
data_quality | Что хранит зеркало и насколько оно свежее: по каждому показателю последний день, охват, периодичность, источники и не устарел ли он, чтобы агент никогда не принимал пробел за факт |
Сервер на устройстве предоставляет первые семь исходных инструментов плюс daily_brief и baselines (девять чтений). Зеркало на своем сервере предоставляет все тринадцать, как и размещенная копия облачного MCP. Каждое чтение на зеркале принимает дни назад или от и до по календарю телефона, а еще зеркало предлагает клиентам, которые их показывают, четыре подсказки (how_am_i_doing, weekly_review, doctor_prep, log_from_text) и четыре ресурса. Исходные записи содержат фазы сна и тяжесть симптомов.
За list_metrics стоят 172 показателя Apple Health, а также собственные данные Marrow о дневнике и силовых за nutrition_log и strength_log, охватывающие активность, сердце, сон, тело, дыхание, подвижность, слух, питание, разум, симптомы, цикл и привычки. Машиночитаемая версия этой страницы: tools.json.
Как держать его включенным, когда телефон недоступен
Сервер на устройстве отвечает, пока приложение запущено. Для круглосуточного доступа создайте пару с зеркалом на своем сервере: один Python-файл со стандартной библиотекой на Raspberry Pi, NAS или старом ноутбуке. Фоновые отправки с телефона поддерживают его актуальность, и он предоставляет тот же интерфейс MCP по адресу http://<server-ip>:8800/mcp со своим токеном. Инструменты телефона используют ключи показателей приложения (active_energy, heart_rate_variability). Сервер принимает и их, и короткие названия Apple (active_energy_burned), так что агент может переключаться между ними, не переучиваясь. Он с открытым кодом и устанавливается:
pip install marrow-mcp marrow-server
Исходный код: github.com/MarrowHealth/marrow-mcp. Есть в официальном реестре MCP как tech.skeletonarmy/marrow.
Не пробрасывайте порт ни одного из серверов в открытый интернет. Оба рассчитаны на локальную сеть или tailnet. Если нужен удаленный доступ, поставьте перед ним tailscale serve или аналог, чтобы транспорт был HTTPS, а устройство аутентифицировалось еще до того, как будет виден bearer-токен.
Устранение неполадок
Начните с проверки ниже, запустив ее с компьютера, на котором работает ваш ИИ. Она покажет, на чьей стороне проблема. Используйте адрес и токен со страницы подключения в Marrow, при открытом Marrow на телефоне.
curl -i http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| Что вы получаете | Что это значит |
|---|---|
HTTP/1.1 200 OK и список инструментов | Телефон работает. Проблема в настройках вашего приложения: адрес, токен или тип сервера, отличный от HTTP (Streamable HTTP). Исправьте конфигурацию и перезапустите приложение. |
401 Unauthorized | Токен неверный, или это подключение выключено в Marrow. У каждого подключения в разделе «Ваши подключения» свой токен, и выключение одного закрывает доступ этому приложению, а остальные продолжают работать. Включите его или скопируйте его токен заново. |
404 Not Found с use POST /mcp | Путь неверный. Адрес заканчивается на /mcp. |
| Connection refused или нет ответа до таймаута | Компьютер не может связаться с телефоном. Пройдитесь по списку ниже. |
- Marrow должен быть открыт. Сервер на телефоне отвечает, только пока Marrow открыт на переднем плане. Когда вы переключаетесь на другое приложение или блокируете телефон, iOS вскоре его приостанавливает. Откройте Marrow снова, и он снова отвечает. Чтобы получать ответы, пока телефон спит, используйте Серверный MCP или Облачный MCP.
- Тот же Wi-Fi или tailnet. Компьютер и телефон должны быть в одной сети Wi-Fi или в одном tailnet. Локальный MCP никогда не отвечает через мобильную сеть. Если Marrow пишет Сетевой адрес не найден, подключитесь к Wi-Fi или tailnet. Гостевой Wi-Fi и Wi-Fi в отелях часто не дают устройствам видеть друг друга.
- Адрес в tailnet или адрес Wi-Fi. Marrow показывает один из адресов телефона, обычно адрес Wi-Fi. Компьютеру, который связывается с телефоном через Tailscale, нужен адрес телефона в tailnet. Его показывает приложение Tailscale (он начинается с
100.). Укажите его в конфигурации вместо адреса Wi-Fi и оставьте тот же порт и токен. - Адрес изменился. Роутер может со временем выдать телефону новый адрес Wi-Fi. Сравните адрес в Marrow с адресом в конфигурации. Зарезервированный адрес на роутере сохраняет его неизменным.
- Причина не в доступе к локальной сети. iOS запрашивает его, когда Marrow обращается к устройству в вашей сети, например к сопряженному серверу. Чтобы сервер телефона отвечал компьютеру, разрешение не нужно, поэтому включение или выключение этого переключателя не влияет на локальный MCP.
- VPN на компьютере. VPN, кроме вашего tailnet, может уводить локальный трафик от вашего Wi-Fi. Приостановите его и повторите проверку.
- Код 405 в журнале вашего приложения. Телефон отвечает только на POST и не держит открытый поток, поэтому GET получает
405. Приложения, работающие по Streamable HTTP, продолжают с POST, так что одна эта строка проблемой не является. - Ваше приложение принимает только команду (stdio). Пропустите адрес телефона через мост mcp-remote. Для обычного http-адреса, который находится не на самом компьютере, нужен
--allow-http:npx -y mcp-remote http://<phone-ip>:21212/mcp --allow-http --header "Authorization: Bearer <token>". В файле конфигурации для Cursor, Codex или Claude Desktop на Windows пробелы внутри args могут искажаться. Запишите заголовок какAuthorization:${AUTH_HEADER}и задайтеAUTH_HEADERравнымBearer <token>в env сервера. - Читает, но не может записывать. Включите Разрешить запись через ИИ в разделе «Локальный MCP». Записи применяются сразу на телефоне, и каждую можно отменить.
- Подключение не включается. На бесплатном тарифе одновременно может быть включено 1 подключение, в Marrow Pro до 10: ИИ, серверы и автоматизации вместе. Сначала выключите другое в разделе «Ваши подключения».
Настройка и решения проблем для каждого приложения по отдельности, Claude Code, Cursor, VS Code и других, находятся в разделе подключения.
Сколько это стоит
Ничего. Доступ для агентов входит в бесплатный уровень вместе с фоновой синхронизацией, автоматическим экспортом, экспортом в CSV и JSON и сканированием штрихкодов. Health Auto Export выпустил MCP-сервер раньше Marrow, и он хорош, но у них он требует подписки Premium. Заявлять стоит именно об этой разнице, а не о первенстве.
Требования
- iOS 17 или новее и Apple Health. Версии для Android или веба нет.
- Marrow есть в App Store, бесплатно: apps.apple.com/app/id6800819435.
- Аккаунта Marrow не существует, поэтому нет облачного API, к которому можно обратиться без устройства самого пользователя.