Marrow Health
FR
Télécharger

Le miroir autohébergé

Un petit serveur sur du matériel qui vous appartient, qui garde une copie complète et vivante de vos données Marrow et répond aux agents pendant que votre téléphone est en veille, dans une poche ou à l’autre bout du monde.

La configuration pour une app à la fois est sur sa propre page sous connexions.

Tous les guides Marrow: MCP · Miroir autohébergé · Automatisations · Fichiers · Assistance

De quoi il s’agit

Un petit serveur open source que vous faites tourner sur du matériel qui vous appartient : un Raspberry Pi, un NAS, un vieil ordinateur portable, un VPS à $5. Votre téléphone s’y associe une fois en scannant un code QR, puis envoie chaque changement en arrière-plan, app fermée. Le serveur garde une copie SQLite complète de vos données Marrow et sert treize outils MCP de lecture : les sept du téléphone, sleep_log et symptoms_and_mood, et quatre qui répondent dans les termes propres à l’app (daily_brief, baselines, what_changed, data_quality), si bien qu’un agent peut demander « comment ai-je dormi cette semaine » à 3 h du matin avec votre téléphone dans un tiroir. Sous licence MIT : github.com/MarrowHealth/marrow-mcp.

Installer

Un fichier Python, bibliothèque standard uniquement, Python 3.10 ou plus récent :

pip install marrow-mcp
marrow-server         # or: python3 marrow_server.py

Ou avec Docker :

git clone https://github.com/MarrowHealth/marrow-mcp
cd marrow-mcp
docker compose up -d

Au premier démarrage, il affiche une URL de jumelage et montre un code QR dans n’importe quel navigateur de votre réseau.

Associer le téléphone

  1. Ouvrez l’URL de jumelage sur n’importe quel écran près de vous.
  2. Dans Marrow : Exporter, MCP serveur, Associer à un serveur, scannez le code.
  3. C’est fait. Le téléphone commence à envoyer, et la page Serveur affiche l’heure du dernier envoi et le nombre d’enregistrements en attente.

Le jumelage crée deux jetons dans le répertoire de données du serveur : un que le téléphone utilise pour envoyer, un que les agents utilisent pour lire. Supprimez un fichier de jeton pour le renouveler.

Pointer un agent vers lui

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

Treize outils, tous en lecture. Les neuf bruts : health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. Et quatre qui commencent là où s’arrêtent les bruts, notés par rapport à votre propre normale récente avec le même calcul que la page Accueil de l’app : daily_brief (un jour : chaque mesure clé avec sa valeur et la formule propre à l’app, l’alimentation et l’eau face à vos objectifs, le sommeil de la nuit dernière, l’entraînement fait, les signaux à mentionner), baselines (votre propre normale par mesure, le z de la dernière valeur et la tendance sur 90 jours), what_changed (la dernière semaine face aux quatre précédentes : ce qui a bougé, à quel point c’est notable pour vous, décalages du sommeil et de l’heure du coucher, flux qui ont commencé ou cessé) et data_quality (ce qui est frais, périmé ou manquant, pour qu’un agent ne prenne jamais un trou pour un fait). Chaque lecture accepte un nombre de jours en arrière ou un début et une fin dans le calendrier du téléphone. Le serveur liste aussi quatre prompts (how_am_i_doing, weekly_review, doctor_prep, log_from_text) et quatre ressources pour les clients qui les affichent. Il porte aussi douze outils d’écriture, listés dès que votre téléphone les autorise. Depuis Marrow 1.5, activez Autoriser l’écriture par l’IA pour votre serveur dans Exporter, Vos connexions et une IA peut enregistrer repas, eau, poids, entraînements, sommeil, symptômes, humeur et objectifs par son intermédiaire, gratuitement. Le serveur met chaque entrée en file d’attente et le téléphone l’applique quand Marrow s’ouvre ou se réveille, et chacune peut être annulée. La configuration pour Claude Desktop, Cursor et d’autres est sur la page MCP. Seule l’URL change.

L’atteindre depuis l’extérieur de votre réseau local

Le serveur parle en HTTP simple et n’a pas de TLS propre. Ne redirigez pas son port tel quel. Installez Tailscale sur la machine et le téléphone et utilisez tailscale serve, ou placez devant un Cloudflare Tunnel ou n’importe quel reverse proxy qui termine le HTTPS. Le code QR de jumelage porte l’adresse que le serveur annonce : sa propre adresse locale, ou celle que vous lui donnez avec --url. Lancez-le avec l’adresse que vous utiliserez vraiment, par exemple marrow-server --url https://pi.your-tailnet.ts.net, puis associez.

Ce qui est écrit sur le disque

Unités : les mesures de santé arrivent dans leurs unités SI stockées, avec leurs libellés. Les séries de musculation arrivent en livres avec "unit": "lb" quel que soit le réglage d’affichage du téléphone, si bien que le miroir ne mélange jamais les unités. Pointez Grafana, DuckDB ou une tâche cron directement vers le fichier de la base.

Dépannage

Deux tests depuis l’ordinateur sur lequel tourne votre IA vous disent où est le problème. D’abord, le serveur est-il en marche ? Celui-ci n’a pas besoin de jeton :

curl http://<server-ip>:8800/health

Il répond {"server": "marrow", "ok": true}. Ensuite, le jeton de votre agent fonctionne-t-il ?

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"}'
Ce que vous obtenezCe que cela signifie
200 OK et une liste d’outilsLe serveur fonctionne. Vérifiez l’adresse, le jeton et le type de serveur (HTTP) dans la configuration de votre agent, puis redémarrez l’agent.
401 avec bad bearer tokenMauvais jeton. Les agents utilisent le jeton mcp, pas celui avec lequel le téléphone s’associe. Voir plus bas.
Connexion refusée ou délai dépasséLe serveur ne tourne pas, le port est faux, ou un pare-feu sur la machine bloque le port 8800. Avec Docker, vérifiez la redirection de port 8800:8800.

Quand le choisir plutôt que les autres

Choisissez le miroir quand votre agent a besoin des données pendant que votre téléphone est en veille ou absent, ou quand vous voulez une base interrogeable plutôt que des fichiers. Choisissez le serveur MCP sur le téléphone quand votre agent tourne près du téléphone et que vous ne voulez rien d’autre à entretenir. Choisissez les automatisations quand vous avez déjà un endroit où les données doivent arriver.