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.
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 系统
前置条件
- X浏览器增强版 APK(已内置 MCP HTTP 服务器,端口 8765)
- Python 3.8+
- 网络连接(局域网或 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
修改点
- Browser.smali -> onCreate() 注入 getInstance() -> setContext() -> start()
- Of.smali -> 构造函数注入 getInstance() -> registerWebView(webView)
- X8.smali -> 追加 enableMcpServer(boolean) 和 isMcpServerEnabled() 桥方法
- 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
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。