Marrow Health
ES
Descargar

El espejo autoalojado

Un pequeño servidor en hardware que es tuyo y que guarda una copia completa y en vivo de tus datos de Marrow y responde a los agentes mientras tu teléfono duerme, está en un bolsillo o está al otro lado del mundo.

La configuración para cada app está en su propia página en conexiones.

Todas las guías de Marrow: MCP · Espejo autoalojado · Automatizaciones · Archivos · Soporte

Qué es

Un pequeño servidor de código abierto que ejecutas en hardware que es tuyo: una Raspberry Pi, un NAS, un portátil viejo, un VPS de $5. Tu teléfono se vincula con él una vez escaneando un código QR y luego envía cada cambio en segundo plano, con la app cerrada. El servidor guarda una copia SQLite completa de tus datos de Marrow y sirve trece herramientas MCP de lectura: las siete del teléfono, sleep_log y symptoms_and_mood, y cuatro que responden en los términos de la propia app (daily_brief, baselines, what_changed, data_quality), de modo que un agente puede preguntar «¿cómo dormí esta semana?» a las 3 de la madrugada con tu teléfono en un cajón. Con licencia MIT: github.com/MarrowHealth/marrow-mcp.

Instalar

Un archivo de Python, solo biblioteca estándar, Python 3.10 o posterior:

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

O con Docker:

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

En el primer arranque imprime una URL de vinculación y muestra un código QR en cualquier navegador de tu red.

Vincula el teléfono

  1. Abre la URL de vinculación en cualquier pantalla que tengas cerca.
  2. En Marrow: Exportar, Servidor MCP, Vincular con un servidor, escanea el código.
  3. Listo. El teléfono empieza a enviar, y la página Servidor muestra la hora del último envío y cuántos registros esperan.

La vinculación crea dos tokens en el directorio de datos del servidor: uno que usa el teléfono para enviar y otro que usan los agentes para leer. Borra un archivo de token para rotarlo.

Apunta un agente hacia él

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

Trece herramientas, todas de lectura. Las nueve sin procesar: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. Y cuatro que empiezan donde terminan las sin procesar, puntuadas frente a tu propia normalidad reciente con las mismas cuentas que usa la pantalla de Inicio de la app: daily_brief (un día: cada métrica clave con su valor y la frase propia de la app, comida y agua frente a tus objetivos, el sueño de anoche, el entrenamiento hecho, avisos que vale la pena mencionar), baselines (tu propia normalidad por métrica, la z del último valor y la tendencia de 90 días), what_changed (la última semana frente a las cuatro anteriores: qué se movió, cuán notable es para ti, cambios de sueño y de hora de acostarse, flujos que empezaron o dejaron de llegar) y data_quality (qué está al día, obsoleto o ausente, para que un agente nunca confunda un hueco con un hecho). Cada lectura acepta días hacia atrás o from y to en el calendario del teléfono. El servidor también lista cuatro prompts (how_am_i_doing, weekly_review, doctor_prep, log_from_text) y cuatro recursos para los clientes que los muestran. También incluye doce herramientas de escritura, que se listan una vez que tu teléfono las permite. Desde Marrow 1.5, activa Permitir escritura a la IA para tu servidor en Exportar, Tus conexiones y una IA puede registrar comidas, agua, peso, entrenamientos, sueño, síntomas, estado de ánimo y objetivos a través de él, gratis. El servidor pone en cola cada entrada y el teléfono la aplica cuando Marrow se abre o se activa, y todas se pueden deshacer. La configuración para Claude Desktop, Cursor y otros está en la página de MCP. Solo cambia la URL.

Llegar a él desde fuera de tu LAN

El servidor habla HTTP simple y no tiene TLS propio. No abras puertos directamente. Pon Tailscale en el equipo y en el teléfono y usa tailscale serve, o ponle delante Cloudflare Tunnel o cualquier proxy inverso que termine HTTPS. El QR de vinculación lleva la dirección que anuncia el servidor: su propia dirección de LAN, o la que le des con --url. Arráncalo con la dirección que de verdad vayas a usar, por ejemplo marrow-server --url https://pi.your-tailnet.ts.net, y luego vincula.

Lo que acaba en el disco

Unidades: las métricas de salud llegan en sus unidades SI almacenadas, con etiquetas. Las series de fuerza llegan en libras con "unit": "lb" sea cual sea el ajuste de visualización del teléfono, así que el espejo nunca mezcla unidades. Apunta Grafana, DuckDB o una tarea cron directamente al archivo de la base de datos.

Solución de problemas

Dos pruebas desde el ordenador en el que se ejecuta tu IA te dicen dónde está el problema. Primero, ¿está en marcha el servidor? Esta no necesita token:

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

Responde {"server": "marrow", "ok": true}. Después, ¿funciona el token de tu agente?

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"}'
Lo que obtienesQué significa
200 OK y una lista de herramientasEl servidor funciona. Comprueba la dirección, el token y el tipo de servidor (HTTP) en la configuración de tu agente, y luego reinicia el agente.
401 con bad bearer tokenToken incorrecto. Los agentes usan el token mcp, no aquel con el que se vincula el teléfono. Mira abajo.
Conexión rechazada o un tiempo de espera agotadoEl servidor no está en marcha, el puerto es incorrecto o un cortafuegos del equipo bloquea el puerto 8800. Con Docker, comprueba la asignación de puertos 8800:8800.

Cuándo elegir esto en lugar de lo demás

Elige el espejo cuando tu agente necesite los datos mientras tu teléfono duerme o está lejos, o cuando quieras una base de datos consultable en lugar de archivos. Elige el servidor MCP en el teléfono cuando tu agente se ejecute cerca del teléfono y no quieras mantener nada más. Elige las automatizaciones cuando ya tengas un sitio donde deban llegar los datos.