mcpField
H
h5-devtools-mcp

h5-devtools-mcp

本地服务
github.com/xianguoGou开发工具21 周前更新

关于 h5-devtools-mcp

h5-devtools-mcp 是面向编码 Agent 的 MCP 服务,用于调试真实 Android 设备 WebView 中运行的 H5 页面。它通过 adb 和 CDP 列出页面、读取控制台输出与未捕获异常,并可在页面中运行 JavaScript。

主要功能

  1. 01发现可调试的 WebView 页面
  2. 02读取控制台日志和未捕获异常
  3. 03按级别或关键词筛选日志
  4. 04增量读取缓冲日志
  5. 05在页面中执行 JavaScript

适用场景

  1. 01排查 Android WebView 页面异常
  2. 02检查设备上页面的控制台错误
  3. 03在页面上下文运行 JavaScript 表达式

MCP 相关

该项目是通过 stdio 与 MCP 客户端通信的 MCP 服务,提供目标页面发现、连接、控制台读取、JavaScript 执行和断开连接工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xianguogou-h5-devtools": {
"command": "npx",
"args": [
"-y",
"h5-devtools-mcp"
]
}
}
}
启动命令npx -y h5-devtools-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmh5-devtools-mcp0.1.2

工具

5

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

h5-devtools-mcp

npm version npm downloads license

English | 简体中文

一个 MCP 服务,可让编码 Agent(Claude Code、Codex、Cursor……)调试在真实设备 Android WebView 中运行的 H5 页面——读取控制台输出和未捕获的异常,并在页面中运行 JavaScript,无需打开 chrome://inspect。

状态:v0.1,早期版本。仅支持 Android。

工作原理

Coding agent ──MCP (stdio)──▶ h5-devtools-mcp ──adb forward──▶ webview_devtools_remote_<pid> ──CDP──▶ WebView page

每个可调试的 WebView 都会在抽象 Unix 套接字上公开一个 Chrome DevTools Protocol 端点。该服务通过 adb 发现这些套接字(方式与 chrome://inspect 相同),将它们转发到本地端口,并通过 CDP 连接。

要求

  • Node.js 18+
  • PATH 中有 adb(或设置 ADB_PATH)
  • 已启用 USB 调试的 Android 设备
  • 应用必须启用 WebView 调试(调试构建通常已启用):
WebView.setWebContentsDebuggingEnabled(true);

设置

# Claude Code
claude mcp add h5-devtools -- npx -y h5-devtools-mcp

其他 MCP 客户端(Cursor、Codex……)使用相同的命令:npx -y h5-devtools-mcp。

从源码构建
git clone https://github.com/xianguoGou/h5-devtools-mcp.git
cd h5-devtools-mcp
npm install && npm run build
claude mcp add h5-devtools -- node /absolute/path/to/h5-devtools-mcp/dist/index.js

工具

工具功能
list_targets列出可调试页面:应用包名、标题、URL、可见性
attach连接到页面并开始缓冲控制台输出
get_console按级别、关键词和 exclude_keywords 过滤缓冲条目,通过 since_seq 增量读取
evaluate_js在页面中运行 JavaScript 表达式并返回结果(会等待 Promise 完成)
detach断开与页面的连接

输出专为节省令牌而设计:条目紧凑且每条占一行,长消息会被截断,并提供 since_seq,让 Agent 只读取新增内容,而不必在每轮都重新读取整个缓冲区。

示例

> list_targets
- id: R5CT1234/webview_devtools_remote_8812/3A1F…
  app: com.example.app (pid 8812) on SM-S9180
  title: "Order"
  url: https://m.example.com/order

> get_console { "levels": ["error"] }
#41 10:32:01.123 [error exception] TypeError: Cannot read properties of undefined (reading 'price')
    at https://m.example.com/assets/index-8f2a.js:1:48213
next since_seq: 57

故障排除

  • “no debuggable WebView found”——应用未启用 WebView 调试,或尚无运行中的 WebView。请先打开 H5 页面。
  • “debugger in use”——每个页面只能连接一个调试器。请关闭 chrome://inspect DevTools 窗口。
  • “unauthorized”——请在设备上接受 USB 调试提示。

已知限制

  • **调试器占用检测仅尽力而为。**它依赖 /json/list 不返回 webSocketDebuggerUrl。较新的 Chromium 允许每个页面连接多个 CDP 客户端,因此即使 DevTools 窗口已打开,连接也可能成功;较旧的 WebView 仍可能拒绝连接。
  • **list_targets 遇到无响应的应用时,每个应用可能耗时约 3 秒。**套接字会逐个查询,超时时间为 3 秒;而 Android 会冻结后台应用,导致其 WebView 套接字停止响应。attach 只会重新检查目标自己的套接字,因此速度较快。
  • evaluate_js 以页面的完整权限运行——它可以读取 Cookie、存储内容和令牌,也可以更改页面状态。请确保它受 Agent 的工具权限提示约束。
  • **端到端测试脚本要求端口 9333 处于空闲状态。**如果上次运行残留了无头 Chromium,脚本会连接到该进程;请先将其关闭。

开发

端到端测试使用模拟的 adb 和无头 Chromium 代替手机:

npm run build
CHROME=/path/to/chrome npm run test:e2e

路线图

  • 发现设备和 WebView 页面
  • 控制台消息、未捕获的异常、浏览器日志条目
  • 网络请求和响应
  • JSBridge 调用日志(可配置桥接形式)
  • evaluate_js
  • screenshot
  • JSBridge 模拟
  • iOS(通过 WebKit Inspector Protocol 调试 WKWebView)

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。