Nexta Tech Blog
🔍

Chrome DevTools MCP vs Playwright MCP - どちらを選ぶべき?実測で比較

に公開
4
GitHubで編集を提案
Nexta Tech Blog
Nexta Tech Blog

Discussion

ogadraogadra

マサカリ失礼します。Playwright MCPのコントリビューターです。
記事には

アクセシビリティツリーからAIがセレクターを自動生成
操作時にはAIが適切なセレクター(name、role、text)を選択
例: await page.locator('#Name').fill('John Doe')

とありますが、実際にはLLMはセレクタを選択していることはなく、Chrome DevTools MCP同様にsnapshotに含まれた識別子を元に指示しています。
要素の識別方法においてChrome DevTools MCPとPlaywright MCPの違いはありません。

実行されるPlaywrightコードが示されるのは、LLMの指示内容に含まれるものではなく、Playwright MCP側のレスポンスに含まれる内容になります。

たとえば、記事にある「textboxを埋める」処理であればmcp__playwright__browser_fill_form関数が呼ばれます。その引数としては

  • name : ログとしての引数
  • type : 今回の場合はtextbox
  • ref : Chrome DevTools MCPのuidと同等
  • value : 今回の場合は Jone Dae

が渡されます。

https://github.com/microsoft/playwright/blob/daae9b5d7964432bed519ca3b462ca89e1012566/packages/playwright/src/mcp/browser/tools/form.ts#L29-L34

その後ツールが実行され、textboxをPlaywright MCPが埋めた後に、Playwright MCPが説明のため、Playwrightで実際に実行する場合どのようなコードを書けばよいか?ということをレスポンスに含めています。

https://github.com/microsoft/playwright/blob/daae9b5d7964432bed519ca3b462ca89e1012566/packages/playwright/src/mcp/browser/tools/form.ts#L43-L46

ブラウザ操作におけるPlaywright MCPとChrome DevTools MCPの違いは、この「Playwrightではどのようなコードを書けば同等の処理が実行できるか?」という内容がMCPレスポンスに含まれるかどうかの違いと、アクセシビリティツリーにおける情報量の差です。後者は記事内に言及がなかったので省略します。

tetsu.ktetsu.k

ご指摘ありがとうございます!
認識が甘く、大変失礼いたしました。

※記事を冒頭に訂正セクションを追加し、本文も全面的に修正しました。

Playwright MCPコントリビューターの方から直接ご指摘いただけて光栄です。
業務で使うために調べているところでしたので、正確な理解ができて本当に助かりました。

Playwright MCPの仕組みを理解でき、大変勉強になりました。
今後も活用させていただきます。

改めて、貴重なご指摘ありがとうございました!

ogadraogadra

修正ありがとうございます!
自分自身に知見を溜めておきながら発信していなかった自分より、積極的にアウトプットしているほうが素晴らしいと思います。
ぜひ今後も間違いを恐れずに発信いただければと思います!

tetsu.ktetsu.k

何というありがたいお言葉…!😭 勇気が持てました。

引き続き、積極的にアウトプットに励みます!