MS

mrc-sinclair/miniprogram-devtools-mcp

Developer tools
0 stars 0 forks Quality 83 Trend 20MIT

基于 miniprogram-automator 的微信开发者工具 MCP 服务,让 AI Agent 自动调试微信小程序

Overview

- :ws 连调试端口(9420)——执行 JS、读写 data、导航、元素操作、静态自检 preflight、坏状态自愈 rebuild、运行时用例 - :模拟器截图、console/network 日志、预览、上传体验版、项目列表、云开发透传,以及 wechatide_help 官方工具动态发现 官方 2.x 开发者工具自带 wechatide mcp(49 工具,需独立 MCP Token)。两者可共存,但**(9420 单连接)。选这个的理由: - :ws 直连,evaluate 100-500ms;官方 automation_* 每次调用走异步 task + 授权摩擦 - :路径 / 端口 / 项目全自动探测,一次授权弹窗后免确认;官方 MCP 要手动复制配置 + 填 MCP Token - :授权等待、轮询、错误分类已代码化,失败返回结构化 blocker,不占 AI 上下文 - :preflight 静态自检、rebuild 坏状态自愈、checks/ 运行时用例框架——官方没有对应物 - :tabBar 页自动降级 switchTab、delta 越界自动收敛、GBK/UTF-8 混排解码 长尾能力不镜像、不硬编码:wechatide_call 透传 + wechatide_help 动态发现,官方增改废工具实时反映。官方 skill 升级后 wechatide_status 返回 versionRelation: agent_behind 提示跟进。 第三方开源工具,非腾讯官方出品;仅调用开发者工具自带的 cli / wechatide 接口,不分发不逆向。 ⚠️ 提供任意 JS 执行能力,仅用于本机受信任环境;发布类工具只在明确要求时触发。 其他方式:克隆源码 npm install && npm run smoke;团队共用放进项目 mcp/ 子目录;离线拷贝整个目录(含 node_modules)后把 args 指向 index.js。配置位置:Cursor ~/.cursor/mcp.json、Claude Desktop %APPDATA%\Claude\、Trae %APPDATA%\Trae CN\User\mcp.json、WorkBuddy ~/.workbuddy/mcp.json。

README

miniprogram-devtools-mcp

操控微信开发者工具的 MCP server,31 个工具:

  • automator 直连(20):ws 连调试端口(9420)——执行 JS、读写 data、导航、元素操作、静态自检 preflight、坏状态自愈 rebuild、运行时用例
  • 官方 wechatide CLI 封装(11):模拟器截图、console/network 日志、预览、上传体验版、项目列表、云开发透传,以及 wechatide_help 官方工具动态发现

与官方 MCP 的差异

官方 2.x 开发者工具自带 wechatide mcp(49 工具,需独立 MCP Token)。两者可共存,但不要同时驱动同一项目的自动化(9420 单连接)。选这个的理由:

  • 同步快车道:ws 直连,evaluate 100-500ms;官方 automation_* 每次调用走异步 task + 授权摩擦
  • 零配置:路径 / 端口 / 项目全自动探测,一次授权弹窗后免确认;官方 MCP 要手动复制配置 + 填 MCP Token
  • 编排是代码,不是提示词:授权等待、轮询、错误分类已代码化,失败返回结构化 blocker,不占 AI 上下文
  • 自愈与用例体系:preflight 静态自检、rebuild 坏状态自愈、checks/ 运行时用例框架——官方没有对应物
  • 细节增强:tabBar 页自动降级 switchTab、delta 越界自动收敛、GBK/UTF-8 混排解码

长尾能力不镜像、不硬编码:wechatide_call 透传 + wechatide_help 动态发现,官方增改废工具实时反映。官方 skill 升级后 wechatide_status 返回 versionRelation: agent_behind 提示跟进。

第三方开源工具,非腾讯官方出品;仅调用开发者工具自带的 cli / wechatide 接口,不分发不逆向。 ⚠️ 提供任意 JS 执行能力,仅用于本机受信任环境;发布类工具只在明确要求时触发。

安装

npx(推荐)——加入 MCP 客户端的 mcpServers,重启客户端:

"wechat-devtools": {
  "command": "npx",
  "args": ["-y", "miniprogram-devtools-mcp"],
  "env": {}
}

其他方式:克隆源码 npm install && npm run smoke;团队共用放进项目 mcp/ 子目录;离线拷贝整个目录(含 node_modules)后把 args 指向 index.js。配置位置:Cursor ~/.cursor/mcp.json、Claude Desktop %APPDATA%\Claude\、Trae %APPDATA%\Trae CN\User\mcp.json、WorkBuddy ~/.workbuddy/mcp.json。

环境

Node ≥ 18;微信开发者工具稳定版 1.06+(推荐 2.x,需带 cli.bat / wechatide.cmd;官方 skill 兼容门槛 2.02.2607152+)。Windows / macOS。

零配置:项目路径、cli 路径、wechatide 路径、端口(9420-9430 扫描)全部自动探测;需要时可用 WECHAT_DEVTOOLS_CLI / WECHAT_DEVTOOLS_PROJECT / WECHATIDE_CLIENT 等环境变量覆盖。首次调用 wechatide 系工具会弹一次授权框(客户端名 miniprogram-mcp),点同意后免确认。

使用

AI 对话里说人话即可(“连上开发者工具” → ensure_ready;“读一下 globalData” → evaluate;“截个图” → simulator_screenshot;“看看 console” → get_simulator_console),或一键 auto_test:定位项目 → 连接 → preflight → 跑用例,返回 pass / blocker / hint。

automator 直连(20)

工具 作用 关键参数
auto_test 一键联调:定位项目 → 连接 → preflight → run_check,合并报告;preflight 有 error 时短路 projectPath、port、checkName
ensure_ready 确保调试就绪(扫端口→启动 cli.bat→连接),失败返回结构化 blocker projectPath、port
connect / disconnect / status 连接 / 断开(不关 IDE)/ 查状态与当前页 port(默认 9420)
evaluate 逻辑层执行 JS 函数 fn(必填,函数表达式如 () => 1+2)
page_stack / get_current_page 页面栈 / 当前页(路径、query、data) —
navigate_to / navigate_back 跳转 / 返回;tabBar 页自动降级 switchTab,delta 越界自动收敛 url;delta
call_wx_api 调同步 wx.* API method(必填)、args
get_data 读当前页 data —
element_tap / element_input / element_scroll 点击 / 输入 / 滚动(容器级仅 ``) selector、value、x、y
preflight 静态自检(免连 IDE):JSON / 页面源码 / 组件四件套 / tabBar / miniprogram_npm / 端口 projectPath、port
rebuild close→open→auto 自动重编译并重连,自愈 IDE 坏状态 projectPath、port、timeoutMs
build_npm cli build-npm,修 preflight 的 npm 未构建告警 projectPath
list_checks / run_check 列出 / 执行 checks/ 用例(run_check 需先 ensure_ready) name、projectPath

官方 wechatide CLI 封装(11)

走 wechatide.cmd(随官方工具升级),不依赖官方 MCP 配置;授权等待、异步轮询、错误分类已在 lib/wechatide.js 代码化。需要动手的操作(授权 / 上传确认)短等后返回 {pending, taskId, userAction},转告用户后用 wechatide_poll_task 续查。

工具 作用 关键参数
wechatide_status 登录态 / 当前用户 / CLI 令牌 / 官方 skill 版本关系 versionRelation;首次触发授权弹窗 client、token、skillVersion
wechatide_poll_task 查异步任务结果 taskId(必填)
wechatide_help 官方工具动态发现(离线):不传 tool 返回完整清单(分组/摘要/必填/废弃标记/skill 版本),传 tool 返回完整参数(含 action 枚举) tool、client、token
simulator_screenshot 截模拟器,返回 {path, imageWidth, imageHeight} path、wait、waitForSelector、quality
get_simulator_console / get_simulator_network 读 console / network 缓冲区(grep 过滤)。Windows 下正则须用单引号 command(默认 grep -n .)
create_preview_qrcode / auto_preview 预览二维码 / 直推开发者微信 pagePath、query、scene
upload 上传体验版(需人工确认);重发前必须先查旧 taskId(pending 不重发) version(必填)、desc
project_list 已导入项目(只读) scope
wechatide_call 透传任意未封装官方工具(cloud_、compile_wxml/wxss、simulator_open_page、login 等,清单用 wechatide_help 查);automation_ 需先 disconnect;破坏性操作需 {"confirm": true} tool(必填)、args(JSON 值自动序列化)

evaluate 的 fn 必须是函数表达式;call_wx_api 仅支持同步 API(异步用 evaluate 包 Promise)。

故障排查

现象 处理
服务端口已关闭 设置 → 安全设置 → 打开「服务端口」(是设置页那个端口,不是 9420)
返回 {pending, taskId, userAction} 不是出错:按 userAction 在工具里操作,再 wechatide_poll_task 续查
登录失效 扫码登录后重试
wechatide_auth_required 冷启动未完成或需重新授权:等 10-20s 或点「同意」,别改安全设置
task_not_found taskId 已失效:重新调用原工具,别继续轮询
ide_window_not_active 项目窗口没打开 / 最小化到托盘:切到前台再试
单个工具卡满超时 projectPath 大小写与 DevTools 记录不一致:留空走自动探测
command_quote_issue Windows 吞双引号:grep 正则用单引号 'error|fail'
connect 失败 / 超时 端口没起:AI 调 ensure_ready,或手动 cli.bat auto --project X --auto-port 9420,等 30s
evaluate 报 Unexpected number fn 须是函数表达式 () => ...
element_tap 报 Element not found 选择器不对 / 未渲染:先 get_current_page,异步渲染等 1s
客户端看不到工具 mcp.json 格式错误或没重启客户端

中文 Windows 的 GBK/UTF-8 混排解码与六类 blocker 分类已在 lib/ 代码化。

限制

BLE 不可用(模拟器 brand: devtools);call_wx_api 仅同步 API;真机行为可能与模拟器不同;launch 模式在 Windows + Node 18+ 上不可用(仅 connect)。

开发

node --check index.js → npm run smoke(免 IDE)→ node e2e-all-tools.js(需 IDE,产物 gitignore 勿提交)。自定义用例放 checks/*.js(通用)或 checks/examples/(项目专属),模板 _template.js。发布:npm version minor && npm publish(files 白名单须含 smoke.js)。

License

MIT

View this README on GitHub

Install

npx -y miniprogram-devtools-mcp