xbrowser_controller

xbrowser_controller

MCP server for controlling X Browser (com.mmbox.xbrowser) via HTTP, exposing 439 tools for navigation, JavaScript execution, page content retrieval, and deep browser control.

Category
访问服务器

README

XBrowser Controller - X浏览器深度控制技能

X浏览器(com.mmbox.xbrowser)的完整逆向理解、APK 改造能力、以及通过内置 MCP 服务器直接控制浏览器的能力。

掌握 404 个原生桥方法、APK 改造能力、439 个 MCP 工具,可通过 HTTP 直接操控 X浏览器。

功能特性

  • 通过 MCP HTTP 服务器直接控制 X浏览器
  • 8 个基础工具:状态查询、标签页信息、执行JS、获取HTML、获取文本、枚举桥方法、导航、刷新
  • 27 个高级封装工具:系统信息、UI主题、弹窗、剪贴板、搜索、UA管理、代理、阅读模式、媒体/TTS、下载管理、文件管理、书签、账户、VIP、自动填充、站点策略、隐私、标签管理、手势、事件、QR扫描、分享、缩放、安全、用户脚本、开发者工具、广告拦截
  • 404 个原生桥方法直接调用
  • 支持局域网直连和 ADB 隧道两种连接方式
  • 技能定义文件,可直接集成到 AI Agent 系统

前置条件

  1. X浏览器增强版 APK(已内置 MCP HTTP 服务器,端口 8765)
  2. Python 3.8+
  3. 网络连接(局域网或 ADB)

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 启动 X浏览器 MCP 服务器

在 X浏览器增强版中,浏览器启动后自动监听端口 8765。

确认 MCP 服务器运行:

curl -X POST http://127.0.0.1:8765/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"xbrowser_status","arguments":{}}}'

3. 使用 Python 客户端

from xbrowser_mcp_server import XBrowserClient

# 连接 X浏览器 MCP 服务器
client = XBrowserClient("http://127.0.0.1:8765/mcp")

# 查询状态
status = client.call_tool("xbrowser_status")
print(status)

# 导航到网页
client.call_tool("xbrowser_navigate", {"url": "https://www.baidu.com"})

# 获取页面内容
html = client.call_tool("xbrowser_get_html")
print(html)

# 执行 JavaScript
result = client.call_tool("xbrowser_eval_js", {"expression": "document.title"})
print(result)

# 获取 Cookie
cookies = client.call_tool("xbridge_GM_cookie_list", {"p1": "", "p2": "", "p3": "", "p4": ""})
print(cookies)

# TTS 语音朗读
client.call_tool("xbridge_TTS", {"p1": "你好,这是语音朗读测试"})

4. 命令行使用

# 查询状态
python xbrowser_mcp_server.py status

# 导航
python xbrowser_mcp_server.py navigate https://www.baidu.com

# 获取页面文本
python xbrowser_mcp_server.py text

# 执行JS
python xbrowser_mcp_server.py eval "document.title"

连接方式

局域网直连

POST http://192.168.1.5:8765/mcp
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"xbrowser_status","arguments":{}}}

ADB 隧道(如局域网不通)

adb forward tcp:8765 tcp:8765
# 然后访问 http://127.0.0.1:8765/mcp

工具清单

一、基础工具(8个)

工具 参数 说明
xbrowser_status 返回 {running, port, webview}
xbrowser_tab_info 返回当前标签页 {title, url, mbrowser}
xbrowser_eval_js expression 执行任意 JavaScript
xbrowser_get_html 返回页面 HTML 源码
xbrowser_get_text 返回页面可见文本
xbrowser_bridge_methods 枚举全部 404 个桥方法名
xbrowser_navigate url 导航到指定 URL
xbrowser_reload 刷新当前页面

二、高级封装工具(27个)

每个工具通过 action 参数区分子操作,包括:系统信息、UI主题、弹窗、剪贴板、搜索、UA管理、代理、阅读模式、媒体/TTS、下载管理、文件管理、书签、账户、VIP、自动填充、站点策略、隐私、标签管理、手势、事件、QR扫描、分享、缩放、安全、用户脚本、开发者工具、广告拦截。

三、桥方法工具(404个)

命名规则:xbridge_<方法名>,参数按顺序传 p1, p2, p3...

常见可用桥方法:

  • xbridge_getVersionCode -> 版本号
  • xbridge_getBrowserInfoObj -> 浏览器信息
  • xbridge_inChina -> 是否在中国
  • xbridge_GM_cookie_list(p1,p2,p3,p4) -> 列出 Cookie(含 httpOnly)
  • xbridge_getFaviconURI(p1) -> 获取网站图标
  • xbridge_getElementRules(p1) -> 获取广告过滤规则
  • xbridge_getSniffMediaResource -> 嗅探媒体资源
  • xbridge_TTS(p1) -> 语音朗读文本

安全校验说明

约 1/4 的桥方法受 X8.p() 安全校验保护,只允许在以下页面调用:

  • x:// 内部协议页面(如 x://settings)
  • file:///android_asset/ 设置页
  • xbext.com 域名

解决方案:先 xbrowser_navigate("x://settings") 再调用受限方法。

APK 改造知识

工具链

# 编译 Java
javac -cp /opt/android-sdk/platforms/android-34/android.jar -d out com/mmbox/xbrowser/XBrowserMcpServer.java

# 转换为 DEX
java -cp /opt/android-sdk/build-tools/35.0.0/lib/d8.jar com.android.tools.r8.D8 \
  --output dex_out --lib /opt/android-sdk/platforms/android-34/android.jar \
  out/com/mmbox/xbrowser/*.class

# 反编译 DEX
java -cp /usr/share/java/baksmali.jar:... org.jf.baksmali.Main \
  disassemble -o smali_out dex_out/classes.dex

# 打包 APK
apktool b $DECODED_DIR -o output.apk

# 签名
java -jar /opt/android-sdk/build-tools/35.0.0/lib/apksigner.jar sign \
  --ks /tmp/debug.keystore --ks-pass pass:android \
  --out signed.apk unsigned.apk

# 安装
adb install -r signed.apk

修改点

  1. Browser.smali -> onCreate() 注入 getInstance() -> setContext() -> start()
  2. Of.smali -> 构造函数注入 getInstance() -> registerWebView(webView)
  3. X8.smali -> 追加 enableMcpServer(boolean) 和 isMcpServerEnabled() 桥方法
  4. assets/settings/general-setting.html -> 注入 MCP 开关 UI + JS

已知问题

问题 原因 解决
requests.post(json=...) 失败 服务器 jsonGetString 不支持空格 用 data= 传 JSON + separators
端口 8765 被占用 旧 Python MCP 残留 pkill -f xbrowser_mcp 后再重启
局域网直连断 无线调试端口过期 重启浏览器或重建 ADB forward

项目结构

xbrowser_controller/
├── README.md                  # 项目说明
├── LICENSE                    # MIT 许可证
├── xbrowser_mcp_server.py     # MCP 服务器客户端核心代码
├── skills.json                # 技能定义(8个预置工具)
├── requirements.txt           # Python 依赖
└── .gitignore

技能定义

skills.json 包含 8 个预置工具的完整定义,可直接集成到 AI Agent 系统:

  • 查询X浏览器状态
  • X浏览器导航
  • X浏览器搜索
  • 读取X浏览器页面内容
  • 获取X浏览器Cookie
  • 获取X浏览器信息
  • X浏览器执行JS
  • X浏览器语音朗读

注意事项

  • 本工具仅用于合法的安全研究和学习
  • 逆向和 APK 改造请遵守相关法律法规
  • 使用本工具造成的任何后果由使用者自行承担

许可证

MIT License

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选