Skip to main content
Glama
WeChat Mini Program Dev MCP

WeChat Mini Program Dev MCP

by yfmeii

Servidor MCP para Mini Programas de WeChat

Un servidor basado en FastMCP que automatiza las Herramientas de Desarrollo de WeChat a través de miniprogram-automator. Este servidor proporciona herramientas MCP que permiten a los asistentes de IA navegar, inspeccionar y manipular páginas de mini programas, similar a playwright-mcp, pero personalizado para el ecosistema de WeChat.

Requisitos previos

  • Tener instaladas las Herramientas de Desarrollo de WeChat con soporte para acceso por línea de comandos (cli / cli.bat).

  • Node.js 18+ y npm instalados localmente.

  • Un proyecto de mini programa que se pueda abrir en las herramientas de desarrollo.

Related MCP server: miniprogram-automator-mcp

Inicio rápido (paquete npm)

@yfme/weapp-dev-mcp ha sido publicado en npm; los usuarios comunes no necesitan clonar el repositorio ni ejecutar manualmente node dist/index.js.

Ejecutar con npx

npx -y @yfme/weapp-dev-mcp

Instalar en el proyecto/globalmente

npm install -g @yfme/weapp-dev-mcp
weapp-dev-mcp

O como dependencia del proyecto:

npm install --save-dev @yfme/weapp-dev-mcp
npx weapp-dev-mcp

Solo se recomienda ejecutar node dist/index.js directamente cuando se desarrolla dentro de este repositorio. Los usuarios generales deben iniciar siguiendo el método del paquete npm anterior.

Integración con clientes MCP

Configuración

Para usar este servidor en Claude Desktop u otros clientes MCP, añada lo siguiente al archivo de configuración:

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

Autorización automática de herramientas en Claude Code

Debido a que al usar Claude Code para invocar herramientas MCP se solicita permiso de ejecución, esto puede provocar la pérdida del estado de conexión entre el MCP y las Herramientas de Desarrollo de WeChat. Dado que la obtención de la salida de la consola depende en gran medida del estado de la conexión, no será posible obtener registros de forma coherente, por lo que se recomienda añadir permisos manualmente:

Cree un archivo .claude/settings.local.json en el directorio del proyecto, o añada el siguiente contenido a un archivo existente para permitir la invocación directa sin confirmación, o añada las herramientas que desee permitir:

{
  "permissions": {
    "allow": [
      "mcp__weapp-dev-mcp__mp_ensureConnection",
      "mcp__weapp-dev-mcp__mp_navigate",
      "mcp__weapp-dev-mcp__mp_screenshot",
      "mcp__weapp-dev-mcp__mp_callWx",
      "mcp__weapp-dev-mcp__mp_getLogs",
      "mcp__weapp-dev-mcp__mp_currentPage",
      "mcp__weapp-dev-mcp__mp_listProjects",
      "mcp__weapp-dev-mcp__mp_setDefaultProject",
      "mcp__weapp-dev-mcp__page_getElement",
      "mcp__weapp-dev-mcp__page_getElements",
      "mcp__weapp-dev-mcp__page_waitElement",
      "mcp__weapp-dev-mcp__page_waitTimeout",
      "mcp__weapp-dev-mcp__page_getData",
      "mcp__weapp-dev-mcp__page_setData",
      "mcp__weapp-dev-mcp__page_callMethod",
      "mcp__weapp-dev-mcp__element_tap",
      "mcp__weapp-dev-mcp__element_input",
      "mcp__weapp-dev-mcp__element_callMethod",
      "mcp__weapp-dev-mcp__element_getData",
      "mcp__weapp-dev-mcp__element_setData",
      "mcp__weapp-dev-mcp__element_getInnerElement",
      "mcp__weapp-dev-mcp__element_getInnerElements",
      "mcp__weapp-dev-mcp__element_getWxml",
      "mcp__weapp-dev-mcp__element_getStyles",
      "mcp__weapp-dev-mcp__element_scrollTo",
      "mcp__weapp-dev-mcp__element_getAttributes",
      "mcp__weapp-dev-mcp__element_getBoundingClientRect"
    ]
  }
}

Nota: El formato del nombre de la herramienta es mcp__<nombre-servidor>__<nombre-herramienta>. Asegúrese de que el nombre del servidor coincida con el de su configuración MCP.

Iniciar las Herramientas de Desarrollo de WeChat

Antes de usar el servidor MCP, debe iniciar las Herramientas de Desarrollo de WeChat y habilitar el servicio WebSocket.

💡 Antes de comenzar:

  1. Abra las Herramientas de Desarrollo de WeChat.

  2. Vaya a Configuración → Configuración de seguridad → Puerto de servicio.

  3. Habilite "Depuración HTTP" y "Pruebas automatizadas".

Iniciar mediante línea de comandos

Use la línea de comandos para iniciar las Herramientas de Desarrollo de WeChat y habilitar automáticamente el servicio WebSocket:

macOS/Linux:

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

Windows:

"C:\Program Files (x86)\Tencent\微信web开发者工具\cli.bat" auto --project C:\path\to\your\project --auto-port 9420

Donde:

  • El parámetro --project especifica la ruta del directorio del proyecto del mini programa (reemplácelo por la ruta real).

  • El parámetro --auto-port especifica el puerto del servicio WebSocket (por defecto 9420).

⚠️ Advertencia Debido al mecanismo de sandbox, algunos clientes no permiten que el MCP acceda al CLI de las Herramientas de Desarrollo de WeChat fuera del directorio del proyecto, por lo que aquí solo se ha introducido el uso del servicio WebSocket.

Configuración de variables de entorno

Controle cómo la herramienta de automatización se conecta a las Herramientas de Desarrollo de WeChat mediante variables de entorno:

Variable

Descripción

WEAPP_WS_ENDPOINT

【Recomendado】 Punto final WebSocket de las herramientas de desarrollo ya en ejecución. Si se establece, el servidor usa el modo connect en lugar de iniciar una nueva instancia. Ejemplo: ws://localhost:9420

WECHAT_DEVTOOLS_CLI_PATH

Ruta del CLI de las Herramientas de Desarrollo de WeChat (opcional si la ruta por defecto es válida).

WEAPP_AUTOMATOR_MODE

Fuerza el uso del modo launch o connect. Por defecto es launch a menos que se proporcione WEAPP_WS_ENDPOINT.

WEAPP_DEVTOOLS_PORT

Puerto preferido al iniciar las herramientas de desarrollo (vuelve a un puerto disponible).

WEAPP_DEVTOOLS_TIMEOUT

Tiempo de espera de inicio (ms, por defecto 30000).

WEAPP_AUTO_ACCOUNT

Pasado a --auto-account para inicio de sesión automático.

WEAPP_DEVTOOLS_TICKET

Pasado a --ticket al iniciar.

WEAPP_TRUST_PROJECT

Establecer en true para incluir --trust-project al iniciar.

WEAPP_DEVTOOLS_ARGS

Argumentos CLI adicionales al iniciar (separados por espacios).

WEAPP_DEVTOOLS_CWD

Directorio de trabajo pasado al proceso de las herramientas de desarrollo.

WEAPP_AUTOCLOSE

Si se establece en true, cierra la sesión de las herramientas de desarrollo después de cada llamada a la herramienta.

WEAPP_AUTOLAUNCH

Si se establece en true, detecta e inicia automáticamente las herramientas de desarrollo.

WEAPP_LAUNCH_TIMEOUT

Tiempo de espera de inicio (ms, por defecto 45000).

WEAPP_CONNECT_TIMEOUT

Tiempo de espera de conexión (ms, por defecto 45000).

WEAPP_PROJECT_PATH

Ruta del proyecto del mini programa (opcional).

Nota: Al iniciar las herramientas de desarrollo (modo launch), debe proporcionar el directorio del proyecto del mini programa a través de los parámetros de la herramienta MCP: proporciónelo a través de connection.projectPath antes de realizar operaciones (por ejemplo, mediante mp_ensureConnection). Una vez establecido, este valor persistirá en llamadas posteriores.

Las llamadas a herramientas pueden sobrescribir la mayoría de estos valores predeterminados a través del objeto connection.

Herramientas disponibles

Herramientas de aplicación (Application Tools)

  • mp_ensureConnection – Asegura que la sesión de automatización esté lista; permite forzar la reconexión o sobrescribir la configuración de conexión.

  • mp_navigate – Navega dentro del mini programa, admite navigateTo, redirectTo, reLaunch, switchTab o navigateBack.

  • mp_screenshot – Captura una captura de pantalla y la devuelve (o la guarda en el disco).

  • mp_callWx – Llama a métodos de la API de mini programas de WeChat (como wx.showToast).

  • mp_getLogs – Obtiene los registros de la consola del mini programa, con opción de borrarlos después de obtenerlos.

  • mp_currentPage – Obtiene información de la página actual (ruta, parámetros de consulta, dimensiones, posición de desplazamiento); si withData es true, devuelve adicionalmente los datos de la página.

  • mp_listProjects – Lista los proyectos recientes en las Herramientas de Desarrollo de WeChat para facilitar la selección del directorio del proyecto.

  • mp_setDefaultProject – Establece la ruta predeterminada del proyecto del mini programa; una vez establecida, la próxima conexión usará automáticamente este proyecto.

Herramientas de página (Page Tools)

  • page_getElement – Obtiene un elemento de la página mediante un selector, devuelve un resumen del elemento (tagName, text, value, size, offset); establecer withWxml: true devuelve adicionalmente el outerWxml completo; admite la sintaxis [index=N] para seleccionar el N-ésimo elemento.

  • page_getElements – Obtiene una matriz de elementos de la página mediante un selector, devuelve un resumen de cada elemento; establecer withWxml: true devuelve adicionalmente el outerWxml completo de cada elemento; admite la sintaxis [index=N].

  • page_waitElement – Espera a que un elemento aparezca en la página (⚠️ no aplicable a elementos dentro de componentes personalizados); admite la sintaxis [index=N]; añade parámetros de tiempo de espera e intervalo de reintento.

  • page_waitTimeout – Espera un número específico de milisegundos.

  • page_getData – Obtiene el objeto de datos de la página actual, se puede especificar una ruta (admite rutas anidadas como 'user.name').

  • page_setData – Actualiza los datos de la página actual usando setData; añade la opción verify para verificar si los datos se actualizaron correctamente.

  • page_callMethod – Llama a un método expuesto en la instancia de la página actual.

Herramientas de elemento (Element Tools)

  • element_tap – Simula un clic en un elemento WXML mediante un selector CSS; admite la sintaxis [index=N] para seleccionar el N-ésimo elemento; admite clics con desplazamiento de coordenadas x/y; mayor estabilidad: espera a que el elemento sea interactivo y verifica automáticamente si la ruta de la página cambió después del clic.

  • element_input – Introduce texto en un elemento (aplicable a componentes input y textarea).

  • element_callMethod – Llama a un método de una instancia de componente personalizado.

  • element_getData – Obtiene los datos de renderizado de una instancia de componente personalizado.

  • element_setData – Establece los datos de renderizado de una instancia de componente personalizado.

  • element_getInnerElement – Obtiene un elemento dentro de otro elemento (equivalente a element.$(selector)), devuelve un resumen del elemento; establecer withWxml: true devuelve adicionalmente el outerWxml completo.

  • element_getInnerElements – Obtiene una matriz de elementos dentro de otro elemento (equivalente a element.$$(selector)), devuelve un resumen del elemento; establecer withWxml: true devuelve adicionalmente el outerWxml completo de cada elemento.

  • element_getWxml – Obtiene el WXML de un elemento (interno o externo).

  • element_getStyles – Obtiene los valores de estilo CSS de un elemento, el parámetro names es una matriz de nombres de estilo (como ['color', 'fontSize']).

  • element_scrollTo – Desplaza un componente scroll-view a una posición específica (x, y).

  • element_getAttributes – Obtiene los valores de los atributos de un elemento, el parámetro names es una matriz de nombres de atributos (como ['class', 'id', 'data-index']).

  • element_getBoundingClientRect – Obtiene información del rectángulo delimitador del elemento en relación con la ventana gráfica (left, top, width, height, right, bottom), considerando transformaciones CSS (actualmente solo admite selectores de ID y clase).

Cada herramienta acepta un bloque connection opcional para sobrescribir los valores predeterminados del entorno (ruta del proyecto, ruta del CLI, punto final WebSocket, etc.).

Consejos de uso

Consejos generales

  • Antes de conectar, habilite la automatización en las Herramientas de Desarrollo de WeChat (Configuración → Configuración de seguridad → Puerto de servicio).

  • Se recomienda llamar primero a mp_ensureConnection para verificar la conexión y ver los detalles del sistema/página.

  • Usar WEAPP_AUTOCLOSE=true es adecuado para interacciones únicas sin estado.

  • Use siempre rutas absolutas al navegar (comenzando con /): /pages/mine/mine.

  • Use switchTab para páginas de la barra de pestañas (tabBar) y navigateTo para páginas normales.

Operar con componentes personalizados

Al operar con componentes personalizados, hay dos métodos:

Método 1: Usar el parámetro innerSelector (recomendado)

Aplicable a herramientas como element_tap, element_input, element_getWxml, etc.:

{
  "selector": "#my-component",
  "innerSelector": ".inner-button"
}
  • selector: Selector del componente personalizado.

  • innerSelector: Selector del elemento dentro del componente.

Método 2: Usar herramientas de consulta dentro de elementos

Aplicable a element_getInnerElement y element_getInnerElements:

{
  "selector": "#my-component",
  "targetSelector": ".inner-button"
}

Limitaciones

  • page_waitElement no es aplicable a elementos dentro de componentes personalizados. Utilice page_waitTimeout junto con herramientas de consulta de elementos para realizar comprobaciones de sondeo.

Función de inicio automático (AutoLaunch)

Cuando se configura WEAPP_AUTOLAUNCH=true, el servidor MCP puede detectar e iniciar automáticamente las Herramientas de Desarrollo de WeChat:

  1. Detección automática de puerto: Detecta si hay un servicio ejecutándose en el puerto 9420.

  2. Iniciar si no hay servicio: Si el puerto no está ocupado, llama automáticamente al CLI para iniciar las herramientas de desarrollo.

  3. Selección de proyecto:

    • Si hay una configuración de proyecto predeterminada, se usa automáticamente.

    • Si no hay un proyecto predeterminado, se listan automáticamente los proyectos recientes para elegir.

    • Admite ingresar el número de proyecto (por ejemplo, 1) o la ruta completa.

Ejemplo de configuración

{
  "mcpServers": {
    "weapp-dev": {
      "command": "npx",
      "args": ["-y", "weapp-dev-mcp"],
      "env": {
        "WEAPP_AUTOLAUNCH": "true",
        "WEAPP_PROJECT_PATH": "D:\\path\\to\\your\\project"
      }
    }
  }
}

Flujo de trabajo

  1. En la primera conexión, se detecta WEAPP_AUTOLAUNCH=true.

  2. Se comprueba si hay un servicio en el puerto 9420.

  3. Si no hay servicio, se inician automáticamente las herramientas de desarrollo (usando cli.bat auto --project <path> --auto-port 9420).

  4. Se esperan 45 segundos para que las herramientas de desarrollo estén listas.

  5. Se establece la conexión WebSocket.

  6. Las conexiones posteriores reutilizan automáticamente la conexión existente.

Sugerencia: Después de configurar el proyecto predeterminado con mp_setDefaultProject, no es necesario volver a seleccionar el proyecto en la próxima conexión.

Available Tools

27 tools
element_callMethodB

调用组件实例指定方法,仅自定义组件可以使用。

Inputs: selector (required), method (required), connection, innerSelector, +1 more.

element_getAttributesC

获取元素的特性值。names 为特性名数组(如 ['class', 'id', 'data-index'])。

Inputs: selector (required), names (required), connection, innerSelector.

element_getBoundingClientRectA

获取元素相对于视口的边界矩形信息(left、top、width、height、right、bottom)。此方法返回的是考虑 CSS transform 变换后的实际渲染尺寸和位置。支持跨组件查询:若需获取自定义组件内部元素,可将 selector 设为组件选择器,innerSelector 设为内部元素选择器。注意:目前仅支持 ID 选择器、类选择器。

Inputs: selector (required), connection, innerSelector.

element_getDataC

获取组件实例渲染数据,仅自定义组件可以使用。

Inputs: selector (required), connection, innerSelector, path.

element_getInnerElementD

在元素范围内获取元素,相当于 element.$(selector)。设置 withWxml 为 true 可额外返回每个元素的完整 outerWxml。

Inputs: selector (required), targetSelector (required), connection, innerSelector, +1 more.

element_getInnerElementsC

在元素范围内获取元素数组,相当于 element.$$(selector)。设置 withWxml 为 true 可额外返回每个元素的完整 outerWxml。

Inputs: selector (required), targetSelector (required), connection, innerSelector, +1 more.

element_getStylesC

获取元素的样式值。names 为样式名数组(如 ['color', 'fontSize', 'backgroundColor'])。

Inputs: selector (required), names (required), connection, innerSelector.

element_getWxmlC

获取元素 WXML。默认获取内部 WXML(element.wxml()),设置 outer 为 true 可获取包含元素本身的 WXML(element.outerWxml())。

Inputs: selector (required), connection, innerSelector, outer.

element_inputC

向指定元素输入文本。

Inputs: selector (required), value (required), connection, innerSelector.

element_scrollToA

滚动 scroll-view 组件到指定位置。仅适用于 scroll-view 组件。

Inputs: selector (required), x (required), y (required), connection, +1 more.

element_setDataB

设置组件实例渲染数据,仅自定义组件可以使用。

Inputs: selector (required), data (required), connection, innerSelector.

element_tapA

通过 CSS 选择器模拟点击 WXML 元素。支持 [index=N] 语法选择第 N 个元素。如需点击自定义组件内部的元素,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component)或标签选择器,innerSelector 设为组件内部元素的选择器。

Inputs: selector (required), connection, innerSelector, waitMs.

mp_callWxC

调用微信小程序 API 方法,(如 wx.pageScrollTo)。

Inputs: method (required), connection, args.

mp_currentPageA

获取当前页面的信息,包括路径、查询参数、尺寸和滚动位置。通常在 mp_ensureConnection 成功后立即调用,用于确认当前页面。withData 为 true 时额外返回页面数据。

Inputs: connection, withData.

mp_ensureConnectionA

检查小程序自动化会话是否就绪。先调用这个工具,再调用 mp_screenshot、page_* 或 element_* 工具。若失败,优先用 reconnect=true 重试一次;若返回项目选择提示,则传 projectSelection。

Inputs: connection, reconnect, projectSelection.

mp_getLogsC

获取小程序控制台日志。可选择在获取后清空日志。

Inputs: connection, clear.

mp_listProjectsB

列出微信开发者工具中的最近项目,方便在 mp_ensureConnection 返回项目选择提示后继续选择项目。

Inputs: no named parameters.

mp_navigateC

在小程序内导航,支持 navigateTo、redirectTo、reLaunch、switchTab 和 navigateBack。

Inputs: connection, path, query, transition, +1 more.

mp_screenshotA

截取当前小程序视口的截图。需要已有活动会话;若提示没有活动会话,请先调用 mp_ensureConnection。默认返回内联图片,或保存到文件路径。

Inputs: connection, path.

mp_setDefaultProjectA

设置默认的小程序项目路径,设置后下次连接会优先使用该项目。通常用于修复项目选择失败后的后续重试。

Inputs: projectPath (required).

page_callMethodC

调用当前页面实例上暴露的方法。参数可以作为数组提供。

Inputs: method (required), connection, args.

page_getDataC

获取当前页面的数据对象,可选择指定子数据路径。

Inputs: connection, path.

page_getElementB

通过选择器获取页面元素,相当于 page.$(selector)。返回每个元素的摘要信息(tagName、text、value、size、offset);设置 withWxml 为 true 可额外返回元素的完整 outerWxml。支持 [index=N] 语法选择第 N 个元素。

Inputs: selector (required), connection, innerSelector, withWxml.

page_getElementsA

通过选择器获取页面元素数组,相当于 page.$$(selector)。返回每个元素的摘要信息(tagName、text、value、size、offset);设置 withWxml 为 true 可额外返回每个元素的完整 outerWxml。支持 [index=N] 语法选择第 N 个元素。

Inputs: selector (required), connection, withWxml.

page_setDataC

使用 setData 更新当前页面的数据。

Inputs: data (required), connection.

page_waitElementC

等待指定选择器的元素出现在页面上。支持 [index=N] 语法选择第 N 个元素。增强版:增加了超时和重试间隔参数。

Inputs: selector (required), connection, timeout, retryInterval.

page_waitTimeoutC

等待指定的毫秒数。

Inputs: milliseconds (required), connection.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 27 tools

    Disambiguation5/5

    Each tool targets a distinct action within its category (element, mp, page). Within each group, operations like getAttributes, getBoundingClientRect, getData are clearly different. No two tools overlap in purpose.

    Naming Consistency5/5

    All tools follow a consistent pattern: category_verbNoun (e.g., element_tap, mp_navigate, page_setData). Underscore separation and camelCase for the verb+noun are uniform across all 27 tools.

    Tool Count4/5

    With 27 tools, the count is on the higher side but well-justified by the broad scope (element manipulation, page control, and mini-program API calls). It's reasonably scoped for a comprehensive development assistant.

    Completeness4/5

    The tool set covers core operations: element querying/interaction, page data management, and mini-program API invocation. Minor gaps like gesture simulation or file operations exist, but the essential CRUD and lifecycle actions are present.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables automated testing of WeChat mini-programs via Model Context Protocol, providing tools for connecting to WeChat Developer Tools, querying and interacting with page elements, making assertions, navigating, and debugging.
      20
      32 npm
      78
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to automate WeChat mini-programs via launch or connect modes, providing a stable interaction tree for observation and operation.
      17 npm
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI assistants to control WeChat mini-programs running in WeChat Developer Tools through MCP tools. Provides automation capabilities for launching, navigating, querying, and interacting with pages and elements.
      61
      26 npm
      1
      MIT
    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables AI agents to debug and control WeChat Mini Programs through WeChat DevTools, including direct automator operations and CLI-backed features like screenshots, logs, previews, and uploads.
      -