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
- Abra a URL de emparelhamento em qualquer tela perto de você.
- No Marrow: Exportar, MCP do servidor, Emparelhar com um servidor, escaneie o código.
- 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
- Um banco de dados SQLite com cada série diária, amostra, registro do diário e série de musculação, mantido atualizado pelos envios do celular.
- Cada envio bruto guardado como JSONL ao lado dele, para que o banco possa ser reconstruído se você algum dia o estragar.
- Reserve de 50 a 150 MB por ano de histórico com fidelidade total.
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ê recebe | O que significa |
|---|---|
200 OK e uma lista de ferramentas | O 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 token | Token errado. Os agentes usam o token mcp, não aquele com que o celular se emparelha. Veja abaixo. |
| Conexão recusada ou tempo esgotado | O 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. |
- Qual token. O servidor imprime o token dos agentes quando inicia, na linha que começa com
agents:. Ele também está no arquivo.mcp-tokenna pasta de dados (./data, a menos que você tenha passado--data, e/datano Docker). O celular usa um token diferente, de.app-token. Para trocar o token dos agentes, apague o.mcp-token, reinicie o servidor e atualize todos os agentes. - A página de emparelhamento diz token inválido ou ausente. Abra o link de emparelhamento exatamente como o servidor o imprimiu, com a parte
?token=. - A página de emparelhamento mostra texto, não um QR code. O QR precisa do pacote opcional
segno:pip install "marrow-mcp[qr]". Ou, no Marrow, escolha Inserir manualmente em vez disso e digite aurle otokendesse texto. - Falha no emparelhamento no celular. O celular não conseguiu alcançar o endereço do QR. No Docker, o servidor vê apenas o endereço do próprio contêiner, então informe o seu: acrescente
--url http://<your-computer-ip>:8800ao comando. Fora do Wi-Fi de casa, use um endereço HTTPS dotailscale serveou de um túnel. - Acesso à Rede Local. Para alcançar um servidor na sua rede doméstica, o Marrow precisa do acesso à Rede Local. O iOS pergunta na primeira vez que você emparelha. Se você disse não, ative o Marrow em Ajustes, Privacidade e Segurança, Rede Local e emparelhe de novo com o Marrow aberto.
- Esse QR code não é um código de emparelhamento do Marrow. A câmera leu outro código. Escaneie o da página de emparelhamento do servidor.
- Dados antigos, ou Não está recebendo no Marrow. O celular não consegue enviar para o servidor. A página MCP do servidor no Marrow mostra o último envio e quantos registros esperam. Confira se o servidor está rodando e depois abra o Marrow para enviar o que está esperando. Os envios em segundo plano rodam quando o iOS permite.
- Este servidor precisa de uma atualização antes de poder registrar. Atualize com
pip install -U marrow-mcpe reinicie. Com o Docker, rodegit pulledocker compose up -d --buildno clone. - Os registros da IA não aparecem. Ative Permitir gravação por IA para o servidor em Exportar, Suas conexões. As ferramentas de gravação só aparecem no servidor depois disso. Cada registro espera no servidor e chega quando o Marrow abrir ou acordar.
- A conexão não quer ativar. O plano Grátis mantém 1 conexão ativa por vez, o Marrow Pro até 10: IAs, servidores e automações juntos.
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.