极乌客

我的一些笔记和日记

微信小程序开发 MCP

https://github.com/yfmeii/weapp-dev-mcp

https://www.npmjs.com/package/@yfme/weapp-dev-mcp

起因是前几天微信开放社区说微信开发者工具 2.0 发布了,据说有增强 AI 协作能力的封装

但是事实是并没有找到任何暴露 MCP 服务的迹象,社区也没有人做出回复

 

那就只能自己动手了,小程序有一个自动化,是用来做自动化测试的,能通过编程的方式控制和读取运行状态下的小程序,也就是说设想中的完美开发方式,AI 完成编码后自己能走一遍交互能大大降低返工次数也能节省 AI 的使用成本

当然有很多现成的别人做过的 MCP,大多都是以 cli 形式控制的,但是这样就存在一个问题,部分工具的 MCP 有沙箱机制,会导致 MCP 无法调用工作目录以外的文件,所以我这里主要使用 websocket 控制

首先要打开微信开发者工具的自动化测试:

  1. 打开微信开发者工具
  2. 进入 设置 → 安全设置 → 服务端口
  3. 开启 "HTTP 调试" 和 "自动化测试"

 

配置:

{
  "mcpServers": {
    "weapp-dev": {
      "command": "npx",
      "args": [
        "-y",
        "-p", "@modelcontextprotocol/sdk@1.17.2",
        "-p", "fastmcp@3.23.0",
        "-p", "@yfme/weapp-dev-mcp",
        "weapp-dev-mcp"
      ],
      "env": {
        "WEAPP_WS_ENDPOINT": "ws://localhost:9420"
      }
    }
  }
}

启动微信开发者工具(macOS):

/Applications/wechatwebdevtools.app/Contents/MacOS/cli auto --project /path/to/your/project --auto-port 9420

其中:

  • --project 参数指定小程序项目目录路径(请替换为实际的项目路径)
  • --auto-port 参数指定 WebSocket 服务端口(默认 9420)

 

提供工具:

应用工具(Application Tools)

  • mp_ensureConnection – 确保自动化会话就绪;可选择强制重连或覆盖连接设置
  • mp_navigate – 在小程序内导航,支持 navigateToredirectToreLaunchswitchTab 或 navigateBack
  • mp_screenshot – 捕获屏幕截图并返回(或保存到磁盘)
  • mp_callWx – 调用微信小程序 API 方法(如 wx.showToast
  • mp_getLogs – 获取小程序控制台日志,可选择获取后清除

页面工具(Page Tools)

  • page_getElement – 通过选择器获取页面元素
  • page_waitElement – 等待元素出现在页面上(⚠️ 不适用于自定义组件内部元素)
  • page_waitTimeout – 等待指定的毫秒数
  • page_getData – 获取当前页面的数据对象,可指定路径
  • page_setData – 使用 setData 更新当前页面的数据
  • page_callMethod – 调用当前页面实例上暴露的方法

元素工具(Element Tools)

  • element_tap – 通过 CSS 选择器点击 WXML 元素
  • element_input – 向元素输入文本(适用于 input 和 textarea 组件)
  • element_callMethod – 调用自定义组件实例的方法(需要 ID 选择器)
  • element_getData – 获取自定义组件实例的渲染数据(需要 ID 选择器)
  • element_setData – 设置自定义组件实例的渲染数据(需要 ID 选择器)
  • element_getInnerElement – 获取元素内的元素(相当于 element.$(selector)
  • element_getInnerElements – 获取元素内的元素数组(相当于 element.$$(selector)
  • element_getSize – 获取元素大小(宽度和高度)
  • element_getWxml – 获取元素 WXML(内部或外部)

Swift 通过执行二进制文件增强功能

上一篇
评论
发表评论 说点什么
还没有评论