Marrow Health
PT
Baixar

O espelho autohospedado

Um pequeno servidor em hardware seu que guarda uma cópia completa e ao vivo dos seus dados do Marrow e responde a agentes enquanto o seu celular está em repouso, no bolso ou do outro lado do mundo.

A configuração app por app está na página de cada um em conexões.

Todos os guias do Marrow: MCP · Espelho autohospedado · Automações · Arquivos · Suporte

O que é

Um pequeno servidor de código aberto que você roda em hardware seu: um Raspberry Pi, um NAS, um notebook velho, um VPS de $5. O seu celular se emparelha com ele uma vez, escaneando um QR code, e depois envia cada mudança em segundo plano, com o app fechado. O servidor guarda uma cópia SQLite completa dos seus dados do Marrow e serve treze ferramentas MCP de leitura: as sete do celular, sleep_log e symptoms_and_mood, e quatro que respondem nos termos do próprio app (daily_brief, baselines, what_changed, data_quality), para que um agente possa perguntar “como eu dormi esta semana” às 3 da manhã com o seu celular em uma gaveta. Licença MIT: github.com/MarrowHealth/marrow-mcp.

Instalação

Um arquivo Python, só biblioteca padrão, Python 3.10 ou mais recente:

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

Ou com Docker:

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

Na primeira inicialização, ele imprime uma URL de emparelhamento e mostra um QR code em qualquer navegador da sua rede.

Emparelhe o celular

  1. Abra a URL de emparelhamento em qualquer tela perto de você.
  2. No Marrow: Exportar, MCP do servidor, Emparelhar com um servidor, escaneie o código.
  3. Pronto. O celular começa a enviar, e a página Servidor mostra o horário do último envio e quantos registros estão esperando.

O emparelhamento cria dois tokens no diretório de dados do servidor: um que o celular usa para enviar, outro que os agentes usam para ler. Apague o arquivo de um token para renová-lo.

Aponte um agente para ele

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

Treze ferramentas, todas de leitura. As nove brutas: health_summary, list_metrics, metric_daily, metric_samples, workouts, nutrition_log, strength_log, sleep_log, symptoms_and_mood. E quatro que começam onde as brutas terminam, comparadas com o seu próprio normal recente, com a mesma conta que a tela Início do app usa: daily_brief (um dia: cada métrica-chave com o valor e a frase do próprio app, alimentação e água em relação às suas metas, o sono da noite passada, o treino feito, alertas que valem ser mencionados), baselines (o seu próprio normal por métrica, o z do valor mais recente e a tendência de 90 dias), what_changed (a última semana contra as quatro anteriores: o que se moveu, o quanto isso é notável para você, mudanças no sono e na hora de dormir, séries de dados que começaram ou pararam) e data_quality (o que está atualizado, desatualizado ou faltando, para que um agente nunca confunda uma lacuna com um fato). Toda leitura aceita dias atrás ou de e até no calendário do celular. O servidor também lista quatro prompts (how_am_i_doing, weekly_review, doctor_prep, log_from_text) e quatro recursos para clientes que os mostram. Ele traz também doze ferramentas de gravação, listadas quando o seu celular as permite. A partir do Marrow 1.5, ative Permitir gravação por IA para o seu servidor em Exportar, Suas conexões e uma IA pode registrar refeições, água, peso, treinos, sono, sintomas, humor e metas por meio dele, de graça. O servidor enfileira cada registro e o celular o aplica quando o Marrow abre ou acorda, e todos podem ser desfeitos. A configuração para o Claude Desktop, o Cursor e outros está na página do MCP. Só muda a URL.

Acessando de fora da sua LAN

O servidor fala HTTP simples e não tem TLS próprio. Não abra portas do roteador para ele diretamente. Instale o Tailscale na máquina e no celular e use tailscale serve, ou coloque na frente um Cloudflare Tunnel ou qualquer proxy reverso que encerre o HTTPS. O QR de emparelhamento carrega o endereço que o servidor anuncia: o próprio endereço de LAN dele, ou o que você informar com --url. Inicie-o com o endereço que você realmente vai usar, por exemplo marrow-server --url https://pi.your-tailnet.ts.net, e depois emparelhe.

O que fica no disco

Unidades: as métricas de saúde chegam nas unidades SI armazenadas, com rótulos. As séries de musculação chegam em libras com "unit": "lb", seja qual for a configuração de exibição do celular, para que o espelho nunca misture unidades. Aponte o Grafana, o DuckDB ou uma tarefa cron direto para o arquivo do banco.

Solução de problemas

Dois testes, feitos no computador em que a sua IA roda, mostram onde está o problema. Primeiro, o servidor está no ar? Este não precisa de token:

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

Ele responde {"server": "marrow", "ok": true}. Depois, o token do seu agente funciona?

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"}'
O que você recebeO que significa
200 OK e uma lista de ferramentasO servidor funciona. Confira o endereço, o token e o tipo de servidor (HTTP) na configuração do seu agente e reinicie o agente.
401 com bad bearer tokenToken errado. Os agentes usam o token mcp, não aquele com que o celular se emparelha. Veja abaixo.
Conexão recusada ou tempo esgotadoO servidor não está rodando, a porta está errada ou um firewall na máquina bloqueia a porta 8800. Com o Docker, confira o mapeamento de portas 8800:8800.

Quando escolher este em vez dos outros

Escolha o espelho quando o seu agente precisar dos dados enquanto o celular está em repouso ou longe, ou quando você quiser um banco de dados consultável em vez de arquivos. Escolha o servidor MCP no celular quando o seu agente roda perto do celular e você não quer mais nada para manter. Escolha as automações quando você já tem um lugar onde os dados devem chegar.