Rouse Context

Transforme seu telefone Android em um servidor MCP sob demanda. 22 ferramentas para dados de saúde, notificações, uso de aplicativos e ações do dispositivo. Criptografia de ponta a ponta, sem sincronização em nuvem.

Documentação

Rouse Context

rouse-context MCP server

Seu telefone tem contexto que a IA não tem — seus dados de saúde, suas notificações, seu uso de aplicativos. O Rouse Context disponibiliza esse contexto para assistentes de IA sob demanda, sem nunca sincronizar seus dados para a nuvem.

É um aplicativo Android que transforma seu telefone em um servidor MCP. Clientes de IA como o Claude se conectam a uma URL, seu telefone acorda, e uma sessão criptografada direta é estabelecida. A IA pede o que precisa, seu telefone responde, e então ele volta a dormir. Seus dados nunca saem do seu dispositivo exceto através dessa sessão ao vivo.

Status: v1.0 lançada. Disponível em GitHub Releases. Para acesso beta no Google Play, envie um e-mail para beta@rousecontext.com. Funciona com qualquer cliente compatível com MCP.

Home screen with active integrations and audit log    Integration setup with URL to copy    OAuth approval screen

Começando

  1. Instale — baixe o APK de GitHub Releases e faça o sideload (talvez seja necessário ativar "Instalar de fontes desconhecidas" nas configurações do Android). Ou envie um e-mail para beta@rousecontext.com para acesso beta no Google Play. Duas versões são publicadas por release — um APK FOSS sem Firebase (-foss.apk) e um APK Google (-google.apk); veja docs/distribution.md para saber qual escolher e a história do F-Droid.
  2. Configure — abra o aplicativo, toque em Começar, conceda permissões de notificação. O aplicativo registra-se no relay e provisiona os certificados TLS do seu dispositivo (~10 segundos).
  3. Ative uma integração — toque em Adicionar Integração na tela inicial. Escolha uma (ex.: Health Connect), conceda as permissões solicitadas, e você receberá uma URL como https://brave-health.abc123.rousecontext.com/mcp.
  4. Conecte seu cliente de IA — cole essa URL no Claude (Configurações → Conectores → Adicionar conector personalizado) ou em qualquer cliente MCP. A primeira conexão aciona uma aprovação OAuth no seu telefone — toque em Aprovar.
  5. Use — pergunte à IA sobre seus dados de saúde, envie uma notificação para si mesmo, verifique seu tempo de tela. Cada chamada de ferramenta é registrada na aba Auditoria do aplicativo.

Como Funciona

AI Client ──TLS──> Relay (SNI passthrough) ──mux WebSocket (mTLS)──> Your Phone
  1. Você ativa uma integração (ex.: Health Connect) e recebe uma URL como https://brave-health.abc123.rousecontext.com/mcp (a integração é identificada pelo prefixo do hostname; o caminho é sempre /mcp)
  2. Adicione essa URL ao Claude ou a qualquer cliente MCP
  3. Quando o cliente se conecta, o relay acorda seu telefone via push FCM
  4. Seu telefone se conecta de volta através de um WebSocket mTLS, e o relay une os dois fluxos TLS
  5. O cliente de IA fala diretamente com seu telefone através de TLS criptografado de ponta a ponta — o relay nunca vê o texto simples

As sessões são efêmeras. O telefone volta a dormir quando o cliente se desconecta.

Integrações

Cada integração é ativada independentemente e recebe seu próprio endpoint MCP com autorização OAuth (PKCE). 22 ferramentas em 4 integrações:

Health Connect (3 ferramentas)

Consulte dados do Android Health Connect em 36 tipos de registro em 7 categorias (atividade, corpo, sono, sinais vitais, nutrição, reprodutivo, atenção plena).

FerramentaDescrição
list_record_typesLista tipos de registro do Health Connect com status de permissão
query_health_dataConsulta registros por tipo e intervalo de tempo
get_health_summaryResumo de saúde entre tipos permitidos para um período

Notificações (5 ferramentas)

Leia, pesquise e interaja com notificações do dispositivo.

FerramentaDescrição
list_active_notificationsLista notificações publicadas
search_notification_historyPesquisa histórico de notificações por texto, pacote ou intervalo de tempo
get_notification_statsContagens de notificações, principais aplicativos e hora mais movimentada para um período
perform_notification_actionInvoca um botão de ação em uma notificação ativa
dismiss_notificationDispensa uma notificação ativa por chave

Outreach (10 ferramentas)

Permite que a IA execute ações no dispositivo — abra aplicativos, abra links, envie notificações, gerencie o modo Não Perturbe.

FerramentaDescrição
launch_appAbre um aplicativo instalado pelo nome do pacote
open_linkAbre uma URL http/https no aplicativo padrão
copy_to_clipboardCopia texto para a área de transferência
send_notificationPublica uma notificação com botões de ação opcionais e URL de toque para abrir
list_installed_appsLista aplicativos instalados
create_notification_channelCria um canal de notificação
list_notification_channelsLista canais de notificação criados pela IA
delete_notification_channelExclui um canal de notificação criado pela IA
get_dnd_stateObtém o estado do modo Não Perturbe
set_dnd_stateDefine o estado do modo Não Perturbe

Estatísticas de Uso (4 ferramentas)

Padrões de uso de aplicativos e análises de tempo de tela.

FerramentaDescrição
get_usage_summaryTotais de tempo de tela e principais aplicativos para um período
get_app_usageUso diário para um aplicativo
get_usage_eventsEventos brutos de primeiro plano/fundo de aplicativos em um intervalo
compare_usageCompara tempo de tela entre dois períodos; maiores diferenças primeiro

Arquitetura

Aplicativo Android

MóduloFinalidade
:appUI Compose, DI Koin, navegação, temas
:core:tunnelProtocolo Mux, cliente WebSocket, aceitação TLS, CertificateStore
:core:mcpRoteamento de sessão MCP, servidor HTTP, OAuth (código de dispositivo + código de autorização + PKCE), gerenciamento de tokens
:core:bridgePontes conectam fluxos mux de túnel a sessões MCP via TLS
:apiInterface McpIntegration, IntegrationStateStore
:integrationsProvedores MCP: Health Connect, outreach (chamadas/SMS/DND), estatísticas de uso, captura de notificações
:notificationsInfraestrutura transversal de notificações, persistência de auditoria (Room)
:workServiço em primeiro plano, receptor FCM, WorkManager
:core:testfixturesFixtures compartilhadas para testes de nível de integração que iniciam o binário real do relay

Servidor Relay (relay/)

Binário Rust em um pequeno VPS. Gerencia:

  • Passagem TLS — roteia conexões de clientes de IA para dispositivos via SNI, nunca encerra o TLS interno
  • WebSocket Mux — multiplexa múltiplas sessões de clientes em uma única conexão de dispositivo
  • Despertar FCM — envia notificações push para acordar dispositivos adormecidos
  • Certificados ACME — emite certificados TLS por dispositivo via Google Trust Services DNS-01 (API Cloudflare); Let's Encrypt também é suportado
  • Proteção contra bots — prefixo de URL secreto validado antes de acordar o dispositivo, além de limite de FCM e limitação de taxa por IP

Segurança

  • Criptografado de ponta a ponta — TLS termina no seu telefone. O relay faz apenas passagem SNI.
  • Sem sincronização em nuvem — os dados são lidos de fontes no dispositivo e servidos ao vivo. Nada é armazenado remotamente.
  • Certificados ACME por dispositivo — certificados por dispositivo via Google Trust Services (DNS-01), chave privada no Android Keystore (com suporte de hardware).
  • Autenticação de dispositivo mTLS — o relay autentica o dispositivo por certificado de cliente antes de permitir conexões.
  • Prefixo de URL secreto — cada URL de dispositivo inclui um segredo rotacionável por integração (brave-health.abc123.rousecontext.com, onde brave-health é {adjective}-{integrationId}). Bots que descobrem o subdomínio do dispositivo não podem acordá-lo sem o segredo.
  • OAuth por cliente — cada cliente de IA deve ser autorizado via aprovação no dispositivo antes de acessar ferramentas.
  • Trilha de auditoria — cada invocação de ferramenta é registrada localmente com argumentos, resposta e duração.

Compilação

Android

./gradlew assembleDebug

Requer Android SDK (compileSdk 36, targetSdk 36, minSdk 24). A compilação requer JDK 21 (JAVA_HOME=/usr/lib/jvm/java-21-openjdk).

Relatório de cobertura

./gradlew koverHtmlReport

Agrega cobertura de linhas + ramos em todos os testes de unidade de cada módulo e na camada :core:tunnel:integrationTest (subprocesso real do relay). O HTML fica em build/reports/kover/html/index.html. O CI publica o mesmo relatório como um artefato test-coverage além de um resumo por módulo em cada PR.

Relay

cd relay
cargo build --release

Testes de ponta a ponta

Os testes e2e conduzem um dispositivo real através de adb via um host (tipicamente local na LAN) executando adb. A propriedade de sistema adb.host é obrigatória e o padrão é vazio — a tarefa :e2e:e2eTest falha rapidamente se não estiver definida. O serial do dispositivo é opcional e só é necessário se vários dispositivos estiverem conectados a esse host.

./gradlew :e2e:e2eTest \
    -Dadb.host=<your-dev-host> \
    -Dadb.serial=<your-device-serial>

O módulo :device-tests tem um executor separado que compila um APK apontando para um relay em execução local. Também requer um IP de LAN acessível a partir do dispositivo:

./gradlew :device-tests:test -Dlan.ip=<your-lan-ip>

Sem lan.ip, os testes de dispositivo são ignorados corretamente via suposições JUnit.

Status

v1.0 lançada. 22 ferramentas em 4 integrações, despertar a frio em ~3 segundos, criptografia de ponta a ponta. Veja docs/design/ para documentos de design detalhados e política de privacidade.

Licença

Licenciado sob a Apache License, Versão 2.0. Veja LICENSE para detalhes.