Skip to main content
Glama
WaterTian

wechat-devtools-mcp

by WaterTian

WeChat DevTools MCP Server (v0.9.15)

PyPI version MCP Registry License: MIT English

Wraps the WeChat DevTools CLI as an MCP (Model Context Protocol) service, allowing AI in editors to directly invoke WeChat CLI commands, enabling a closed loop for mini program development, testing, debugging, and automation.

[!IMPORTANT] This project adopts a "thin MCP + fat Skill" architecture: the MCP Server provides 7 aggregated APIs, and the accompanying wechat-devtools Skill provides SOP workflows, parameter quick references, and best practices. Both must be used together — without the Skill, the AI will not be able to operate mini programs following the correct workflow.

Published to the official MCP Registry, with one-click installation across platforms (Windows / macOS).


🌐 English Documentation →


🚀 Installation and Quick Start

Step 1 — Install the MCP Server

uv is recommended, as it automatically handles Python dependencies and provides an isolated execution environment.

pip install uv                                  # 安装 uv(如已安装可跳过)
uv tool install wechat-devtools-mcp --force     # 一键安装到全局隔离环境

[!WARNING] If you previously installed an older version via pip install, uninstall it first to avoid version conflicts:

pip uninstall wechat-devtools-mcp

The pip install path (e.g. Python313/Scripts/) may take precedence over the uv tool install path (~/.local/bin/), causing the old version to actually run. You can confirm the current version via the mcp_version field returned by wechat_ide(action='status').

[!WARNING] Version compatibility: ≥0.9.11 supports both mcp 1.x and 2.x (dependency declared as mcp[cli]>=1.9,<3). ≤0.9.10 is incompatible with mcp ≥2.0 (fresh installs will report ModuleNotFoundError: mcp.server.fastmcp, see #9) — pinned users should upgrade to ≥0.9.11, or append --with "mcp<2" when installing.

[!TIP]

  • Check the actually running version (≥0.9.13):

    wechat-devtools-mcp --version    # 零依赖打印实际安装版本;uvx 复用已装环境不自拉最新,此命令可直接确认
    uv tool list | grep wechat       # 离线确认已安装版本
  • Upgrading the tool: if the editor is running the MCP service, terminate the process before upgrading:

    # 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-mcp
  • One-click upgrade via Agent:

    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

Step 2 — Enable the DevTools Service Port

[!WARNING] This must be enabled manually, otherwise the AI will not be able to send any commands.

Path: DevToolsSettingsSecurity SettingsService PortEnable

💡 You can verify whether the port is enabled via wechat_ide(action='status') — if it returns a connection failure, the service port has not been enabled yet.

Step 3 — Confirm Required Paths

Obtain the following two absolute paths in advance; you will need to fill them into the editor configuration later:

Path

Windows example

macOS example

WeChat DevTools CLI

C:\Program Files (x86)\Tencent\微信web开发者工具\cli.bat

/Applications/wechatwebdevtools.app/Contents/MacOS/cli

Mini program project root

D:\MyProjects\mini-app

/Users/<you>/Projects/mini-app

macOS users: no need to escape slashes (/) in JSON config; Windows users must write \ as \\.

Step 4 — Editor Configuration

Modify claude_desktop_config.json or 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"
      }
    }
  }
}

Edit ~/.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"
      ]
    }
  }
}

Edit ~/.codex/config.toml (global) or .codex/config.toml (project-level):

[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"

You can also add it quickly via 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-mcp

Add a new Server in the MCP console:

  • Name: wechat-devtools

  • Type: command

  • Command: uvx wechat-devtools-mcp

  • Environment Variables: add WECHAT_DEVTOOLS_CLI and WECHAT_PROJECT_PATH as above

On Windows, backslashes in paths need to be escaped (\\).

If you use Claude Code to develop inside a mini program repository, you can create a project-level .mcp.json (automatically follows the repository and applies to collaborators).

Windows.mcp.json at the repository root:

{
  "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 at the repository root:

{
  "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"
      }
    }
  }
}

Three key differences on macOS:

  • command must use the absolute path /opt/homebrew/bin/uvx (Claude Code's PATH does not include Homebrew when spawning child processes)

  • env.PATH must be explicitly injected (especially needed when also configuring npx-based MCPs such as cloudbase / chrome-devtools, otherwise npx's #!/usr/bin/env node cannot find Node)

  • NODE_PATH is recommended to be explicitly specified as a fallback when starting as a daemon

When configuring multiple MCPs at once (cloudbase / chrome-devtools, etc.), handle the command absolute path and env.PATH for each server in the same pattern.

Trae v1.3.0+ supports MCP. AI panel → Settings icon in the top right → MCP → Add → Manual configuration, paste the JSON below and save.

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"
      }
    }
  }
}

You can also edit the config file directly:

  • Windows: %APPDATA%\Trae\User\globalStorage\mcp.json

  • macOS: ~/Library/Application Support/Trae/User/globalStorage/mcp.json

[!IMPORTANT] You must select the 「Builder with MCP」 agent in the chat box; regular agents do not call MCP tools. It is also recommended to install the wechat-devtools Skill (Step 5) so the AI calls tools in SOP order.

Step 5 — Install the Skill (Required)

[!IMPORTANT] This MCP must be used together with the wechat-devtools Skill. The Skill contains all the SOP workflows, parameter quick references, and troubleshooting guides the AI needs to operate mini programs. Without the Skill installed, the AI can only call bare APIs and cannot automatically execute standardized testing and debugging workflows.

Option 1: npx skills add (Claude Code users)

npx -y skills add WaterTian/wechat-devtools-mcp/.agents/skills/wechat-devtools

This pulls it into ~/.claude/skills/, and Claude Code loads it automatically.

Option 2: Manually place it in .agents/skills/ (clients that load from .agents/skills/, such as Trae)

Run this in the mini program project root:

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-tmp

The resulting directory structure:

your-project/
└── .agents/skills/
    └── wechat-devtools/
        ├── SKILL.md                # 主指令文件(SOP + 能力映射 + 红线规则)
        └── references/
            └── tool_reference.md   # 7 个聚合 API 完整参数参考

[!TIP] Trae users: make sure the Settings → Skills & Commands → Enable .agents skills directory toggle is on (on by default). After saving, refresh and you will see wechat-devtools under the "Skills → Project" tab.


Related MCP server: harmony-mcp

🛠️ Toolbox Overview

The MCP Server provides 7 aggregated tools covering the full mini program lifecycle:

Tool

Function

Supported actions

wechat_ide

IDE lifecycle management

open login is_login close quit status

wechat_build

Build and publish

compile preview upload build_npm cache_clean

wechat_automator

Automated interaction

start tap input element_info set_data call_method call_wx mock_wx evaluate page_stack page_data system_info storage

wechat_inspector

Runtime log collection

console cdp

wechat_screenshot

UI screenshots (long image stitching)

wechat_navigate

Navigate to pages and collect CDP logs

wechat_file

Project file reading

project_info list_pages read_page read_file

For cloud functions and cloud database management, use CloudBase MCP (manageFunctions / readNoSqlDatabaseContent, etc.), which is more complete and has no IDE dependency. wechat_cloud has been disabled since v0.9.5.

For full tool parameter documentation, see MCP_DOC.md


🧠 Skill Content Details

The Skill lets the AI automatically match and execute standardized operation workflows after receiving natural language instructions:

What you say

What the AI executes

"Check all pages for errors"

SOP D — Full-page inspection

"Click the login button and take a screenshot"

SOP B — UI debugging

"The page is blank, help me troubleshoot"

SOP C — Exception troubleshooting

"Mock the payment API and test the payment flow"

SOP E — Mock integration testing

"Test the detail page, what are the parameter names?"

SOP G — Sub-page testing

"Compare whether points are consistent across pages"

SOP I — Cross-page data validation

The Skill includes

  • 9 SOP workflows — initialization, UI debugging, exception troubleshooting, full-page inspection, Mock integration testing, network debugging and UI adaptation, sub-page testing, cross-page data validation, parallel data comparison

  • Capability mapping dictionary — quick index of 7 aggregated tools × all actions

  • CDP progressive troubleshooting strategy — two stages: concise → full, to control token consumption

  • Complete parameter reference — required/optional parameters, return examples, and common templates for each action

  • Troubleshooting manual — common error codes and how to fix them

See Step 5 — Install the Skill for installation instructions


💡 Environment Variables

Variable

Description

Default

Required

WECHAT_DEVTOOLS_CLI

WeChat DevTools CLI path

Yes

WECHAT_PROJECT_PATH

Default mini program project absolute path

Yes

WECHAT_CLI_TIMEOUT

CLI command timeout (seconds)

30

No

NODE_PATH

Node.js executable path

node

No


❓ FAQ

Most common cause: the WeChat DevTools "Service Port" is not enabled. Go to SettingsSecurityService Port and turn it on. Once enabled, the AI can reconnect without restarting the IDE.

If you opened DevTools manually, it may not be listening on the debug port. Close DevTools and let the AI run wechat_ide(action='open', cdp_enabled=True) to start it in debug mode.

The MCP service in the editor is still running. See the upgrade note under Step 1 — you need to terminate the process before upgrading.

An older version installed via pip install may take precedence. Run pip uninstall wechat-devtools-mcp to remove the old version, then confirm the mcp_version field is the latest via wechat_ide(action='status').

Make sure WECHAT_DEVTOOLS_CLI in the editor configuration's env is set to an absolute path:

  • Windows: use double backslashes (e.g. C:\\...\\cli.bat)

  • macOS: standard path /Applications/wechatwebdevtools.app/Contents/MacOS/cli, no need to escape slashes

When GUI clients (such as Claude Desktop) start MCP, PATH may not include /opt/homebrew/bin. Since MCP v0.9.6, the Homebrew standard path is attempted automatically; if it still fails, set it explicitly in env:

"NODE_PATH": "/opt/homebrew/bin/node"

📋 Version History

Version

Description

0.9.15

Adapt to DevTools 2.x (Electron) + fix long-standing CDP collection failure: DevTools 2.x switched to Electron (1.06.x Stable still uses NW.js, dual-track compatible, no replacement). macOS startup path auto-detects runtime based on presence of Resources/package.nw, reads CFBundleExecutable from Info.plist for the entry point, and kill mode uses the .app bundle path — the old mode couldn't match Electron processes, making wechat_ide(action='open') with default parameters completely unusable on macOS; 2.x no longer recognizes the --project command-line flag, instead it starts the process with CDP first, then opens the project via CLI, and waits for both the CDP and IDE service ports to be ready before continuing (otherwise CLI would spawn another instance without CDP, resulting in a false success where "the project is open but CDP can't connect"). Fix wechat_inspector(action='cdp') always returning 0 results since v0.9.0 — the daemon puts results in data, but the inspector reads the non-existent logs, so the most commonly used debugging tool silently failed for 8 minor versions. daemon stream limit raised from asyncio default 64 KiB to 16 MiB (measured 634 KiB in 6 seconds of collection under 2.x; exceeding the limit silently discards all results). CDP noise filtering adapted to 2.x target structure, removing the new IDE shell pages and devtools:// that slipped through due to type=webview (measured 734 items → 206 items). IDE port detection changed to read the .ide file written by the IDE (hardcoded candidate ports can't be guessed at all under 2.x); status adds service_port_enabled (the #1 cause of CLI_TIMEOUT, now self-diagnosable) and ide_port; wechat_ide / wechat_build add cdp_port parameter (9222 is often occupied by Chrome)

0.9.14

File read path fix + parameter invalidation fix: wechat_file's read_page/read_file changed to use the same resolution as list_pages (first resolve via miniprogramRoot in project.config.json, then fall back to project root) — previously in cloud development projects, feeding pages/xxx/index returned by list_pages to read_page would always report "page file not found", affecting the first step of SOP G; when a file with the same name exists under both roots, also_found_at is added to report it truthfully; project.config.json always takes the authoritative copy at the project root; read_page returns resolved_base, read_file returns resolved_path. wechat_inspector(action='cdp') adds cdp_port passthrough (previously this parameter was a no-op, always connecting to 9222). subprocess.CREATE_NO_WINDOW all switched to getattr fallback, eliminating the AttributeError risk on non-Windows platforms

0.9.13

--version early exit + documentation verification fix: wechat-devtools-mcp --version / -V prints the installed version with zero dependencies and exits directly (uvx reuses the installed environment and doesn't pull the latest; one command confirms the actual version); documentation fixes: navigate parameter table 5-column misalignment, 设置 -> 安全设置 menu name, mcp_version example de-versioned; added documentation for wechat_ide result_output and wechat_navigate timeout (not documented since v0.6.0); SKILL.md Step 1 adds a skill/MCP version consistency self-check line

0.9.12

Handshake response package version + dependency upper bound: Under mcp 2.x, initialize's serverInfo.version changed from empty string to this package's version (under 1.x it still reports the SDK version; the SDK has no parameter to override); dependency upper bound added: mcp[cli]>=1.9,<3 to prevent future major mcp versions from breaking things; dual-version imports unified into _compat.py (#9 #10)

0.9.11

Compatible with mcp 2.0.0: Official MCP Python SDK 2.0 (released 2026-07-28) removed mcp.server.fastmcp (renamed to MCPServer), causing newly installed users to crash on startup; all imports changed to be compatible with both 1.x/2.x; dependency explicitly set to mcp[cli]>=1.9 (#8)

0.9.10

Fix page_path silent failure: screenshot.js verifies page path match after navigation; returns explicit error when /index suffix is missing or page doesn't exist, instead of silently capturing the old page; node_bridge.py fixes daemon handler error message loss (#5)

0.9.9

Fix screenshot causing mini-program restart: screenshot.js changes navigation for non-TabBar pages from reLaunch (destroys entire page stack) to navigateTo (non-destructive push), fixing the simulator reset issue after screenshot on macOS (#4)

0.9.8

Fix automator connection stability: daemon.js currentPage() health check changed to polling retry (5 times × 3s+1.5s for new connections), no longer discarding established WebSocket connections due to slow page loading; _action_start switched to _run_cli to synchronously detect CLI return code, immediately aware of CLI failure (#3)

0.9.7

Fix daemon orphan process residue: daemon.js adds parent process watchdog, checks liveness every 5 seconds with process.kill(ppid, 0), automatically cleans up WS connections and exits after parent process is killed (#2)

0.9.6

macOS adaptation: cdp_enabled=true mode cross-platform startup (NW.js main program wechatdevtools + package.nw entry + pkill cleanup); default CLI path returned per platform; Node.js detection adds Homebrew/nvm candidate paths; README adds macOS path examples

0.9.5

Fix latent bug where compile health check permanently failed (ui_debug.js has no page_stack action; automator_verified has been falsely reporting false since v0.9.0); compile downgrades fatal patterns like EACCES/EADDRINUSE/#initialize-error to fail, preventing "false success publishing old bundle"; preview auto-resolves relative paths + mtime freshness detection; wechat_automator(action='start') upgraded to TCP+WS dual verification + retry_after_ms precise waiting; compile detects outdated miniprogram_npm and issues warning; inspector issues warning when catching exceptions with short duration; wechat_cloud tool disabled (use CloudBase MCP instead)

0.9.4

Fix switchTab navigation not taking effect (switched to miniProgram.switchTab() instead of callWxMethod); post-compile reconnection stability (remove redundant processes + 3s delay + WS health check); README 5 agent-friendliness improvements

Version

Description

0.9.3

status adds mcp_version field for version confirmation; prints version number to stderr on startup; README adds pip/uv version conflict troubleshooting guide

0.9.2

Fix navigate timeout after compile: daemon connection health check adds 3s timeout protection; automatically invalidates old cached connections and reconnects after compile; navigate currentPage polling adds 2s independent timeout per call; distinguishes HEALTH_CHECK_TIMEOUT and CONNECTION_ERROR error codes

0.9.1

Fix AttributeError crash when cdp_enabled=true; add WXML runtime error collection (CDP automatically captures warnings such as template not found after compile)

0.9.0

Persistent Node daemon architecture: single daemon process stays resident, NDJSON protocol communication, WS connections reused by port; single daemon.bundle.js replaces 8 independent bundles; tool call latency reduced from 500ms+ to ~3ms; daemon automatically rebuilds connections after compile with zero disconnects

0.8.0

Automatically reconnect automator after compile; navigate automatically detects TabBar pages and uses switchTab; screenshot adds full_page/scroll_top/page_path parameters and viewport screenshot mode; page_data adds expected_path polling to prevent stale data; long image stitching dynamic step size fixes content gaps; node_bridge unified connection disconnect retry + 500ms call interval; start port verification increased to 20 times

0.7.0

navigate variable scope fix (currentPageTimeout); evaluate supports declaration statements (const/let/var fallback); call_method returns current page path; automator start port polling verification replaces blind waiting; SKILL.md adds efficiency principles, recovery levels, page navigation methods, 6 troubleshooting entries

0.6.0

navigate supports query parameters (reLaunch timeout fallback); CDP startup noise filtering (console.assert/__route__/ide:// noise reduction + WXML error protection); compile return value three-way classification + automator invalidation prompt; navigate currentPage polling retry; configurable timeout

0.5.1

wechat_ide(action='open') adds CDP startup health check: automatically collects 5 seconds of CDP logs to detect fatal errors during startup, returns failure immediately if errors are found to block subsequent operations

0.5.0

Skill SOP comprehensive optimization: adds SOP I/J; adds AppID check and path validation; CDP noise filtering; screenshot stitching fuzzy matching fix

0.4.1

Screenshot long page stitching rewrite: fixed region detection, DPR adaptation, dynamic overlap calculation

0.4.0

CDP log enhancement, cloud function deployment automatic verification, navigate intelligent diagnostics, adds SOP G/H

0.3.0

Major refactor: 44 tools consolidated into 8 APIs; CDP log v2; adds SKILL.md knowledge base

0.2.6

README adds OpenAI Codex configuration instructions

0.2.5

Adds Kiro editor configuration instructions

0.2.4

Screenshot scroll stitching fix: sharpjimp

0.2.3

Package optimization: excludes scripts/ source code, only keeps dist/ build artifacts

0.2.2

Node.js scripts changed to bundle-only mode

0.2.1

Version update and documentation improvements

0.2.0

navigate switched to CDP high-definition log collection

0.1.9

Fix UTF-8 encoding garbled text

0.1.8

Fix Windows Chinese path UnicodeDecodeError

0.1.7

Adds core/full toolset presets; adds MCP_DOC.md

0.1.6

wechat_open(cdp_enabled=true) automatically kills existing processes

0.1.5

Fix Windows stdio blocking issue

0.1.4

Adds CDP logs, screenshots, automation and other features

0.1.3

Initial version


Reference Documentation


License

MIT

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
1wRelease cycle
17Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP server for Hailuo (MiniMax) AI video generation

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WaterTian/wechat-devtools-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server