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
- Abre la URL de vinculación en cualquier pantalla que tengas cerca.
- En Marrow: Exportar, Servidor MCP, Vincular con un servidor, escanea el código.
- 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
- Una base de datos SQLite con cada serie diaria, muestra, entrada del diario y serie de fuerza, mantenida al día por los envíos del teléfono.
- Cada envío sin procesar preparado como JSONL junto a ella, para poder reconstruir la base de datos si alguna vez la estropeas.
- Calcula de 50 a 150 MB al año de historial a máxima fidelidad.
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 obtienes | Qué significa |
|---|---|
200 OK y una lista de herramientas | El 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 token | Token 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 agotado | El 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. |
- Qué token. El servidor imprime el token de los agentes al arrancar, en la línea que empieza por
agents:. También está en el archivo.mcp-tokende la carpeta de datos (./datasalvo que pasaras--data,/dataen Docker). El teléfono usa un token distinto, de.app-token. Para cambiar el token de los agentes, borra.mcp-token, reinicia el servidor y actualiza todos los agentes. - La página de vinculación dice token incorrecto o ausente. Abre el enlace de vinculación exactamente como lo imprimió el servidor, con su parte
?token=. - La página de vinculación muestra texto, no un código QR. El QR necesita el paquete opcional
segno:pip install "marrow-mcp[qr]". O, en Marrow, elige Introducir manualmente en su lugar y escribe laurly eltokende ese texto. - Error al enlazar en el teléfono. El teléfono no pudo llegar a la dirección del QR. Con Docker el servidor solo ve la dirección propia del contenedor, así que dale la tuya: añade
--url http://<your-computer-ip>:8800a su comando. Fuera de tu Wi-Fi de casa, usa una dirección HTTPS detailscale serveo de un túnel. - Acceso a la red local. Para llegar a un servidor de tu red doméstica, Marrow necesita acceso a la red local. iOS lo pregunta la primera vez que vinculas. Si dijiste que no, activa Marrow en Ajustes, Privacidad y seguridad, Red local, y vuelve a vincular con Marrow abierta.
- Ese código QR no es un código de vinculación de Marrow. La cámara leyó otro código. Escanea el de la página de vinculación del servidor.
- Datos antiguos, o «No recibe datos» en Marrow. El teléfono no puede enviar al servidor. La página Servidor MCP de Marrow muestra el último envío y cuántos registros esperan. Comprueba que el servidor está en marcha y luego abre Marrow para enviar lo que espera. Los envíos en segundo plano se ejecutan cuando iOS lo permite.
- Este servidor necesita una actualización antes de poder registrar. Actualízalo con
pip install -U marrow-mcpy reinícialo. Con Docker, ejecutagit pullydocker compose up -d --builden el clon. - Las entradas de la IA no aparecen. Activa Permitir escritura a la IA para el servidor en Exportar, Tus conexiones. Las herramientas de escritura aparecen en el servidor solo después. Cada entrada espera en el servidor y llega la próxima vez que Marrow se abra o se active.
- La conexión no se activa. El plan gratuito mantiene 1 conexión activa a la vez, Marrow Pro hasta 10: IA, servidores y automatizaciones juntos.
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.