Skip to main content
Glama
WeChat Mini Program Dev MCP

WeChat Mini Program Dev MCP

by yfmeii

微信(WeChat)ミニプログラム MCP サーバー

FastMCPベースのサーバーであり、miniprogram-automator を通じて微信開発者ツールを自動化します。このサーバーはMCPツールを提供し、AIアシスタントがミニプログラムのページをナビゲート、検査、操作できるようにします。playwright-mcp に似ていますが、微信エコシステム向けにカスタマイズされています。

前提条件

  • 微信開発者ツールがインストールされており、コマンドラインアクセス(cli / cli.bat)がサポートされていること

  • ローカルに Node.js 18+ および npm がインストールされていること

  • 開発者ツールで開くことができるミニプログラムプロジェクトがあること

Related MCP server: miniprogram-automator-mcp

クイックスタート(npm パッケージ)

@yfme/weapp-dev-mcp はnpmに公開されています。一般的なユーザーはリポジトリをクローンしたり、手動で node dist/index.js を実行したりする必要はありません。

npx で実行

npx -y @yfme/weapp-dev-mcp

プロジェクト/グローバルへのインストール

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

またはプロジェクトの依存関係として追加:

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

本リポジトリ内で開発する場合にのみ、直接 node dist/index.js を実行することをお勧めします。一般ユーザーは上記のnpmパッケージ方式で起動してください。

MCP クライアント統合

設定

Claude Desktopやその他のMCPクライアントでこのサーバーを使用するには、設定ファイルに以下を追加してください:

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

Claude Code のツール権限の自動承認

Claude Codeを使用してMCPツールを呼び出す際、ツール呼び出しの権限申請がトリガーされます。このとき、MCPと微信開発者ツール間の接続状態が失われる可能性があり、コンソール出力の取得は接続状態に大きく依存するため、ログを連続的に取得できなくなることがあります。そのため、手動で権限を追加することをお勧めします。

プロジェクトディレクトリに .claude/settings.local.json ファイルを作成するか、既存のファイルに以下の内容を追加することで、確認なしで直接ツールを呼び出せるようになります。または、必要に応じて確認なしで呼び出しを許可するツールを追加してください:

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

注意: ツール名の形式は mcp__<サーバー名>__<ツール名> です。サーバー名がMCP設定内の名前と一致していることを確認してください。

微信開発者ツールの起動

MCPサーバーを使用する前に、微信開発者ツールを起動し、WebSocketサービスを有効にする必要があります。

💡 開始する前に:

  1. 微信開発者ツールを開く

  2. 設定 → セキュリティ設定 → サービスポート に移動

  3. 「HTTPデバッグ」 と 「自動テスト」 を有効にする

コマンドラインを使用して起動

コマンドラインを使用して微信開発者ツールを起動し、自動的に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

ここで:

  • --project パラメータはミニプログラムプロジェクトのディレクトリパスを指定します(実際のプロジェクトパスに置き換えてください)

  • --auto-port パラメータはWebSocketサービスのポートを指定します(デフォルトは9420)

⚠️ 警告 サンドボックスメカニズムのため、一部のクライアントではMCPがプロジェクトディレクトリ外の微信開発者ツールのcliにアクセスすることを許可していません。そのため、ここではWebSocketサービスを使用する方法のみを紹介しています。

環境変数の設定

環境変数を通じて、自動化ツールがどのように微信開発者ツールに接続するかを制御します:

変数

説明

WEAPP_WS_ENDPOINT

【推奨】 実行中の開発者ツールのWebSocketエンドポイント。設定すると、サーバーは新しいインスタンスを起動する代わりに connect モードを使用します。例:ws://localhost:9420

WECHAT_DEVTOOLS_CLI_PATH

微信開発者ツールのCLIパス(デフォルトパスが有効な場合はオプション)。

WEAPP_AUTOMATOR_MODE

launch または connect モードを強制します。WEAPP_WS_ENDPOINT が提供されない限り、デフォルトは launch です。

WEAPP_DEVTOOLS_PORT

開発者ツール起動時の優先ポート(利用可能なポートにフォールバック)。

WEAPP_DEVTOOLS_TIMEOUT

起動タイムアウト時間(ミリ秒、デフォルト30000)。

WEAPP_AUTO_ACCOUNT

自動ログインのために --auto-account に渡されます。

WEAPP_DEVTOOLS_TICKET

起動時に --ticket に渡されます。

WEAPP_TRUST_PROJECT

起動時に --trust-project を含めるには true に設定します。

WEAPP_DEVTOOLS_ARGS

起動時の追加CLI引数(スペース区切り)。

WEAPP_DEVTOOLS_CWD

開発者ツールプロセスに渡される作業ディレクトリ。

WEAPP_AUTOCLOSE

true に設定すると、ツール呼び出しごとに開発者ツールのセッションを閉じます。

WEAPP_AUTOLAUNCH

true に設定すると、開発者ツールを自動検出して起動します

WEAPP_LAUNCH_TIMEOUT

起動タイムアウト時間(ミリ秒、デフォルト45000)

WEAPP_CONNECT_TIMEOUT

接続タイムアウト時間(ミリ秒、デフォルト45000)

WEAPP_PROJECT_PATH

ミニプログラムプロジェクトのパス(オプション)

注意: 開発者ツールを起動する(launch モード)際、MCPツールのパラメータを通じてミニプログラムプロジェクトのディレクトリを提供する必要があります:操作を実行する前に connection.projectPath を通じて提供します(例:mp_ensureConnection を使用)。この値は一度確立されると、後続の呼び出しで保持されます。

ツール呼び出しは、connection オブジェクトを通じてこれらのデフォルト値の大部分を上書きできます。

利用可能なツール

アプリケーションツール(Application Tools)

  • mp_ensureConnection – 自動化セッションの準備ができていることを確認します。強制再接続や接続設定の上書きが可能です

  • mp_navigate – ミニプログラム内をナビゲートします。navigateTo、redirectTo、reLaunch、switchTab、または navigateBack をサポート

  • mp_screenshot – スクリーンショットをキャプチャして返します(またはディスクに保存)

  • mp_callWx – 微信ミニプログラムAPIメソッドを呼び出します(例:wx.showToast)

  • mp_getLogs – ミニプログラムのコンソールログを取得します。取得後にクリアするオプションがあります

  • mp_currentPage – 現在のページ情報(パス、クエリパラメータ、サイズ、スクロール位置)を取得します。withData がtrueの場合、ページデータも追加で返されます

  • mp_listProjects – 微信開発者ツール内の最近のプロジェクトをリストアップし、プロジェクトディレクトリの選択を容易にします

  • mp_setDefaultProject – デフォルトのミニプログラムプロジェクトパスを設定します。設定後、次回の接続時に自動的にそのプロジェクトが使用されます

ページツール(Page Tools)

  • page_getElement – セレクターを通じてページ要素を取得し、要素の概要情報(tagName、text、value、size、offset)を返します。withWxml: true を設定すると、完全なouterWxmlが追加で返されます。[index=N] 構文によるN番目の要素の選択をサポート

  • page_getElements – セレクターを通じてページ要素の配列を取得し、各要素の概要情報を返します。withWxml: true を設定すると、各要素の完全なouterWxmlが追加で返されます。[index=N] 構文をサポート

  • page_waitElement – 要素がページ上に表示されるのを待ちます(⚠️ カスタムコンポーネント内部の要素には適用されません)。[index=N] 構文をサポート。タイムアウトおよびリトライ間隔パラメータを追加

  • page_waitTimeout – 指定されたミリ秒数だけ待機します

  • page_getData – 現在のページのデータオブジェクトを取得します。パスを指定可能です('user.name' のようなネストされたパスをサポート)

  • page_setData – setData を使用して現在のページのデータを更新します。データが実際に正常に更新されたかを確認する verify オプションを追加

  • page_callMethod – 現在のページインスタンスで公開されているメソッドを呼び出します

要素ツール(Element Tools)

  • element_tap – CSSセレクターを通じてWXML要素のクリックをシミュレートします。[index=N] 構文によるN番目の要素の選択をサポート。x/y座標オフセットクリックをサポート。安定性の強化:要素がインタラクティブな状態になるのを待ち、クリック後にページパスが変更されたかを自動検証

  • element_input – 要素にテキストを入力します(input および textarea コンポーネントに適用)

  • element_callMethod – カスタムコンポーネントインスタンスのメソッドを呼び出します

  • element_getData – カスタムコンポーネントインスタンスのレンダリングデータを取得します

  • element_setData – カスタムコンポーネントインスタンスのレンダリングデータを設定します

  • element_getInnerElement – 要素内の要素を取得します(element.$(selector) に相当)。要素の概要情報を返します。withWxml: true を設定すると、完全なouterWxmlが追加で返されます

  • element_getInnerElements – 要素内の要素の配列を取得します(element.$$(selector) に相当)。要素の概要情報を返します。withWxml: true を設定すると、各要素の完全なouterWxmlが追加で返されます

  • element_getWxml – 要素のWXML(内部または外部)を取得します

  • element_getStyles – 要素のCSSスタイル値を取得します。namesパラメータはスタイル名の配列です(例:['color', 'fontSize'])

  • element_scrollTo – scroll-viewコンポーネントを指定位置(x, y)にスクロールします

  • element_getAttributes – 要素の属性値を取得します。namesパラメータは属性名の配列です(例:['class', 'id', 'data-index'])

  • element_getBoundingClientRect – ビューポートに対する要素の境界矩形情報(left、top、width、height、right、bottom)を取得します。CSS transform変換を考慮します(現在はIDセレクター、クラスセレクターのみサポート)

各ツールは、環境のデフォルト値(プロジェクトパス、CLIパス、WebSocketエンドポイントなど)を上書きするためのオプションの connection ブロックを受け入れます。

使用のヒント

一般的なヒント

  • 接続前に、微信開発者ツールで自動化を有効にしてください(設定 → セキュリティ設定 → サービスポート)

  • 最初に mp_ensureConnection を呼び出して接続を検証し、システム/ページの詳細を確認することをお勧めします

  • WEAPP_AUTOCLOSE=true は、ステートレスな使い捨てのインタラクションに適しています

  • ナビゲーション時は常に絶対パスを使用してください(/ で開始):/pages/mine/mine

  • tabBarページには switchTab を、通常のページには navigateTo を使用してください

カスタムコンポーネントの操作

カスタムコンポーネントを操作する場合、2つの方法があります:

方法1:innerSelector パラメータを使用する(推奨)

element_tap、element_input、element_getWxml などのツールに適用されます:

{
  "selector": "#my-component",
  "innerSelector": ".inner-button"
}
  • selector:カスタムコンポーネントのセレクター

  • innerSelector:コンポーネント内部の要素のセレクター

方法2:要素内クエリツールを使用する

element_getInnerElement および element_getInnerElements に適用されます:

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

制限事項

  • page_waitElement はカスタムコンポーネント内部の要素には適用されません。page_waitTimeout と要素クエリツールを組み合わせてポーリングチェックを行ってください。

自動起動機能(AutoLaunch)

WEAPP_AUTOLAUNCH=true を設定すると、MCPサーバーは微信開発者ツールを自動的に検出して起動できます:

  1. ポートの自動検出:9420ポートでサービスが実行されているか検出します

  2. サービスがない場合は起動:ポートが使用されていない場合、自動的にCLIを呼び出して開発者ツールを起動します

  3. プロジェクトの選択:

    • デフォルトのプロジェクト設定がある場合は自動的に使用します

    • デフォルトのプロジェクトがない場合は、最近のプロジェクトをリストアップして選択を促します

    • プロジェクト番号(例:1)または完全なパスの入力をサポートします

設定例

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

ワークフロー

  1. 初回接続時、WEAPP_AUTOLAUNCH=true を検出

  2. 9420ポートにサービスがあるか確認

  3. サービスがない場合、自動的に開発者ツールを起動(cli.bat auto --project <path> --auto-port 9420 を使用)

  4. 開発者ツールの準備ができるまで45秒待機

  5. WebSocket接続を確立

  6. 後続の接続は既存の接続を自動的に再利用

ヒント:mp_setDefaultProject を使用してデフォルトプロジェクトを設定すると、次回の接続時に再度プロジェクトを選択する必要はありません。

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
    ResponsivenessOutdated data

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