Rouse Context
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 호환 클라이언트와 작동합니다.
시작하기
설치 — GitHub Releases에서 APK를 다운로드하여 사이드로드하세요(Android 설정에서 "출처를 알 수 없는 앱 설치"를 허용해야 할 수 있습니다). 또는 Google Play 베타 액세스를 위해
beta@rousecontext.com으로 이메일을 보내주세요.온보딩 — 앱을 열고 '시작하기'를 탭한 뒤 알림 권한을 부여하세요. 앱이 릴레이에 등록되고 기기의 TLS 인증서가 프로비저닝됩니다(약 10초 소요).
통합 활성화 — 홈 화면에서 '통합 추가(Add Integration)'를 탭하세요. 하나를 선택하고(예: Health Connect) 요청된 권한을 부여하면
https://brave-health.abc123.rousecontext.com/mcp와 같은 URL을 얻게 됩니다.AI 클라이언트 연결 — 해당 URL을 Claude(설정 → 커넥터 → 사용자 지정 커넥터 추가), Cursor 또는 모든 MCP 클라이언트에 붙여넣으세요. 첫 연결 시 휴대폰에서 OAuth 승인 요청이 뜨면 '승인'을 탭하세요.
사용 — AI에게 건강 데이터에 대해 묻거나, 알림을 보내거나, 스크린 타임을 확인해보세요. 모든 도구 호출은 앱의 '감사(Audit)' 탭에 기록됩니다.
Related MCP server: fitbit-mcp
작동 원리
AI Client ──TLS──> Relay (SNI passthrough) ──mux WebSocket (mTLS)──> Your Phone통합(예: Health Connect)을 활성화하면
https://brave-health.abc123.rousecontext.com/mcp와 같은 URL을 받게 됩니다(통합은 호스트 이름 접두사로 식별되며, 경로는 항상/mcp입니다).해당 URL을 Claude, Cursor 또는 모든 MCP 클라이언트에 추가합니다.
클라이언트가 연결되면 릴레이가 FCM 푸시를 통해 휴대폰을 깨웁니다.
휴대폰이 mTLS WebSocket을 통해 다시 연결되고, 릴레이가 두 TLS 스트림을 하나로 연결합니다.
AI 클라이언트가 종단간 암호화된 TLS를 통해 휴대폰과 직접 통신하며, 릴레이는 평문을 전혀 볼 수 없습니다.
세션은 일시적입니다. 클라이언트 연결이 끊어지면 휴대폰은 다시 절전 모드로 돌아갑니다.
통합
각 통합은 독립적으로 활성화되며 OAuth 인증(PKCE)이 포함된 자체 MCP 엔드포인트를 가집니다. 4개의 통합에 걸쳐 22개의 도구가 제공됩니다:
Health Connect (3개 도구)
7개 카테고리(활동, 신체, 수면, 활력 징후, 영양, 생식 건강, 마음 챙김)의 36개 레코드 유형에 걸쳐 Android Health Connect 데이터를 조회합니다.
도구 | 설명 |
| 권한 상태와 함께 Health Connect 레코드 유형 나열 |
| 유형 및 시간 범위별로 레코드 조회 |
| 특정 기간 동안 허용된 유형에 대한 건강 요약 |
알림 (5개 도구)
기기 알림을 읽고, 검색하고, 상호작용합니다.
도구 | 설명 |
| 게시된 알림 나열 |
| 텍스트, 패키지 또는 시간 범위별로 알림 기록 검색 |
| 특정 기간의 알림 수, 상위 앱, 가장 바쁜 시간대 확인 |
| 활성 알림의 작업 버튼 호출 |
| 키를 사용하여 활성 알림 해제 |
아웃리치 (10개 도구)
AI가 앱 실행, 링크 열기, 알림 전송, 방해 금지 모드 관리 등 기기에서 작업을 수행하도록 합니다.
도구 | 설명 |
| 패키지 이름으로 설치된 앱 실행 |
| 기본 앱에서 http/https URL 열기 |
| 클립보드에 텍스트 복사 |
| 선택적 작업 버튼과 탭하여 열기 URL이 포함된 알림 게시 |
| 설치된 앱 나열 |
| 알림 채널 생성 |
| AI가 생성한 알림 채널 나열 |
| AI가 생성한 알림 채널 삭제 |
| 방해 금지 모드 상태 가져오기 |
| 방해 금지 모드 상태 설정 |
사용 통계 (4개 도구)
앱 사용 패턴 및 스크린 타임 분석.
도구 | 설명 |
| 특정 기간의 총 스크린 타임 및 상위 앱 |
| 앱별 일일 사용량 |
| 특정 범위 내의 원시 앱 포그라운드/백그라운드 이벤트 |
| 두 기간 간의 스크린 타임 비교; 가장 큰 차이부터 정렬 |
아키텍처
Android 앱
모듈 | 목적 |
| Compose UI, Koin DI, 내비게이션, 테마 |
| Mux 프로토콜, WebSocket 클라이언트, TLS 수락, CertificateStore |
| MCP 세션 라우팅, HTTP 서버, OAuth(기기 코드 + 인증 코드 + PKCE), 토큰 관리 |
| TLS를 통해 터널 Mux 스트림을 MCP 세션으로 연결 |
|
|
| MCP 제공자: Health Connect, 아웃리치(통화/SMS/DND), 사용 통계, 알림 캡처 |
| 교차 알림 인프라, 감사 기록 유지(Room) |
| 포그라운드 서비스, FCM 수신기, WorkManager |
| 실제 릴레이 바이너리를 부팅하는 통합 계층 테스트를 위한 공유 픽스처 |
릴레이 서버 (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 assembleDebugAndroid 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를 참조하세요.
This server cannot be deployed
Maintenance
Related MCP Connectors
Give your AI agent a memory and body on your iPhone: set alarms, ring your phone, over MCP.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables 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.122 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Fitbit Web API with OAuth PKCE, local cache, and trend analysis.1837 PyPI2GPL 3.0
- AlicenseBqualityAmaintenanceA 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.26604 npm64MIT
- AlicenseAqualityAmaintenanceMCP 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.38278 npm109MIT