Better Playwright MCP
B

Better Playwright MCP

最適化されたPlaywright MCPサーバーで、クライアント - サーバーアーキテクチャを採用してブラウザ自動化を実現し、革新的なセマンティックスナップショットアルゴリズムによりページコンテンツの転送量を大幅に削減し、重要な要素を保持しながらトークン消費を90%削減します。
2.5ポイント
0

インストール

以下のコマンドをクライアントにコピーして設定
注意:あなたのキーは機密情報です。誰とも共有しないでください。

🚀 better-playwright-mcp

このプロジェクトは、クライアント・サーバーアーキテクチャを用いた、より優れたPlaywright MCP(Model Context Protocol)サーバーです。ブラウザ自動化に最適化されています。

🚀 クイックスタート

このセクションでは、better-playwright-mcp の概要、インストール方法、基本的な使用法について説明します。

✨ 主な機能

  • 🎯 セマンティックHTMLスナップショットにより、トークン使用量を最大90%削減
  • 🎭 MCPを介した完全なPlaywrightブラウザ自動化
  • 🏗️ 関心事の分離を実現するクライアント・サーバーアーキテクチャ
  • 🛡️ 検出を回避するステルスモード
  • 📍 正確なターゲティングのためのハッシュベースの要素識別子
  • 💾 永続的なブラウザプロファイル
  • 🚀 長時間実行の自動化タスクに最適化
  • 📊 自動トランケーションによるトークン対応出力

📦 インストール

npm install -g better-playwright-mcp

💻 使用例

基本的な使用法

MCPモード

MCPサーバーはHTTPサーバーが実行されている必要があります。両方を起動する必要があります。

ステップ1: HTTPサーバーの起動

npx better-playwright-mcp server

ステップ2: 別のターミナルでMCPサーバーを起動

npx better-playwright-mcp

MCPサーバーは以下の処理を行います。

  1. MCPプロトコルメッセージを標準入力で待機します。
  2. ポート3102でHTTPサーバーに接続します。
  3. HTTPサーバーを介してブラウザ自動化コマンドをルーティングします。

オプション:

  • --snapshot-dir <path> - スナップショットを保存するディレクトリ

スタンドアロンHTTPサーバーモード

HTTPサーバーを独立して実行することもできます(デバッグやカスタム統合に便利です)。

npx better-playwright-mcp server

オプション:

  • -p, --port <number> - サーバーのポート(デフォルト: 3102)
  • --host <string> - サーバーのホスト(デフォルト: localhost)
  • --headless - ヘッドレスモードでブラウザを実行
  • --chromium - Chromeの代わりにChromiumを使用
  • --no-user-profile - 永続的なユーザープロファイルを使用しない
  • --user-data-dir <path> - ユーザーデータディレクトリ
  • --snapshot-dir <path> - スナップショットを保存するディレクトリ

高度な使用法

MCPツールの使用

AIアシスタントと一緒に使用する場合、以下のツールが利用可能です。

ページ管理
  • createPage - 名前と説明を指定して新しいブラウザページを作成
  • activatePage - IDで特定のページをアクティブ化
  • closePage - 特定のページを閉じる
  • listPages - タイトルとURLを含むすべての管理対象ページをリスト表示
  • closeAllPages - すべての管理対象ページを閉じる
  • listPagesWithoutId - 管理されていないブラウザページをリスト表示
  • closePagesWithoutId - すべての管理されていないページを閉じる
  • closePageByIndex - インデックスでページを閉じる
ブラウザアクション
  • browserClick - xp識別子を使用して要素をクリック
  • browserType - 要素にテキストを入力
  • browserHover - 要素上にホバー
  • browserSelectOption - ドロップダウンでオプションを選択
  • browserPressKey - キーボードのキーを押す
  • browserFileUpload - ファイル入力にファイルをアップロード
  • browserHandleDialog - ブラウザダイアログ(アラート、確認、プロンプト)を処理
  • browserNavigate - URLに移動
  • browserNavigateBack - 前のページに戻る
  • browserNavigateForward - 次のページに進む
  • scrollToBottom - ページ/要素の一番下までスクロール
  • scrollToTop - ページ/要素の一番上までスクロール
  • waitForTimeout - 指定されたミリ秒間待機
  • waitForSelector - 要素が表示されるまで待機
スナップショットとユーティリティ
  • getPageSnapshot - xp識別子付きのセマンティックHTMLスナップショットを取得
  • getScreenshot - スクリーンショットを撮る(PNG/JPEG)
  • getPDFSnapshot - ページのPDFを生成
  • getElementHTML - 特定の要素のHTMLを取得
  • downloadImage - URLから画像をダウンロード
  • captureSnapshot - 自動スクロールで全ページをキャプチャ

📚 ドキュメント

なぜこれが良いのか?

従来のブラウザ自動化ツールは、ページ全体のHTMLをAIアシスタントに送信するため、すぐにトークン制限に達し、複雑なWebインタラクションが実用的ではなくなります。better-playwright-mcp は、革新的なセマンティックスナップショットアルゴリズムを使用して、すべての意味のある要素を保持しながら、ページコンテンツを最大90%削減することでこの問題を解決します。

問題点

  • 全ページのHTMLはしばしば100K以上のトークンを超えます。
  • ほとんどのHTMLはノイズです:インラインスタイル、トラッキングスクリプト、不可視要素
  • AIアシスタントのコンテキストウィンドウは限られています(200Kの制限がある場合でも)
  • 数回のページロード後には、複雑なWeb自動化が不可能になります。

解決策:セマンティックスナップショット

このプロジェクトの核心的な革新は、多段階のプルーニングアルゴリズムです。

  1. 意味のある要素を識別 - インタラクティブ要素(ボタン、入力)、セマンティックHTML5タグ、およびテキストを含む要素
  2. 一意の識別子を生成 - 各要素には、XPathから派生したハッシュベースの xp 属性が付与され、正確なターゲティングが可能になります。
  3. 不可視コンテンツを削除 - display:none、サイズがゼロ、または非表示の親を持つ要素はマークされて削除されます。
  4. 無駄なラッパーを解除 - 他の要素をラップするだけのdivやspanを削除します。
  5. 不要な属性を削除 - hrefvalueplaceholder などの必須属性のみを保持します。

結果として、通常は元のトークンのわずか10% を使用するクリーンなセマンティック表現が得られ、完全な機能が維持されます。

アーキテクチャ

このプロジェクトは、独自の2層アーキテクチャを実装しています。

  1. MCPサーバー - モデルコンテキストプロトコルを介してAIアシスタントと通信
  2. HTTPサーバー - 実際のブラウザインスタンスを制御するためにバックグラウンドで実行
AI Assistant <--[MCP Protocol]--> MCP Server <--[HTTP]--> HTTP Server <---> Browser

この設計により、MCPサーバーを軽量に保ちながら、ブラウザ制御を専用のHTTPサービスに委任することができます。

仕組み

セマンティックスナップショットの実際の動作

変換前(元のHTML):

<div class="wrapper" style="padding: 20px; margin: 10px;">
  <div class="container">
    <div class="inner">
      <button class="btn btn-primary" onclick="handleClick()" 
              style="background: blue; color: white;">
        Click me
      </button>
    </div>
  </div>
</div>

変換後(セマンティックスナップショット):

button xp=3fa2b8c1 Click me

アルゴリズムは以下の処理を行います。

  • 不要なラッパーdivを削除
  • インラインスタイルとイベントハンドラーを削除
  • 一意の識別子(xp 属性)を追加 - 要素のXPathのハッシュ
  • 意味のあるコンテンツのみを保持

差分ベースの最適化

データ転送とトークン使用量を削減するために、以下の最適化が行われます。

  • 最初のスナップショットは常に完全なものです。
  • それ以降のスナップショットは変更点(差分)のみを含みます。
  • パフォーマンスのために自動キャッシュが行われます。

ステルス機能

ブラウザインスタンスは以下のように構成されています。

  • カスタムユーザーエージェント文字列
  • 自動化インジケーターの無効化
  • WebGLベンダーのスプーフィング
  • キャンバスフィンガープリント保護

🔧 技術詳細

開発環境

前提条件

  • Node.js >= 18.0.0
  • TypeScript
  • ChromeまたはChromiumブラウザ

ソースからビルド

# リポジトリをクローン
git clone https://github.com/yourusername/better-playwright-mcp.git
cd better-playwright-mcp

# 依存関係をインストール
npm install

# プロジェクトをビルド
npm run build

# 開発モードで実行
npm run dev

プロジェクト構造

better-playwright-mcp/
├── src/
│   ├── index.ts                 # MCPモードのエントリポイント
│   ├── server.ts                # HTTPサーバーモードのエントリポイント
│   ├── playwright-mcp.ts        # MCPサーバーの実装
│   ├── client/
│   │   └── playwright-client.ts # MCP→HTTP通信のためのHTTPクライアント
│   ├── server/
│   │   └── playwright-server.ts # ブラウザを制御するHTTPサーバー
│   ├── extractor/
│   │   ├── parse2.ts           # xp識別子を生成するHTMLパース
│   │   ├── simplify-html.ts    # HTMLの簡略化
│   │   └── utils.ts            # 抽出ユーティリティ
│   └── utils/
│       └── token-limiter.ts    # トークンのカウントと制限
├── bin/
│   └── cli.js                  # CLIのエントリポイント
├── package.json
├── tsconfig.json
├── CLAUDE.md                   # AIアシスタントのための指示書
└── README.md

📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

代替品

M
MCP
Microsoft公式のMCPサーバーで、AIアシスタントに最新のMicrosoft技術ドキュメントの検索と取得機能を提供します。
9.1K
5ポイント
A
Aderyn
アデリンは、Rustで書かれたオープンソースのSolidityスマートコントラクト静的分析ツールで、開発者やセキュリティ研究者がSolidityコードの脆弱性を発見するのを支援します。FoundryとHardhatプロジェクトをサポートし、複数の形式のレポートを生成でき、VSCode拡張機能も提供します。
Rust
4.9K
5ポイント
D
Devtools Debugger MCP
Node.jsデバッガーMCPサーバーは、Chrome DevToolsプロトコルに基づく完全なデバッグ機能を提供します。ブレークポイントの設定、ステップ実行、変数のチェック、式の評価などが含まれます。
TypeScript
5.4K
4ポイント
S
Scrapling
Scraplingは適応型ウェブページのスクレイピングライブラリで、ウェブサイトの変化を自動的に学習し、要素を再配置します。複数のスクレイピング方法とAI統合をサポートし、高性能な解析と開発者に優しい体験を提供します。
Python
7.9K
5ポイント
M
Mcpjungle
MCPJungleは自ホスト型のMCPゲートウェイで、複数のMCPサーバーを集中的に管理および代理し、AIエージェントに統一されたツールアクセスインターフェースを提供します。
Go
0
4.5ポイント
C
Cipher
Cipherは、プログラミングAIエージェント向けに設計されたオープンソースのメモリ層フレームワークです。MCPプロトコルを通じてさまざまなIDEとAIコーディングアシスタントと統合し、自動記憶生成、チーム記憶共有、デュアルシステム記憶管理などの核心機能を提供します。
TypeScript
0
5ポイント
N
Nexus
NexusはAIツール集約ゲートウェイで、複数のMCPサーバーとLLMプロバイダーの接続をサポートし、統一されたエンドポイントを通じてツール検索、実行、およびモデルルーティング機能を提供し、セキュリティ認証とレート制限をサポートします。
Rust
0
4ポイント
S
Shadcn Ui MCP Server
AIワークフローにshadcn/uiコンポーネントの統合を提供するMCPサーバーで、React、Svelte、Vueフレームワークをサポートし、コンポーネントのソースコード、使用例、メタデータへのアクセス機能を備えています。
TypeScript
10.1K
5ポイント
G
Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
12.4K
4.5ポイント
E
Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
15.2K
4.8ポイント
C
Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
43.2K
4.7ポイント
B
Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
24.6K
4.5ポイント
G
Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
13.1K
4.3ポイント
U
Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
16.0K
5ポイント
M
Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
14.6K
5ポイント
S
Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
20.4K
4.5ポイント
AIBase
智啓未来、あなたの人工知能ソリューションシンクタンク
© 2025AIBase