Skip to main content
Glama

Rouse Context

您的手机拥有 AI 所不具备的上下文信息——您的健康数据、通知和应用使用情况。Rouse Context 让 AI 助手能够按需获取这些上下文,且无需将您的数据同步到云端。

这是一个将您的手机变成 MCP 服务器的 Android 应用。Claude 等 AI 客户端连接到一个 URL,您的手机会被唤醒,并建立直接的加密会话。AI 请求它所需的内容,您的手机做出响应,然后重新进入休眠状态。除了通过该实时会话外,您的数据绝不会离开您的设备。

状态: v1.0 已发布。可在 GitHub Releases 获取。如需 Google Play 测试版访问权限,请发送电子邮件至 beta@rousecontext.com。适用于 Claude、Cursor 以及任何兼容 MCP 的客户端。

入门指南

  1. 安装 — 从 GitHub Releases 下载 APK 并侧载安装(您可能需要在 Android 设置中启用“安装来自未知来源的应用”)。或者发送电子邮件至 beta@rousecontext.com 获取 Google Play 测试版访问权限。

  2. 引导 — 打开应用,点击“开始使用”,授予通知权限。应用将向中继服务器注册并配置您设备的 TLS 证书(约 10 秒)。

  3. 启用集成 — 在主屏幕点击“添加集成”。选择一个(例如 Health Connect),授予请求的权限,您将获得一个类似 https://brave-health.abc123.rousecontext.com/mcp 的 URL。

  4. 连接您的 AI 客户端 — 将该 URL 粘贴到 Claude(设置 → 连接器 → 添加自定义连接器)、Cursor 或任何 MCP 客户端中。首次连接时,您的手机会触发 OAuth 批准请求——点击“批准”。

  5. 使用 — 向 AI 询问您的健康数据、给自己发送通知、查看屏幕使用时间。每次工具调用都会记录在应用的“审计”选项卡中。

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 个工具)

查询 Android Health Connect 数据,涵盖 7 个类别(活动、身体、睡眠、生命体征、营养、生殖、正念)中的 36 种记录类型。

工具

描述

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、外联(通话/短信/勿扰)、使用统计、通知捕获

: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

端到端测试

端到端测试通过运行 adb 的(通常是局域网内的)主机,经由 adb 驱动真实设备。需要 adb.host 系统属性,默认为空——如果未设置,:e2e:e2eTest 任务会快速失败。设备序列号是可选的,仅在连接了多个设备到该主机时才需要。

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

:device-tests 模块有一个单独的运行器,用于构建指向本地运行的中继服务器的 APK。它还需要一个设备可访问的局域网 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