Marrow Health
FR
Télécharger

Connecter un agent à Marrow

Marrow sert vos données Apple Health via le Model Context Protocol, depuis votre propre iPhone ou votre propre serveur. Sept outils en lecture seule sur le téléphone, treize sur votre propre serveur (quatre d’entre eux répondent dans les termes propres à l’app, notés par rapport à votre normale), authentification par jeton bearer, aucun compte nulle part. Cette page est toute la configuration.

Un agent sur une autre machine, ou besoin de réponses pendant que le téléphone dort ? Associez le miroir autohébergé (pip install marrow-mcp) : il répond 24 h sur 24 à Claude Code, Cursor et OpenClaw. Si vous venez du connecteur intégré de Claude ou de ChatGPT, voici ce qu’il fait et qu’eux ne font pas.

La configuration pour une app à la fois, Claude Code, Cursor, Codex et d’autres, est sur sa propre page sous connexions.

Laissez votre agent s’en charger

Je veux te connecter mes propres données Apple Health. Marrow est une app iOS gratuite qui les sert via MCP, sans compte et sans abonnement nécessaire pour cela. Elle est sur l’App Store : https://apps.apple.com/app/id6800819435. Guide-moi dans tout le processus : installer l’app, activer le serveur sous Exporter puis MCP local, et ajouter l’URL et le jeton bearer qu’elle m’affiche à ta configuration MCP comme serveur Streamable HTTP. Si tu ne peux pas modifier cette configuration toi-même, dis-moi le fichier exact et ce qu’il faut y coller. Documentation de configuration : https://marrowhealthapp.com/mcp. Une fois connecté, appelle health_summary pour les 7 derniers jours et dis-moi ce qui ressort.

1. Activer le serveur

Il est livré désactivé. Dans l’app : Exporter → MCP local, puis activez le serveur. Vous obtenez une URL, un jeton et un code QR. Le serveur n’écoute que sur votre réseau local, et l’app montre l’adresse exacte sur laquelle il écoute.

2. Pointer votre client vers lui

Remplacez <phone-ip> et <token> par ce que l’app vous montre.

Claude Code

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

Claude Desktop, en un clic

Téléchargez marrow.mcpb sur votre ordinateur et double-cliquez dessus. Claude Desktop installe l’extension et demande l’URL et le jeton ci-dessus. Aucun terminal nécessaire.

Claude Desktop (manuel), Cursor, ou tout client qui utilise un mcp.json

{
  "mcpServers": {
    "marrow": {
      "type": "http",
      "url": "http://<phone-ip>:21212/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Vérifier à la main

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"}'

Les outils

Les lectures sont toujours là. Les écritures sont un second interrupteur. Depuis Marrow 1.5, le serveur du téléphone liste les mêmes douze outils d’écriture que le MCP cloud (log_meal, log_water, log_weight, log_workout, log_strength, log_sleep, log_symptom, log_mood, edit_entry, delete_entry, set_targets, undo_entry) une fois que vous activez Autoriser l’écriture par l’IA sous MCP local, appliqués aussitôt sur le téléphone et écrits dans Apple Health, chacun pouvant être annulé. Désactivé, le serveur est en lecture seule.

OutilRenvoie
health_summaryLes jours récents pour l’activité, le cœur, le sommeil et la nutrition
list_metricsChaque mesure suivie, avec ses unités et sa couverture
metric_dailyLes valeurs quotidiennes de n’importe quelle mesure, jusqu’à 400 jours
metric_samplesLes enregistrements bruts avec horodatages et appareils sources
workoutsLes entraînements de toutes les sources. Sur le téléphone, aussi les séances de musculation de Marrow série par série
nutrition_logLe journal alimentaire avec le détail complet des nutriments
strength_logChaque série de musculation avec son type, le 1RM estimé par exercice, le volume par groupe musculaire. Les échauffements ne comptent jamais dans le volume ni dans les records
sleep_logUne nuit par jour de réveil : heure du coucher, heure du réveil, heures de sommeil, minutes par phase (miroir autohébergé)
symptoms_and_moodLes symptômes avec leur gravité, et les entrées État d’esprit avec les émotions et ce qui les a causées (miroir autohébergé)

Quatre autres sur le miroir autohébergé et sur le MCP cloud. Ils commencent là où s’arrêtent les lectures brutes : chaque valeur est notée par rapport à votre propre normale récente avec le même calcul que la page Accueil de l’app (le jour lui-même exclu), si bien qu’un agent part d’une lecture déjà vraie pour vous au lieu de juger un chiffre par rapport à la population.

OutilRenvoie
daily_briefUn jour : chaque mesure clé avec sa valeur et la formule propre à l’app (normal pour vous, au-dessus de votre normale, bien en dessous de votre normale), l’alimentation et l’eau face à vos objectifs, le sommeil de la nuit dernière, l’entraînement fait, l’humeur et les symptômes, et les signaux à mentionner
baselinesVotre propre normale par mesure : moyenne et dispersion sur la fenêtre, le z de la dernière valeur et sa formule, la moyenne sur 7 jours et la tendance sur 90 jours par mois
what_changedLa dernière semaine face aux quatre précédentes : ce qui a bougé et à quel point c’est notable pour vous, alimentation, entraînement, sommeil et décalages de l’heure du coucher, flux qui ont commencé ou cessé d’arriver
data_qualityCe que le miroir détient et sa fraîcheur : par mesure le dernier jour, la couverture, la cadence, les sources et si elle est périmée, pour qu’un agent ne prenne jamais un trou pour un fait

Le serveur sur l’appareil sert les sept premiers outils bruts plus daily_brief et baselines (neuf lectures). Le miroir autohébergé les sert tous les treize, comme la copie hébergée du MCP cloud. Chaque lecture sur le miroir accepte un nombre de jours en arrière ou un début et une fin dans le calendrier du téléphone, et le miroir propose aussi quatre prompts (how_am_i_doing, weekly_review, doctor_prep, log_from_text) et quatre ressources aux clients qui les affichent. Les échantillons bruts portent les phases de sommeil et la gravité des symptômes.

Il y a 172 mesures Apple Health derrière list_metrics, plus les données de journal et de musculation propres à Marrow derrière nutrition_log et strength_log, couvrant activité, cœur, sommeil, corps, respiration, mobilité, audition, nutrition, esprit, symptômes, cycle et habitudes. Version lisible par machine de cette page : tools.json.

Rester disponible quand le téléphone ne l’est pas

Le serveur sur l’appareil répond tant que l’app tourne. Pour un accès 24 h sur 24, associez un miroir autohébergé : un seul fichier Python de bibliothèque standard sur un Pi, un NAS ou un vieil ordinateur portable. Les envois en arrière-plan du téléphone le tiennent à jour, et il parle la même interface MCP à l’adresse http://<server-ip>:8800/mcp avec son propre jeton. Les outils du téléphone utilisent les clés de mesure de l’app (active_energy, heart_rate_variability). Le serveur accepte à la fois celles-ci et les noms courts d’Apple (active_energy_burned), pour qu’un agent puisse passer de l’un à l’autre sans réapprendre. Il est open source et installable :

pip install marrow-mcp
marrow-server

Source : github.com/MarrowHealth/marrow-mcp. Référencé dans le registre MCP officiel sous le nom tech.skeletonarmy/marrow.

Ne redirigez le port d’aucun des deux serveurs vers l’internet public. Les deux sont conçus pour un réseau local ou un tailnet. Si vous avez besoin d’un accès à distance, placez devant tailscale serve ou un équivalent, pour que le transport soit en HTTPS et que l’appareil soit authentifié avant même que le jeton bearer ne soit vu.

Dépannage

Commencez par le test ci-dessous, lancé depuis l’ordinateur sur lequel tourne votre IA. Il vous dit de quel côté se trouve le problème. Utilisez l’adresse et le jeton de la page de la connexion dans Marrow, Marrow étant ouvert sur le téléphone.

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"}'
Ce que vous obtenezCe que cela signifie
HTTP/1.1 200 OK et une liste d’outilsLe téléphone fonctionne. Le problème est dans les réglages de votre app : l’adresse, le jeton, ou un type de serveur autre que HTTP (Streamable HTTP). Corrigez la configuration et redémarrez l’app.
401 UnauthorizedLe jeton est faux, ou cette connexion est désactivée dans Marrow. Chaque connexion dans Vos connexions a son propre jeton, et en désactiver une bloque l’accès de cette app pendant que les autres continuent de marcher. Activez-la, ou copiez de nouveau son jeton.
404 Not Found avec use POST /mcpLe chemin est faux. L’adresse se termine par /mcp.
Connexion refusée, ou aucune réponse jusqu’à l’expiration du délaiL’ordinateur ne peut pas atteindre le téléphone. Parcourez la liste ci-dessous.

La configuration et les solutions pour une app à la fois, Claude Code, Cursor, VS Code et d’autres, se trouvent sous connexions.

Ce que cela coûte

Rien. L’accès pour les agents est dans l’offre gratuite, avec la synchronisation en arrière-plan, l’export automatisé, l’export CSV et JSON, et le scan de codes-barres. Health Auto Export a lancé un serveur MCP avant Marrow, et il est bon, mais le leur demande un abonnement Premium. Cette différence, et non l’antériorité, est l’argument qui vaut la peine d’être avancé.

Prérequis