Skip to main content
Glama

Rouse Context

당신의 휴대폰에는 건강 데이터, 알림, 앱 사용량 등 AI가 알지 못하는 맥락(Context)이 담겨 있습니다. Rouse Context는 클라우드에 데이터를 동기화하지 않고도 필요할 때마다 AI 어시스턴트가 이러한 맥락을 활용할 수 있도록 해줍니다.

이 앱은 Android 휴대폰을 MCP 서버로 변환합니다. Claude와 같은 AI 클라이언트가 URL에 연결하면 휴대폰이 깨어나고 직접적인 암호화 세션이 수립됩니다. AI가 필요한 정보를 요청하면 휴대폰이 응답한 뒤 다시 절전 모드로 돌아갑니다. 데이터는 실시간 세션을 통해서만 전송되며 기기 밖으로 유출되지 않습니다.

상태: v1.0 출시. GitHub Releases에서 이용 가능합니다. Google Play 베타 액세스를 원하시면 beta@rousecontext.com으로 이메일을 보내주세요. Claude, Cursor 및 모든 MCP 호환 클라이언트와 작동합니다.

시작하기

  1. 설치 — GitHub Releases에서 APK를 다운로드하여 사이드로드하세요(Android 설정에서 "출처를 알 수 없는 앱 설치"를 허용해야 할 수 있습니다). 또는 Google Play 베타 액세스를 위해 beta@rousecontext.com으로 이메일을 보내주세요.

  2. 온보딩 — 앱을 열고 '시작하기'를 탭한 뒤 알림 권한을 부여하세요. 앱이 릴레이에 등록되고 기기의 TLS 인증서가 프로비저닝됩니다(약 10초 소요).

  3. 통합 활성화 — 홈 화면에서 '통합 추가(Add Integration)'를 탭하세요. 하나를 선택하고(예: Health Connect) 요청된 권한을 부여하면 https://brave-health.abc123.rousecontext.com/mcp와 같은 URL을 얻게 됩니다.

  4. AI 클라이언트 연결 — 해당 URL을 Claude(설정 → 커넥터 → 사용자 지정 커넥터 추가), Cursor 또는 모든 MCP 클라이언트에 붙여넣으세요. 첫 연결 시 휴대폰에서 OAuth 승인 요청이 뜨면 '승인'을 탭하세요.

  5. 사용 — AI에게 건강 데이터에 대해 묻거나, 알림을 보내거나, 스크린 타임을 확인해보세요. 모든 도구 호출은 앱의 '감사(Audit)' 탭에 기록됩니다.

Related MCP server: fitbit-mcp

작동 원리

AI Client ──TLS──> Relay (SNI passthrough) ──mux WebSocket (mTLS)──> Your Phone
  1. 통합(예: Health Connect)을 활성화하면 https://brave-health.abc123.rousecontext.com/mcp와 같은 URL을 받게 됩니다(통합은 호스트 이름 접두사로 식별되며, 경로는 항상 /mcp입니다).

  2. 해당 URL을 Claude, Cursor 또는 모든 MCP 클라이언트에 추가합니다.

  3. 클라이언트가 연결되면 릴레이가 FCM 푸시를 통해 휴대폰을 깨웁니다.

  4. 휴대폰이 mTLS WebSocket을 통해 다시 연결되고, 릴레이가 두 TLS 스트림을 하나로 연결합니다.

  5. AI 클라이언트가 종단간 암호화된 TLS를 통해 휴대폰과 직접 통신하며, 릴레이는 평문을 전혀 볼 수 없습니다.

세션은 일시적입니다. 클라이언트 연결이 끊어지면 휴대폰은 다시 절전 모드로 돌아갑니다.

통합

각 통합은 독립적으로 활성화되며 OAuth 인증(PKCE)이 포함된 자체 MCP 엔드포인트를 가집니다. 4개의 통합에 걸쳐 22개의 도구가 제공됩니다:

Health Connect (3개 도구)

7개 카테고리(활동, 신체, 수면, 활력 징후, 영양, 생식 건강, 마음 챙김)의 36개 레코드 유형에 걸쳐 Android Health Connect 데이터를 조회합니다.

도구

설명

list_record_types

권한 상태와 함께 Health Connect 레코드 유형 나열

query_health_data

유형 및 시간 범위별로 레코드 조회

get_health_summary

특정 기간 동안 허용된 유형에 대한 건강 요약

알림 (5개 도구)

기기 알림을 읽고, 검색하고, 상호작용합니다.

도구

설명

list_active_notifications

게시된 알림 나열

search_notification_history

텍스트, 패키지 또는 시간 범위별로 알림 기록 검색

get_notification_stats

특정 기간의 알림 수, 상위 앱, 가장 바쁜 시간대 확인

perform_notification_action

활성 알림의 작업 버튼 호출

dismiss_notification

키를 사용하여 활성 알림 해제

아웃리치 (10개 도구)

AI가 앱 실행, 링크 열기, 알림 전송, 방해 금지 모드 관리 등 기기에서 작업을 수행하도록 합니다.

도구

설명

launch_app

패키지 이름으로 설치된 앱 실행

open_link

기본 앱에서 http/https URL 열기

copy_to_clipboard

클립보드에 텍스트 복사

send_notification

선택적 작업 버튼과 탭하여 열기 URL이 포함된 알림 게시

list_installed_apps

설치된 앱 나열

create_notification_channel

알림 채널 생성

list_notification_channels

AI가 생성한 알림 채널 나열

delete_notification_channel

AI가 생성한 알림 채널 삭제

get_dnd_state

방해 금지 모드 상태 가져오기

set_dnd_state

방해 금지 모드 상태 설정

사용 통계 (4개 도구)

앱 사용 패턴 및 스크린 타임 분석.

도구

설명

get_usage_summary

특정 기간의 총 스크린 타임 및 상위 앱

get_app_usage

앱별 일일 사용량

get_usage_events

특정 범위 내의 원시 앱 포그라운드/백그라운드 이벤트

compare_usage

두 기간 간의 스크린 타임 비교; 가장 큰 차이부터 정렬

아키텍처

Android 앱

모듈

목적

:app

Compose UI, Koin DI, 내비게이션, 테마

:core:tunnel

Mux 프로토콜, WebSocket 클라이언트, TLS 수락, CertificateStore

:core:mcp

MCP 세션 라우팅, HTTP 서버, OAuth(기기 코드 + 인증 코드 + PKCE), 토큰 관리

:core:bridge

TLS를 통해 터널 Mux 스트림을 MCP 세션으로 연결

:api

McpIntegration 인터페이스, IntegrationStateStore

:integrations

MCP 제공자: Health Connect, 아웃리치(통화/SMS/DND), 사용 통계, 알림 캡처

:notifications

교차 알림 인프라, 감사 기록 유지(Room)

:work

포그라운드 서비스, FCM 수신기, WorkManager

:core:testfixtures

실제 릴레이 바이너리를 부팅하는 통합 계층 테스트를 위한 공유 픽스처

릴레이 서버 (relay/)

소형 VPS에서 실행되는 Rust 바이너리. 다음을 처리합니다:

  • TLS 패스스루 — SNI를 통해 AI 클라이언트 연결을 기기로 라우팅하며, 내부 TLS를 종료하지 않음

  • Mux WebSocket — 단일 기기 연결을 통해 여러 클라이언트 세션을 다중화

  • FCM 깨우기 — 절전 모드인 기기를 깨우기 위해 푸시 알림 전송

  • ACME 인증서 — Google Trust Services DNS-01(Cloudflare API)을 통해 기기별 TLS 인증서 발급; Let's Encrypt도 지원

  • 봇 보호 — 기기를 깨우기 전 비밀 URL 접두사 검증, FCM 스로틀링 및 IP 속도 제한

보안

  • 종단간 암호화 — TLS는 휴대폰에서 종료됩니다. 릴레이는 SNI 패스스루만 수행합니다.

  • 클라우드 동기화 없음 — 데이터는 기기 내 소스에서 읽어 실시간으로 제공됩니다. 원격으로 저장되는 데이터는 없습니다.

  • 기기별 ACME 인증서 — Google Trust Services(DNS-01)를 통한 기기별 인증서, 개인 키는 Android Keystore(하드웨어 기반)에 저장.

  • mTLS 기기 인증 — 릴레이는 연결을 허용하기 전에 클라이언트 인증서로 기기를 인증합니다.

  • 비밀 URL 접두사 — 각 기기 URL에는 회전 가능한 통합별 비밀이 포함됩니다(brave-health.abc123.rousecontext.com, 여기서 brave-health는 {adjective}-{integrationId}임). 기기 하위 도메인을 발견한 봇이라도 비밀 없이는 기기를 깨울 수 없습니다.

  • 클라이언트별 OAuth — 각 AI 클라이언트는 도구에 액세스하기 전에 기기 내 승인을 통해 권한을 부여받아야 합니다.

  • 감사 추적 — 모든 도구 호출은 인수, 응답, 지속 시간과 함께 로컬에 기록됩니다.

빌드

Android

./gradlew assembleDebug

Android SDK(compileSdk 36, targetSdk 35, minSdk 24)가 필요합니다. 빌드에는 JDK 21(JAVA_HOME=/usr/lib/jvm/java-21-openjdk)이 필요합니다.

커버리지 보고서

./gradlew koverHtmlReport

모든 모듈의 단위 테스트와 :core:tunnel:integrationTest 계층(실제 릴레이 하위 프로세스)에 걸쳐 라인 및 브랜치 커버리지를 집계합니다. HTML은 build/reports/kover/html/index.html에 생성됩니다. CI는 동일한 보고서를 test-coverage 아티팩트로 게시하며 각 PR에 모듈별 요약을 추가합니다.

릴레이

cd relay
cargo build --release

종단간 테스트

E2E 테스트는 adb를 실행하는 호스트(일반적으로 LAN 로컬)를 통해 실제 기기를 제어합니다. adb.host 시스템 속성이 필요하며 기본값은 비어 있습니다. 설정되지 않으면 :e2e:e2eTest 작업이 즉시 실패합니다. 기기 일련번호는 선택 사항이며 해당 호스트에 여러 기기가 연결된 경우에만 필요합니다.

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

:device-tests 모듈에는 로컬에서 실행 중인 릴레이를 가리키는 APK를 빌드하는 별도의 러너가 있습니다. 또한 기기에서 도달 가능한 LAN IP가 필요합니다:

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

lan.ip가 없으면 기기 테스트는 JUnit 가정에 따라 깔끔하게 건너뜁니다.

상태

v1.0 출시. 4개 통합에 걸쳐 22개 도구 제공, 약 3초 내 콜드 스타트 깨우기, 종단간 암호화 지원. 자세한 설계 문서 및 개인정보 처리방침은 docs/design/을 참조하세요.

라이선스

Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하세요.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to send SMS messages via Twilio through the Model Context Protocol or a standalone REST API. It supports standard messaging, automated greetings, and creative content generation using natural language.
    1
    22 npm
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    A local-first MCP server that enables AI agents to read user-authorized Google Health API v4 data from Fitbit, Pixel Watch, and partners via OAuth, with tokens never leaving the machine.
    26
    604 npm
    64
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that gives AI agents full vision and control over Android devices via ADB and scrcpy. Supports screenshots, input, apps, UI automation, shell, files, and clipboard.
    38
    278 npm
    109
    MIT