Підключіть агента до 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 | Кожен силовий підхід з його типом, оціночний 1RM за кожною вправою, обсяг за групою м'язів. Розминки ніколи не враховуються в обсязі чи рекордах |
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 зі стандартної бібліотеки на 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. |
| У з'єднанні відмовлено, або відповіді немає, доки не мине час очікування | Комп'ютер не може дістатися до телефона. Пройдіться за списком нижче. |
- Marrow має бути відкритим. Сервер на телефоні відповідає лише тоді, коли Marrow відкрито на передньому плані. Коли ви перемикаєте застосунки чи блокуєте телефон, iOS невдовзі його призупиняє. Відкрийте Marrow знову, і він знову відповідає. Щоб отримувати відповіді, поки телефон спить, скористайтеся Серверним MCP або Хмарним MCP.
- Той самий Wi-Fi чи tailnet. Комп'ютер і телефон мають бути в одній мережі Wi-Fi чи tailnet. Локальний MCP ніколи не відповідає через мобільну мережу. Якщо Marrow пише Мережеву адресу не знайдено, приєднайтеся до Wi-Fi чи tailnet. Гостьовий та готельний 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, який можна викликати без власного пристрою користувача.