wechat-devtools-mcp
Servidor MCP de WeChat DevTools (v0.9.15)
Envuelve la CLI de WeChat DevTools como un servicio MCP (Model Context Protocol), permitiendo que la IA del editor invoque directamente los comandos CLI de WeChat, logrando un ciclo completo de desarrollo, prueba, depuración y automatización de mini programas.
[!IMPORTANT] Este proyecto adopta una arquitectura de «MCP ligero + Skill completo»: el servidor MCP proporciona 7 API agregadas, y el Skill de wechat-devtools asociado proporciona flujos SOP, referencia rápida de parámetros y mejores prácticas. Ambos deben usarse juntos; sin el Skill, la IA no podrá operar los mini programas siguiendo el flujo correcto.
Publicado en el MCP Registry oficial, compatible con instalación en un clic en múltiples plataformas (Windows / macOS).
🚀 Instalación e inicio rápido
Paso 1 — Instalar el servidor MCP
Se recomienda usar uv, que gestiona automáticamente las dependencias de Python y proporciona un entorno de ejecución aislado.
pip install uv # 安装 uv(如已安装可跳过)
uv tool install wechat-devtools-mcp --force # 一键安装到全局隔离环境[!WARNING] Si anteriormente instaló una versión antigua mediante
pip install, desinstálela primero para evitar conflictos de versiones:pip uninstall wechat-devtools-mcpLa ruta de
pip install(comoPython313/Scripts/) puede tener prioridad sobre la ruta deuv tool install(~/.local/bin/), lo que haría que se ejecute la versión antigua. Puede confirmar la versión actual mediante el campomcp_versiondevuelto porwechat_ide(action='status').
[!WARNING] Compatibilidad de versiones: ≥0.9.11 admite las versiones duales mcp 1.x y 2.x (declaración de dependencia
mcp[cli]>=1.9,<3). ≤0.9.10 no es compatible con mcp ≥2.0 (en instalaciones nuevas apareceráModuleNotFoundError: mcp.server.fastmcp, ver #9) — los usuarios con versiones fijadas deben actualizar a ≥0.9.11, o añadir--with "mcp<2"al instalar.
[!TIP]
Ver la versión real en ejecución (≥0.9.13):
wechat-devtools-mcp --version # 零依赖打印实际安装版本;uvx 复用已装环境不自拉最新,此命令可直接确认 uv tool list | grep wechat # 离线确认已安装版本Actualizar la herramienta: si el editor está ejecutando el servicio MCP, primero debe terminar el proceso y luego actualizar:
# Bash / CMD taskkill /F /IM "wechat-devtools-mcp*" 2>/dev/null; uv tool upgrade wechat-devtools-mcp# Windows PowerShell Get-Process | Where-Object { $_.ProcessName -like "*wechat-devtools*" } | Stop-Process -Force uv tool upgrade wechat-devtools-mcpActualización en un clic desde el agente:
taskkill /F /IM "wechat-devtools-mcp*" 2>/dev/null; uv tool upgrade wechat-devtools-mcp && npx -y skills add WaterTian/wechat-devtools-mcp/.agents/skills/wechat-devtools
Paso 2 — Activar el puerto de servicio de DevTools
[!WARNING] Debe activarse manualmente; de lo contrario, la IA no podrá enviar ninguna instrucción.
Ruta de operación: DevTools → Configuración → Configuración de seguridad → Puerto de servicio → Activar
💡 Puede verificar si el puerto está activado mediante
wechat_ide(action='status')— si devuelve un error de conexión, significa que el puerto de servicio aún no está habilitado.
Paso 3 — Confirmar las rutas necesarias
Obtenga de antemano las siguientes dos rutas absolutas; las necesitará más adelante en la configuración del editor:
Ruta | Ejemplo en Windows | Ejemplo en macOS |
CLI de WeChat DevTools |
|
|
Directorio raíz del proyecto de mini programa |
|
|
Usuarios de macOS: no es necesario escapar las barras (
/) en la configuración JSON; los usuarios de Windows deben escribir\como\\.
Paso 4 — Configuración del editor
Modifique claude_desktop_config.json o mcp_config.json (Antigravity):
{
"mcpServers": {
"wechat-devtools": {
"command": "uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"WECHAT_DEVTOOLS_CLI": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"WECHAT_PROJECT_PATH": "D:\\Your\\Project\\Path"
}
}
}
}Edite ~/.kiro/settings/mcp.json:
{
"mcpServers": {
"wechat-devtools": {
"command": "uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"WECHAT_DEVTOOLS_CLI": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"WECHAT_PROJECT_PATH": "D:\\Your\\Project\\Path",
"PYTHONIOENCODING": "utf-8"
},
"autoApprove": [
"wechat_ide", "wechat_build", "wechat_automator", "wechat_inspector",
"wechat_screenshot", "wechat_navigate", "wechat_file"
]
}
}
}Edite ~/.codex/config.toml (global) o .codex/config.toml (a nivel de proyecto):
[mcp_servers.wechat-devtools]
command = "uvx"
args = ["wechat-devtools-mcp"]
[mcp_servers.wechat-devtools.env]
WECHAT_DEVTOOLS_CLI = "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat"
WECHAT_PROJECT_PATH = "D:\\Your\\Project\\Path"También puede añadirlo rápidamente mediante CLI:
codex mcp add wechat-devtools \
--env WECHAT_DEVTOOLS_CLI="C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat" \
--env WECHAT_PROJECT_PATH="D:\\Your\\Project\\Path" \
-- uvx wechat-devtools-mcpAñada un nuevo servidor en la consola MCP:
Nombre:
wechat-devtoolsTipo:
commandComando:
uvx wechat-devtools-mcpVariables de entorno: añada
WECHAT_DEVTOOLS_CLIyWECHAT_PROJECT_PATHcomo se indicó anteriormente
En Windows, las barras invertidas de las rutas deben escaparse (
\\).
Si usa Claude Code para desarrollar en el repositorio del mini programa, puede crear un .mcp.json a nivel de proyecto (se asocia automáticamente al repositorio y es efectivo para los colaboradores).
Windows — .mcp.json en la raíz del repositorio:
{
"mcpServers": {
"wechat-devtools": {
"command": "uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"WECHAT_DEVTOOLS_CLI": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"WECHAT_PROJECT_PATH": "D:\\Your\\Project\\Path"
}
}
}
}macOS — .mcp.json en la raíz del repositorio:
{
"mcpServers": {
"wechat-devtools": {
"command": "/opt/homebrew/bin/uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin",
"WECHAT_DEVTOOLS_CLI": "/Applications/wechatwebdevtools.app/Contents/MacOS/cli",
"WECHAT_PROJECT_PATH": "/Users/<you>/WeChatProjects/<project>",
"NODE_PATH": "/opt/homebrew/bin/node"
}
}
}
}Tres diferencias clave en macOS:
commanddebe usar la ruta absoluta/opt/homebrew/bin/uvx(cuando Claude Code genera subprocesos,PATHno incluye Homebrew)
env.PATHdebe inyectarse explícitamente (especialmente necesario al configurar MCP basados ennpxcomo cloudbase / chrome-devtools; de lo contrario,npxno encontrará Node en#!/usr/bin/env node)Se recomienda especificar
NODE_PATHexplícitamente como doble garantía al iniciar como daemon
Al configurar varios MCP simultáneamente (cloudbase / chrome-devtools, etc.), cada servidor debe manejar
commandcon ruta absoluta yenv.PATHsiguiendo el mismo patrón.
Trae v1.3.0+ admite MCP. Panel de IA → Configuración en la esquina superior derecha → MCP → Añadir → Configuración manual, pegue el siguiente JSON y guarde.
Windows:
{
"mcpServers": {
"wechat-devtools": {
"command": "uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"WECHAT_DEVTOOLS_CLI": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"WECHAT_PROJECT_PATH": "D:\\Your\\Project\\Path"
}
}
}
}macOS:
{
"mcpServers": {
"wechat-devtools": {
"command": "/opt/homebrew/bin/uvx",
"args": ["wechat-devtools-mcp"],
"env": {
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin",
"WECHAT_DEVTOOLS_CLI": "/Applications/wechatwebdevtools.app/Contents/MacOS/cli",
"WECHAT_PROJECT_PATH": "/Users/<you>/WeChatProjects/<project>",
"NODE_PATH": "/opt/homebrew/bin/node"
}
}
}
}También puede editar directamente el archivo de configuración:
Windows:
%APPDATA%\Trae\User\globalStorage\mcp.jsonmacOS:
~/Library/Application Support/Trae/User/globalStorage/mcp.json
[!IMPORTANT] En el cuadro de chat debe seleccionar el agente «Builder with MCP»; los agentes normales no invocan herramientas MCP. Se recomienda instalar también el Skill de wechat-devtools (Paso 5) para que la IA invoque siguiendo el orden del SOP.
Paso 5 — Instalar el Skill (obligatorio)
[!IMPORTANT] Este MCP debe usarse junto con el Skill de wechat-devtools. El Skill contiene todos los flujos SOP, la referencia rápida de parámetros y la guía de resolución de problemas que la IA necesita para operar los mini programas. Sin el Skill instalado, la IA solo puede invocar las API básicas y no puede ejecutar automáticamente flujos de prueba y depuración estandarizados.
Método 1: npx skills add (usuarios de Claude Code)
npx -y skills add WaterTian/wechat-devtools-mcp/.agents/skills/wechat-devtoolsSe descargará en ~/.claude/skills/ y Claude Code lo cargará automáticamente.
Método 2: colóquelo manualmente en .agents/skills/ (clientes que cargan desde .agents/skills/ como Trae)
En el directorio raíz del proyecto del mini programa, ejecute:
git clone --depth 1 https://github.com/WaterTian/wechat-devtools-mcp.git .wdm-tmp
mkdir -p .agents/skills
cp -r .wdm-tmp/.agents/skills/wechat-devtools .agents/skills/
rm -rf .wdm-tmpEstructura de directorios después de completar:
your-project/
└── .agents/skills/
└── wechat-devtools/
├── SKILL.md # 主指令文件(SOP + 能力映射 + 红线规则)
└── references/
└── tool_reference.md # 7 个聚合 API 完整参数参考[!TIP] Usuarios de Trae: confirme que el interruptor Configuración → Habilidades y comandos → Habilitar directorio de habilidades .agents está activado (activado por defecto). Después de guardar, actualice y verá
wechat-devtoolsen la pestaña «Habilidades → Proyecto».
Related MCP server: weapp-agent-mcp
🛠️ Resumen del conjunto de herramientas
El servidor MCP proporciona 7 herramientas agregadas que cubren todo el ciclo de vida del mini programa:
Herramienta | Función | Acciones compatibles |
| Gestión del ciclo de vida del IDE |
|
| Compilación y publicación |
|
| Interacción automatizada |
|
| Recopilación de registros en tiempo de ejecución |
|
| Captura de pantalla de la interfaz (composición de imágenes largas) | — |
| Navegar a páginas y recopilar registros CDP | — |
| Lectura de archivos del proyecto |
|
Para la gestión de funciones en la nube y bases de datos en la nube, use CloudBase MCP (
manageFunctions/readNoSqlDatabaseContent, etc.), que es más completo y no depende del IDE.wechat_cloudestá deshabilitado desde v0.9.5.Consulte MCP_DOC.md para la documentación completa de los parámetros de las herramientas.
🧠 Detalles del contenido del Skill
El Skill permite que la IA, al recibir instrucciones en lenguaje natural, identifique y ejecute automáticamente flujos de operación estandarizados:
Lo que usted dice | Flujo que ejecuta la IA |
"Ayúdame a comprobar si todas las páginas tienen errores" | SOP D — Inspección de todas las páginas |
"Haz clic en el botón de inicio de sesión y captura una captura de pantalla" | SOP B — Depuración de UI |
"La página está en blanco, ayúdame a diagnosticar" | SOP C — Resolución de anomalías |
"Simula la interfaz de pago y prueba el flujo de pago" | SOP E — Pruebas de integración con Mock |
"Prueba la página de detalles, ¿cuál es el nombre del parámetro?" | SOP G — Pruebas de subpáginas |
"Compara si los puntos de cada página son consistentes" | SOP I — Validación de datos entre páginas |
El Skill incluye
9 flujos SOP — inicialización, depuración de UI, resolución de anomalías, inspección de todas las páginas, pruebas de integración con Mock, depuración de red y adaptación de UI, pruebas de subpáginas, validación de datos entre páginas, comparación paralela de datos
Diccionario de mapeo de capacidades — índice rápido de las 7 herramientas agregadas × todas las acciones
Estrategia de diagnóstico progresivo con CDP — dos fases concise → full, para controlar el consumo de tokens
Referencia completa de parámetros — parámetros obligatorios/opcionales de cada acción, ejemplos de respuesta, plantillas comunes
Manual de resolución de problemas — códigos de error comunes y formas de solucionarlos
Consulte Paso 5 — Instalar el Skill para la instalación.
💡 Variables de entorno
Nombre de la variable | Descripción | Valor por defecto | Obligatoria |
| Ruta de la CLI de WeChat DevTools | — | Sí |
| Ruta absoluta del proyecto de mini programa por defecto | — | Sí |
| Tiempo de espera de los comandos CLI (segundos) |
| No |
| Ruta del ejecutable de Node.js |
| No |
❓ Preguntas frecuentes
Causa más común: el "puerto de servicio" de WeChat DevTools no está activado.
Vaya a Configuración → Seguridad → Puerto de servicio y actívelo. Una vez activado, no es necesario reiniciar el IDE; la IA podrá reconectarse.
Si abrió DevTools manualmente, es posible que no esté escuchando el puerto de depuración. Cierre DevTools y deje que la IA ejecute wechat_ide(action='open', cdp_enabled=True) para iniciarlo en modo de depuración.
El servicio MCP del editor sigue en ejecución. Consulte las instrucciones de actualización en Paso 1 — debe terminar el proceso antes de actualizar.
Puede que la versión antigua instalada con pip install tenga mayor prioridad. Ejecute pip uninstall wechat-devtools-mcp para eliminar la versión antigua y luego confirme que el campo mcp_version es la versión más reciente mediante wechat_ide(action='status').
Asegúrese de que WECHAT_DEVTOOLS_CLI en env de la configuración del editor contenga la ruta absoluta:
Windows: use doble barra invertida (por ejemplo,
C:\\...\\cli.bat)macOS: ruta estándar
/Applications/wechatwebdevtools.app/Contents/MacOS/cli, las barras no necesitan escaparse
Cuando los clientes GUI (como Claude Desktop) inician MCP, PATH puede no incluir /opt/homebrew/bin. Desde MCP v0.9.6, se intenta automáticamente la ruta estándar de Homebrew; si aún falla, puede configurarlo explícitamente en env:
"NODE_PATH": "/opt/homebrew/bin/node"📋 Historial de versiones
Versión | Descripción |
0.9.15 | Adaptación a DevTools 2.x (Electron) + corrección de la falla prolongada en la recopilación de CDP: DevTools 2.x ahora usa Electron (1.06.x Stable sigue siendo NW.js, doble compatibilidad sin reemplazo). La ruta de inicio en macOS se determina automáticamente según la presencia de |
0.9.14 | Corrección de rutas de lectura de archivos + corrección de parámetros inoperantes: |
0.9.13 | Salida temprana de |
0.9.12 | Versión del paquete de respuesta de handshake + límite superior de dependencias: en mcp 2.x, |
0.9.11 | Compatibilidad con mcp 2.0.0: el SDK oficial de MCP Python 2.0 (lanzado el 2026-07-28) eliminó |
0.9.10 | Corrección de fallo silencioso de page_path: screenshot.js verifica después de la navegación si la ruta de la página coincide; si falta el sufijo |
0.9.9 | Corrección de reinicio del mini programa causado por captura de pantalla: screenshot.js cambia el método de navegación para páginas que no son TabBar de |
0.9.8 | Corrección de estabilidad de conexión de automator: la verificación de salud de |
0.9.7 | Corrección de procesos huérfanos residuales del daemon: daemon.js agrega un watchdog del proceso padre, que cada 5 segundos verifica la existencia con |
0.9.6 | Adaptación para macOS: el modo |
0.9.5 | Corrección de un bug latente que hacía fallar permanentemente la verificación de salud de compile (ui_debug.js no tiene la acción |
0.9.4 | Corrección de que switchTab no funcionaba (se usa |
Versión | Descripción |
0.9.3 | status añade el campo |
0.9.2 | Corregido el tiempo de espera de navigate tras compile: la comprobación de salud de la conexión del daemon añade protección de tiempo de espera de 3s; tras compile, invalida automáticamente las conexiones en caché antiguas y se reconecta; el sondeo de navigate currentPage añade un tiempo de espera independiente de 2s por llamada; distingue los códigos de error HEALTH_CHECK_TIMEOUT y CONNECTION_ERROR |
0.9.1 | Corregido el fallo AttributeError cuando cdp_enabled=true; nueva recopilación de errores de tiempo de ejecución de WXML (tras compile, CDP captura automáticamente advertencias como template not found) |
0.9.0 | Arquitectura de daemon Node persistente: un único proceso daemon residente, comunicación mediante protocolo NDJSON, conexiones WS reutilizadas por puerto; un único daemon.bundle.js sustituye a 8 bundles independientes; la latencia de las llamadas a herramientas se reduce de 500ms+ a ~3ms; tras compile, el daemon reconstruye automáticamente la conexión sin desconexiones |
0.8.0 | Reconexión automática del automator tras compile; navigate detecta automáticamente las páginas TabBar y usa switchTab; screenshot añade los parámetros full_page/scroll_top/page_path y el modo de captura de viewport; page_data añade sondeo de expected_path para evitar datos antiguos; el paso dinámico del mosaico de capturas largas corrige huecos de contenido; node_bridge unifica reintentos de desconexión + intervalo de llamada de 500ms; la verificación del puerto de start aumenta a 20 veces |
0.7.0 | Corregido el ámbito de variables de navigate (currentPageTimeout); evaluate admite sentencias de declaración (fallback const/let/var); call_method devuelve la ruta de la página actual; la verificación por sondeo del puerto de automator start sustituye a la espera ciega; SKILL.md añade principios de eficiencia, niveles de recuperación, métodos de navegación entre páginas y 6 entradas de fallos |
0.6.0 | navigate admite parámetros query (fallback de tiempo de espera de reLaunch); filtrado de ruido de inicio de CDP (reducción de ruido de console.assert/__route__/ide:// + protección de errores de WXML); valor de retorno de compile en tres categorías + aviso de automator no válido; reintento de sondeo de navigate currentPage; tiempo de espera configurable |
0.5.1 |
|
0.5.0 | Optimización integral del SOP de Skill: nuevos SOP I/J; comprobación de AppID y validación de path; filtrado de ruido de CDP; corrección de coincidencia difusa en el mosaico de capturas |
0.4.1 | Reescritura del mosaico de capturas de páginas largas: detección de área fija, adaptación de DPR, cálculo dinámico de solapamiento |
0.4.0 | Mejora de registros de CDP, verificación automática de despliegue de funciones en la nube, diagnóstico inteligente de navigate, nuevos SOP G/H |
0.3.0 | Refactorización importante: 44 herramientas agregadas en 8 APIs; registros de CDP v2; nueva base de conocimiento SKILL.md |
0.2.6 | README añade instrucciones de configuración de OpenAI Codex |
0.2.5 | Nuevas instrucciones de configuración del editor Kiro |
0.2.4 | Corrección del mosaico de capturas con desplazamiento: |
0.2.3 | Optimización del paquete de publicación: excluye el código fuente de |
0.2.2 | Los scripts de Node.js pasan al modo solo-bundle |
0.2.1 | Actualización de versión y mejora de documentación |
0.2.0 | navigate pasa a usar recopilación de registros de CDP de alta definición |
0.1.9 | Corregido el texto ilegible por codificación UTF-8 |
0.1.8 | Corregido UnicodeDecodeError con rutas chinas en Windows |
0.1.7 | Nuevos ajustes predefinidos de conjuntos de herramientas core/full; nuevo MCP_DOC.md |
0.1.6 |
|
0.1.5 | Corregido el problema de bloqueo de stdio en Windows |
0.1.4 | Añadidas funciones de registros de CDP, capturas de pantalla, automatización, etc. |
0.1.3 | Versión inicial |
Documentos de referencia
Licencia
MIT
Available Tools
7 toolswechat_automatorB
小程序自动化交互与运行时查询。 支持 action: start(开启自动化), tap(点击), input(输入), element_info(元素信息), set_data(设置数据), call_method(调用方法), call_wx(调用wx API), mock_wx(Mock wx), evaluate(执行JS), page_stack(页面栈), page_data(页面数据), system_info(系统信息), storage(缓存)。 返回 JSON: {success, data, message, error_code?}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries the burden of behavioral disclosure. It does disclose the return format (JSON with success, data, message, error_code?) which adds real value. However, it never warns about the side effects of mutating actions (tap, input, set_data, mock_wx) or states prerequisites such as needing to call start before other actions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose statement, followed by a tight list of action annotations and the return format. Each action is one short line. It is appropriately concise for a multi-action dispatcher, though the long enumeration is inherent to the tool's design.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 13-action, 14-parameter tool, the description lists every action and the output schema, but omits operational sequencing (e.g., start must precede other actions), environment/connection requirements (device or IDE link), and error-handling behavior beyond the error_code field. The output schema presence mitigates the return-value gap, but an agent still lacks enough context to drive the tool through a real workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides detailed descriptions for all 14 parameters (selector requirements, fn_source execution semantics, data_json for set_data, etc.), so the schema carries the heavy lifting and the baseline is 3. The description itself adds minimal parameter meaning beyond listing action names; it does not compensate for anything since the schema is already thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose — WeChat mini-program automation interaction and runtime querying (小程序自动化交互与运行时查询) — and enumerates all 13 supported action modes. The verb+resource combination is clear and comprehensive, but it does not explicitly distinguish itself from the sibling tools (build, file, ide, inspector, navigate, screenshot), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists actions and the per-param required conditions live in the schema (e.g., 'selector: tap/input/element_info 时必填'), but the description itself provides no guidance on when to use this tool versus alternatives, no use-case scenarios, and no exclusions. An agent gets no help deciding between this and wechat_inspector or wechat_navigate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wechat_buildAIdempotent
构建、预览、上传小程序及 npm 管理。 支持 action: compile(编译检查), preview(预览), upload(上传), build_npm(构建NPM), cache_clean(清缓存)。 返回 JSON: {success, data, message, error_code?}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true but no readOnlyHint or destructiveHint. The description states it returns a JSON structure, which adds behavioral context, and mentions that 'upload' requires 'version' (parameter semantics). However, the description does not disclose side effects, such as whether upload publishes to production, whether cache_clean is destructive, or authentication requirements. The idempotentHint is somewhat contradicted by non-idempotent actions like upload, though the description does not explicitly contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose and action list, and ends with the return format. No wasted words; fits within a few lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a rich action enum and many parameters, the description covers the main actions and the return structure, but does not elaborate on prerequisites, side effects, or error handling. With 11 parameters and 5 actions, the description leaves about half the behavioral context to the schema and annotations. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the parameter descriptions in the schema are quite detailed (e.g., role of cdp_port, clean_type, version for upload). The tool description adds the grouping of actions and the JSON return shape, but most parameter explanations come from the schema itself, not the description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action is a build/preview/upload tool for WeChat mini-programs and lists the specific actions it supports. It distinguishes itself from siblings by covering build-related operations, though it doesn't explicitly compare to sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage contexts (build operations, npm management) but does not provide explicit when-to-use or when-not-to-use guidance. It lacks alternatives or exclusions, though the action enum provides some guidance on what each action does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wechat_fileARead-onlyIdempotent
读取小程序项目文件和结构信息。 支持 action: project_info(项目完整信息), list_pages(页面列表), read_page(读取页面源码), read_file(读取单个文件)。 返回 JSON: {success, data, message, error_code?}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the JSON return structure ({success, data, message, error_code?}) and enumerates the supported actions, which gives further behavioral clarity. No contradiction with annotations exists, and the description complements the safety profile without duplicating it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the purpose, lists the actions, and states the return format. Every sentence contributes value, and there is no filler. It is concise and well-structured, though slightly compact for the amount of information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail return fields extensively, and it does provide the top-level JSON shape. However, it does not explain parameter relationships or optionality (e.g., which paths are required for which actions), which an agent would need to call the tool correctly. Given the tool's multi-action nature and optional parameters, this is a noticeable gap, though not critical for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the meaning of the 'action' enum values (project_info, list_pages, read_page, read_file) but does not clarify the roles of 'file_path', 'page_path', or 'project_path', nor the dependencies (e.g., read_page requires page_path). The schema provides descriptions for each field, but the context signal indicates 0% description coverage, meaning the tool description does not substitute for that. The description only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads WeChat mini program project files and structure, and lists four distinct actions (project_info, list_pages, read_page, read_file). This distinguishes it from sibling tools like wechat_navigate or wechat_screenshot, which have different purposes. The verb '读取' and resource '小程序项目文件' make the purpose explicit and unmistakeable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, but the available actions imply its scope (reading project files). It does not mention exclusions or conditions that would steer an agent to a sibling tool. Context is clear but there is no comparative guidance, so it remains adequate rather than optimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wechat_ideBIdempotent
微信开发者工具 IDE 生命周期管理。 支持 action: open(打开IDE/项目), login(扫码登录), is_login(检查登录), close(关闭项目), quit(退出IDE), status(环境诊断)。 返回 JSON: {success, data, message, error_code?}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false, and the description does not contradict them. The description adds a return envelope format ({success, data, message, error_code?}) and action semantics, but it does not disclose side effects such as launching a GUI application, blocking on QR code scanning, or requiring the IDE to be installed/running. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states the overall purpose, the second lists actions and the return format. There is no filler, repetition, or unnecessary detail. The structure is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a multi-action tool with 10 parameters, and the description does not map parameters to specific actions (e.g., open requires project_path, login uses qr_format/result_output). It also omits prerequisites and likely failure modes. The one-line JSON envelope covers the output shape, but for a lifecycle manager of this complexity, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description only adds semantic meaning to the action enum by explaining what each action does. It says nothing about project_path, port, qr_format, qr_output, cdp_port, or result_output, which are all documented in the schema but not compensated for at the description level. Given schema_description_coverage is 0%, the description should carry more weight for parameters but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as WeChat Developer Tools IDE lifecycle management and enumerates six specific actions (open, login, is_login, close, quit, status) with brief semantic labels for each, such as '打开IDE/项目' and '扫码登录'. This makes it easy to distinguish from sibling tools like wechat_build or wechat_inspector, which target different aspects of the WeChat toolchain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus siblings. It does not mention alternatives, exclusions, prerequisites, or conditions such as 'use wechat_build for compilation' or 'use wechat_inspector for debugging'. The action list implies capability but does not help an agent decide between lifecycle management and other tool categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wechat_inspectorARead-onlyIdempotent
采集小程序运行时日志和异常。 支持 action: console(automator端口采集console日志和JS异常), cdp(通过CDP协议采集WXML警告、渲染层报错、废弃API提示等底层日志)。 cdp action 需先以 cdp_enabled=true 打开项目,确保端口 9222 可用。 返回 JSON: {success, data: {logs, summary}, message}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds concrete behavioral context: two acquisition protocols, the cdp pre-condition, and the JSON response envelope {success, data:{logs, summary}, message}. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, no filler; purpose is front-loaded and the action/prerequisite/return-format sections are each one line. Easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Between the description, detailed nested parameter docs, and the available output schema, an agent has what it needs to invoke either action. Minor gap: the cdp port prerequisite is stated as a fixed 9222 rather than tied to the cdp_port parameter, but the default matches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all nested parameters with descriptions, including duration behavior and log_type. The description adds semantic value by explaining what each action value means and reiterating the cdp port requirement, which the bare schema enum does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with '采集小程序运行时日志和异常' – a specific verb and object. The two actions (console vs cdp) map to distinct log sources, which separates it from siblings like wechat_build or wechat_screenshot. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that the cdp action requires opening the project with cdp_enabled=true and a usable port 9222, and separates what each action collects (console/JS exceptions vs WXML/render/deprecated-API logs). It does not name sibling alternatives or exclusions, but the internal action guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wechat_screenshotARead-onlyIdempotent
实时捕获当前小程序模拟器的界面截图。 默认支持截取长图,自动滚动并拼接。 output_path 可选,留空则自动保存到项目目录下 screenshots/ 文件夹。 返回 JSON: {success, data: {path, width, height, segments}, message}。
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description reveals that the tool auto-scrolls and stitches long screenshots by default, that output_path can be omitted to save to screenshots/, and that the response is a JSON object with success, data.path/width/height/segments, and message. These behavioral details help the agent anticipate side effects and response shape. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each adding new information: purpose, long-screenshot default, output_path default, return format. The most important action and defaults are front-loaded. No redundant or marketing language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only screenshot tool with a rich schema and an output schema, the description covers the key defaults and return format. It does not mention prerequisites like the simulator being open or the meaning of 'segments', but these are minor given the existing schema and annotations. The description is sufficient for an agent to invoke the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The context signal reports 0% schema description coverage, so the description must compensate, but it only details output_path's default location and implicitly full_page's default. Parameters like overlap, auto_port, page_path, and scroll_top are not explained in the description, requiring the agent to inspect the nested $defs. The $defs do contain descriptions, which mitigates this, but the description itself adds little parametric meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: '实时捕获当前小程序模拟器的界面截图' (capture the current mini-program simulator interface screenshot in real-time). It further clarifies the long-screenshot default and references the output path and return JSON, leaving no doubt about the tool's function. This clearly distinguishes it from sibling tools like wechat_build or wechat_navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this is for capturing screenshots of the simulator and mentions default long-screenshot behavior. It does not, however, name any sibling tools or state when to prefer this over wechat_inspector or wechat_automator. A brief 'use this when you need a screenshot' would have been stronger, but the context is unambiguous enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.9.18- Changed
wechat_automator3 fields changed- changed
Input schema / $defs / WechatAutomatorInput / properties / args_json / descriptionPrevious value: -"方法参数 JSON 数组,call_method/call_wx 时可选。"New value: +"JSON 数组,call_method/call_wx 的方法参数,或 evaluate(fn_source) 的函数入参;可选。" - changed
Input schema / $defs / WechatAutomatorInput / properties / expression / descriptionPrevious value: -"JS 表达式,evaluate 时必填。"New value: +"单个 JS 表达式,evaluate 时使用;多语句请改用 fn_source。" - added
Input schema / $defs / WechatAutomatorInput / properties / fn_sourceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "evaluate 时可用:完整函数源码字符串,例如 'function(){ return wx.getSystemInfoSync(); }' 或 '(a,b)=>a+b',在小程序 AppService 内以 page.evaluate(fn, ...args) 方式执行,入参来自 args_json。函数体可含任意多条语句,需显式 return。与 expression 二选一,同时给则以 fn_source 为准。", + "title": "Fn Source" +}
7 tool updates
v0.9.16- First observed
wechat_automator - First observed
wechat_build - First observed
wechat_file - First observed
wechat_ide - First observed
wechat_inspector - First observed
wechat_navigate - First observed
wechat_screenshot
TDQS
Scored across 7 tools
每个工具名称都指向不同的功能域(自动化、构建、文件、IDE、日志、导航、截图),整体区分清晰。但wechat_inspector和wechat_navigate都涉及CDP日志采集,存在轻微重叠,不过描述中已明确各自侧重(通用日志 vs 页面跳转日志),因此仍可区分。
所有工具都以'wechat_'前缀命名,模式统一。但后续部分既有名词(automator, file, ide, inspector, screenshot)也有动词(build, navigate),词性不统一,但整体可预测性较好。
7个工具覆盖了小程序开发的主要环节:IDE管理、构建、自动化、日志、导航、截图、文件读取,每个工具都有明确职责,数量适中,没有冗余或不足。
工具集覆盖了从项目打开、登录、编译、上传、自动化交互、日志采集、截图到文件读取的完整开发闭环。但缺少文件写入或修改能力(仅有read),且没有项目配置编辑、真机预览等可选功能,存在小缺口,但核心工作流可完成。
Maintenance
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Build your own tools from chat: design, test and host them on a shareable MCP server URL.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI assistants to interact with WeChat Mini Programs, allowing developers to publish versions, analyze package size, diagnose compilation errors, and manage projects via natural language.78 npm3MIT
- AlicenseAqualityBmaintenanceMCP server for WeChat Mini Program debugging and automation, enabling agents to perform UI operations, screenshots, and regression testing through natural language commands.4487 npm18MIT
- AlicenseNot gradedqualityDmaintenanceConnects WeChat Mini Program tooling to MCP and automation workflows. Provides scripts for opening, previewing, and uploading projects, as well as automator smoke tests.1MIT
- AlicenseBqualityDmaintenanceEnables 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.2022 npm78MIT