CM

cazriel/mcp-server

Developer tools
20 stars 0 forks 品質 90 トレンド 90

Android MCP server exposing device tools over HTTP.

概要

运行在 Android 手机上的本地 Model Context Protocol (MCP) 服务器。通过 Streamable HTTP 协议向 Claude Desktop、Cursor 等 MCP 客户端暴露手机能力:文件操作、系统管理、设备信息、应用管理、脚本执行、通讯交互、网络请求、实用工具等。 本项目实现的是 MCP ,运行在被控的 Android 设备上;MCP 客户端运行在 PC 或另一台设备,通过局域网或内网穿透与之通信。 - :实现 Streamable HTTP 传输(POST /mcp,JSON-RPC 2.0),同时兼容 SSE(GET /sse)。 - :自动生成 16 位 token,支持开关;未启用时任意局域网客户端均可连接。 - :通过系统文件夹选择器(SAF)限定文件操作根目录,避免越权访问。 - :可将远端 MCP 服务(Streamable HTTP)的工具拉取到本地,合并为单一端点。 - :基于 bore.pub 协议,一键将本地端口暴露到公网。 - :可选悬浮窗快捷开关服务器;支持开机自启动。 - :集成 Shizuku,在已授权设备上以 shell 权限执行 am、pm 等命令。 - :基于 QuickJS(ES2020),提供 mcp_javascript 工具执行脚本自动化。 - :FOREGROUND_SERVICE_TYPE_DATA_SYNC 与可选 WakeLock,确保长时间后台运行。 应用以 Android 前台服务(McpServerService)持有 McpHttpServer,在本地端口监听 HTTP 请求。收到符合 MCP 规范的 JSON-RPC 消息后,由 McpHandler 分发到 ToolKit,再路由至各 ToolDefinition 的处理函数,并将结果以 JSON 或 SSE 形式返回。 服务器实现的 JSON-RPC 方法包括 initialize、notifications/initialized、ping、tools/list、tools/call、resources/list、prompts/list 等。 服务器启动时由 ToolKit.init 注册以下内置工具。

README

运行在 Android 手机上的本地 Model Context Protocol (MCP) 服务器。通过 Streamable HTTP 协议向 Claude Desktop、Cursor 等 MCP 客户端暴露手机能力:文件操作、系统管理、设备信息、应用管理、脚本执行、通讯交互、网络请求、实用工具等。

[!IMPORTANT] 本项目实现的是 MCP 服务端,运行在被控的 Android 设备上;MCP 客户端运行在 PC 或另一台设备,通过局域网或内网穿透与之通信。


目录


核心特性

  • 标准 MCP 协议:实现 Streamable HTTP 传输(POST /mcp,JSON-RPC 2.0),同时兼容 SSE(GET /sse)。
  • 可选 Bearer 鉴权:自动生成 16 位 token,支持开关;未启用时任意局域网客户端均可连接。
  • 工作区沙箱:通过系统文件夹选择器(SAF)限定文件操作根目录,避免越权访问。
  • 桥接远端 MCP:可将远端 MCP 服务(Streamable HTTP)的工具拉取到本地,合并为单一端点。
  • 内网穿透:基于 bore.pub 协议,一键将本地端口暴露到公网。
  • 悬浮窗控制:可选悬浮窗快捷开关服务器;支持开机自启动。
  • 特权命令:集成 Shizuku,在已授权设备上以 shell 权限执行 am、pm 等命令。
  • 内置 JavaScript 引擎:基于 QuickJS(ES2020),提供 mcp_javascript 工具执行脚本自动化。
  • 前台服务保活:FOREGROUND_SERVICE_TYPE_DATA_SYNC 与可选 WakeLock,确保长时间后台运行。

工作原理

应用以 Android 前台服务(McpServerService)持有 McpHttpServer,在本地端口监听 HTTP 请求。收到符合 MCP 规范的 JSON-RPC 消息后,由 McpHandler 分发到 ToolKit,再路由至各 ToolDefinition 的处理函数,并将结果以 JSON 或 SSE 形式返回。

flowchart LR
    Client[MCP 客户端Claude Desktop / Cursor]
    Server[MCP 服务器McpHttpServer]
    Toolkit[ToolKit]
    Tools[ToolDefinitions]
    Device[设备能力]
    Client |Streamable HTTP / SSE| Server
    Server --> Toolkit
    Toolkit --> Tools
    Tools --> Device

HTTP 端点

方法 路径 说明
POST /mcp 主 JSON-RPC 入口(Streamable HTTP)
GET /sse Server-Sent Events 长连接
GET /tools 列出所有已注册工具(含桥接工具)
GET /info、/meta 服务器元信息(端口、协议版本、能力)
GET /、/status 可读运行状态
GET /health 健康检查与运行时长

服务器实现的 JSON-RPC 方法包括 initialize、notifications/initialized、ping、tools/list、tools/call、resources/list、prompts/list 等。


工具清单

服务器启动时由 ToolKit.init 注册以下内置工具。所有工具均返回 JSON 对象;返回错误时填充 isError: true 并附带标准化错误码(详见 ErrorCodes.kt)。


客户端接入

任何支持 MCP Streamable HTTP 传输的客户端均可连接。以下示例以 curl 与典型 JSON-RPC 请求演示。

initialize

curl -X POST http://:1145/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": {"name": "example", "version": "1.0"}
    }
  }'

服务器响应后会下发 Mcp-Session-Id 头,后续请求需原样回传。

列出工具

{"jsonrpc":"2.0","id":2,"method":"tools/list"}

调用工具

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "device_info",
    "arguments": {}
  }
}

客户端配置示例(Claude Desktop / Cline)

{
  "mcpServers": {
    "android-device": {
      "type": "streamableHttp",
      "url": "http://192.168.1.10:1145/mcp"
    }
  }
}

启用 token 鉴权时,需在客户端请求头附加:

Authorization: Bearer 

`` 见应用设置页 “鉴权 token”。


权限说明

应用声明以下权限,对应用途如下:

权限 用途
INTERNET HTTP 服务器监听与远端 MCP 通信
ACCESS_NETWORK_STATE 检测网络可用性
ACCESS_WIFI_STATE 读取当前 Wi-Fi SSID(用于状态显示)
FOREGROUND_SERVICE 启动前台服务以保证后台存活
FOREGROUND_SERVICE_DATA_SYNC Android 14+ 要求声明前台服务类型
POST_NOTIFICATIONS 显示前台服务通知(Android 13+)
WAKE_LOCK 可选唤醒锁
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 申请忽略电池优化
RECEIVE_BOOT_COMPLETED 开机自启
SYSTEM_ALERT_WINDOW 悬浮窗权限
USE_FULL_SCREEN_INTENT 通知全屏意图
READ_PHONE_STATE 部分系统信息读取
READ/WRITE_EXTERNAL_STORAGE 兼容旧版本存储访问(maxSdkVersion 32 / 28)
MANAGE_EXTERNAL_STORAGE 旧版本 “所有文件访问” 权限
QUERY_ALL_PACKAGES installed_apps 工具枚举全部应用

致谢

本项目在设计与实现过程中参考或直接使用了以下开源项目,谨此致谢:


许可证

本项目基于 GNU General Public License v3.0(GPL-3.0)开源。

您可以自由地使用、修改和分发本软件,但所有衍生作品必须以相同许可证开源,并在显著位置保留原始版权与许可证声明。

View this README on GitHub

インストール

This server does not publish a one-line install command.

Open the repository installation guide

設定

{ "mcpServers": { "android-device": { "type": "streamableHttp", "url": "http://192.168.1.10:1145/mcp" } } }