mcpField
P
playwright-mcp

playwright-mcp

github.com/darraghh1テスト・品質97 回インストール
リポジトリ

playwright-mcp について

Playwright MCP サーバーを使い、ライブの Web ページを移動、確認、操作するスキルです。フォームや複数段階の操作、UI のデバッグ向けの手順を扱います。

主な機能

  1. 01ページ移動とアクセシビリティツリーの確認
  2. 02フォームやページ要素の操作
  3. 03コンソールメッセージとネットワークリクエストの確認
  4. 04JavaScript 式の実行
  5. 05ダイアログ、タブ、待機の処理

活用シーン

  1. 01Web ページの構造やレイアウトの確認
  2. 02フォーム入力と送信結果の検証
  3. 03JavaScript エラーや失敗した API リクエストの調査
  4. 04複数段階の登録やウィザードのテスト

MCP 対応

このスキルは Playwright MCP サーバーを直接ツール呼び出しで利用します。ブラウザーの移動、確認、操作、デバッグ用ツールを説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/darraghh1/my-claude-setup --skill playwright-mcp

インストール後、Claude Code で/playwright-mcpを入力して読み込まれたか確認します。

詳細

Playwright MCP によるブラウザー自動化

Playwright MCP サーバーを使ったリアルタイムのブラウザー操作に精通しています。このスキルでは、直接ブラウザーを操作して、ページの移動、要素の確認、フォームへの入力、Web UI のデバッグを行う方法を説明します。

重要:これは直接のツール呼び出しです

MCP ツールは、Read、Grep、Bash とまったく同じ直接のツール呼び出しです。CLI コマンドではありません。

正しい — ツールを直接呼び出します:

Tool: mcp__playwright__browser_navigate
Parameters: { "url": "http://localhost:3010" }

誤り — シェル経由で呼び出してはいけません:

Bash: claude mcp call playwright browser_navigate ...  # This does not work

Playwright MCP ツールはすべて mcp__playwright__ プレフィックスを使用します。

重要:操作する前に必ずスナップショットを取得します

browser_snapshot は、すべての操作可能な要素の ref 値を含むアクセシビリティツリーを返します。クリック、入力、ホバーの前に、必ずスナップショットを取得してください。すべての操作ツールで ref 値が必要です。

重要:出力サイズに注意します

ツール出力サイズ備考
browser_snapshot中~大ページの複雑さに応じて大きくなる、完全なアクセシビリティツリー
browser_take_screenshot大Base64 画像 — 必要な場合にのみ使用
browser_console_messages可変ノイズの多いアプリでは非常に大きくなる場合があります
browser_network_requests可変API 呼び出しの多いページでは非常に大きくなる場合があります
browser_navigate小ページタイトルのみを返します
browser_click小クリック後のスナップショットを返します
browser_type小入力後のスナップショットを返します

ページ構造を把握するには、browser_take_screenshot より browser_snapshot を優先してください。スクリーンショットは見た目の確認にのみ使用します。

ワークフロー 1:移動と確認

トリガー: ユーザーが「このページを開いて」「ページに何がある?」「UI を調べて」「レイアウトを確認して」と言ったとき

手順
  1. ページに移動します:

    browser_navigate({ url: "http://localhost:3010/home/team-slug/settings" })
    
  2. ページ構造を取得します(操作する前に必ず実行します):

    browser_snapshot → accessibility tree with ref values for all elements
    
  3. スナップショットを分析します: ref 値を使って、操作可能な要素(ボタン、リンク、入力欄)を特定します。ページ構造をユーザーに報告します。

判断:スナップショットとスクリーンショットの使い分け
必要なこと使用するもの
ページ構造の把握、要素の検索browser_snapshot(構造化されており、ref 値を含む)
見た目、レイアウトの不具合、CSS の問題browser_take_screenshot(視覚的な画像)
構造と見た目の両方まずスナップショットを取得し、見た目の確認が必要であれば次にスクリーンショットを取得

ワークフロー 2:フォーム操作

トリガー: ユーザーが「フォームに入力して」「ログインを送信して」「フィールドに入力して」「オプションを選択して」と言ったとき

手順
  1. スナップショットを取得してフォーム欄を探します:

    browser_snapshot → identify input refs and their labels
    
  2. フィールドに入力します(複雑さに応じて選択します):

    • 単一フィールド: browser_type({ ref: "input-ref", text: "value" })
    • 複数フィールド: browser_fill_form({ fields: [{ ref: "ref1", value: "val1" }, { ref: "ref2", value: "val2" }] })
    • ドロップダウン: browser_select_option({ ref: "select-ref", values: ["option-value"] })
  3. フォームを送信します:

    browser_click({ ref: "submit-button-ref" })
    
  4. 結果を確認します:

    browser_snapshot → check for success message, error states, or navigation
    
主なパターン
  • 複数フィールドのフォームでは、複数回 browser_type を呼び出すより browser_fill_form のほうが高速です
  • 送信ボタンをクリックする代わりに、browser_press_key({ key: "Enter" }) を使用できます
  • 送信後、必要であれば待機します:browser_wait_for({ text: "Success" }) を実行してからスナップショットを取得します

ワークフロー 3:デバッグ調査

トリガー: ユーザーが「ページをデバッグして」「エラーを確認して」「どんな API 呼び出しが行われている?」「なぜ動かないの?」と言ったとき

手順
  1. 問題のあるページに移動します:

    browser_navigate({ url: "..." })
    
  2. 以下を並行して実行します(それぞれ独立しています):

    browser_console_messages → JavaScript errors, warnings, logs
    browser_network_requests → API calls, failed requests, status codes
    
  3. ページのスナップショットを取得します:

    browser_snapshot → current UI state, error messages, loading states
    
  4. さらに調査します:

    browser_evaluate({ expression: "document.querySelectorAll('.error').length" }) → run custom JS
    

ワークフロー 4:複数ステップの移動

トリガー: ユーザーが「一連の流れを進めて」「サインアップのプロセスをテストして」「ウィザードを順に進めて」と言ったとき

手順
  1. 開始ページに移動します:

    browser_navigate({ url: "..." })
    
  2. 各ステップで:

    browser_snapshot → find the next action
    browser_click({ ref: "..." }) or browser_type({ ref: "...", text: "..." })
    browser_wait_for({ text: "expected content" }) → if page loads async
    
  3. ダイアログが表示された場合は処理します:

    browser_handle_dialog({ accept: true }) → confirm/alert/prompt
    
  4. 必要であれば戻ります:

    browser_navigate_back
    

ツールリファレンス

ナビゲーション
ツール目的パラメーター
browser_navigateURL に移動url(必須)
browser_navigate_back戻るなし
browser_wait_forテキストまたは時間を指定して待機text または timeout(ms)
browser_tabsタブの一覧表示/切り替えなし、または切り替え先の index
検査
ツール目的パラメーター
browser_snapshot参照情報付きのアクセシビリティツリーなし
browser_take_screenshot画面のスクリーンショットなし
browser_console_messagesJS コンソールの出力なし
browser_network_requestsネットワークアクティビティなし
操作
ツール目的パラメーター
browser_click要素をクリックref(スナップショットから取得)
browser_typeテキストを入力ref、text
browser_fill_form複数のフィールドに入力{ ref, value } の配列 fields
browser_select_optionドロップダウンを選択ref、values 配列
browser_hover要素にカーソルを合わせるref
browser_dragドラッグ&ドロップstartRef、endRef
browser_press_keyキーボード入力key(例:"Enter"、"Tab")
browser_file_uploadファイルをアップロードref、paths 配列
browser_handle_dialogダイアログを確定/閉じるaccept のブール値
高度な機能
ツール目的パラメーター
browser_evaluateJavaScript を実行expression
browser_resizeビューポートのサイズを変更width、height
browser_closeページを閉じるなし
browser_installブラウザーをインストールなし
browser_run_codePlaywright コードを実行code 文字列

トラブルシューティング

「ブラウザーが実行されていません」または接続エラー

Playwright MCP サーバーは独自のブラウザーインスタンスを管理します。ツールが失敗する場合:

  1. browser_install を実行して、ブラウザーのバイナリが利用可能であることを確認します
  2. 簡単な URL に対して browser_navigate を実行します。これによりブラウザーが初期化される場合があります
ナビゲーション後に要素が見つからない

非同期コンテンツを含むページは、まだレンダリングされていない場合があります:

  1. スナップショットを取得する前に、browser_wait_for({ text: "expected content" }) を使用します
  2. 時間を指定して待機する場合は、browser_wait_for({ timeout: 2000 }) を使用します
プロキシ経由または内部ドメイン

MCP ブラウザーは、ネットワークトンネルを必要とするプロキシ経由または内部ドメインにアクセスできません。ローカル Supabase には http://127.0.0.1:54321 を直接使用します。

スナップショットの出力が非常に大きい

複雑なページでは、大きなアクセシビリティツリーが生成されます。出力が大きすぎる場合:

  1. アプリ全体ではなく、特定のサブページに移動します
  2. 代わりに browser_evaluate を使用して、特定の要素を検索します

コメント