劇作家MCP
Playwrightを用いたブラウザ自動化機能を提供するモデルコンテキストプロトコル(MCP)サーバー。このサーバーにより、LLMは構造化されたアクセシビリティスナップショットを通じてWebページと対話できるようになり、スクリーンショットや視覚的に調整されたモデルを必要としません。
主な特徴
高速かつ軽量。ピクセルベースの入力ではなく、Playwright のアクセシビリティ ツリーを使用します。
LLM 対応。ビジョンモデルは必要なく、純粋に構造化データ上で動作します。
決定論的なツールアプリケーション。スクリーンショットベースのアプローチでよくある曖昧さを回避します。
要件
Node.js 18以降
VS Code、Cursor、Windsurf、Claude Desktop、その他のMCPクライアント
はじめる
まず、クライアントにPlaywright MCPサーバーをインストールします。典型的な構成は以下のとおりです。
VS Code CLI を使用して Playwright MCP サーバーをインストールすることもできます。
インストール後、Playwright MCP サーバーは VS Code 内の GitHub Copilot エージェントで使用できるようになります。
Cursor Settings
-> MCP
-> Add new MCP Server
に進みます。お好みの名前を入力し、 command
タイプを使用してnpx @playwright/mcp
コマンドを実行します。 Edit
をクリックして設定を確認したり、コマンドのような引数を追加したりすることもできます。
Windsuff MCPドキュメントに従ってください。以下の設定を使用してください。
MCP インストールガイドに従って、次の構成を使用します。
構成
Playwright MCPサーバーは以下の引数をサポートしています。これらは上記のJSON設定の"args"
リストの一部として指定できます。
ユーザープロフィール
Playwright MCP は、通常のブラウザ (デフォルト) のように永続プロファイルを使用して実行することも、テスト セッション用の分離されたコンテキストで実行することもできます。
永続的なプロファイル
ログイン情報はすべて永続プロファイルに保存されます。オフライン状態をクリアしたい場合は、セッション間でこのプロファイルを削除できます。永続プロファイルは以下の場所に保存されており、 --user-data-dir
引数で上書きできます。
孤立した
分離モードでは、各セッションは分離プロファイルで開始されます。MCPにブラウザを閉じるよう指示するたびにセッションが閉じられ、そのセッションのすべてのストレージ状態が失われます。設定のcontextOptions
または--storage-state
引数を使用して、ブラウザに初期のストレージ状態を提供できます。ストレージ状態の詳細については、こちらをご覧ください。
設定ファイル
Playwright MCPサーバーはJSON設定ファイルを使用して設定できます。設定ファイルは、 --config
コマンドラインオプションを使用して指定できます。
スタンドアロンMCPサーバー
ディスプレイのないシステム上または IDE のワーカー プロセスからヘッダー付きブラウザーを実行する場合は、DISPLAY を指定した環境から MCP サーバーを実行し、 --port
フラグを渡して SSE トランスポートを有効にします。
次に、MCP クライアント構成で、SSE エンドポイントへのurl
を設定します。
**注意:**現時点では、Docker 実装ではヘッドレス Chromium のみがサポートされています。
Docker イメージを自分でビルドできます。
ツール
ツールは次の 2 つのモードで使用できます。
スナップショットモード(デフォルト):アクセシビリティスナップショットを使用してパフォーマンスと信頼性を向上します
ビジョンモード: スクリーンショットを使用して視覚的なインタラクションを行います
ビジョン モードを使用するには、サーバーの起動時に--vision
フラグを追加します。
ビジョン モードは、提供されたスクリーンショットに基づいて、XY 座標空間を使用して要素と対話できるコンピューター使用モデルで最も効果的に機能します。
ブラウザのスナップショット
タイトル: ページスナップショット
説明: 現在のページのアクセシビリティスナップショットをキャプチャします。これはスクリーンショットよりも優れています。
パラメータ: なし
読み取り専用: true
ブラウザクリック
タイトル: クリック
説明: Webページでクリックを実行する
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明ref
(文字列): ページスナップショットからの正確なターゲット要素参照
読み取り専用: false
ブラウザドラッグ
タイトル: マウスをドラッグ
説明: 2つの要素間でドラッグアンドドロップを実行します
パラメータ:
startElement
(文字列): 要素と対話するための許可を取得するために使用される、人間が読めるソース要素の説明startRef
(文字列): ページスナップショットからの正確なソース要素参照endElement
(文字列): 要素と対話するための許可を取得するために使用される、人間が読めるターゲット要素の説明endRef
(文字列): ページスナップショットからの正確なターゲット要素参照
読み取り専用: false
ブラウザホバー
タイトル: ホバーマウス
説明: ページ上の要素にマウスを移動します
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明ref
(文字列): ページスナップショットからの正確なターゲット要素参照
読み取り専用: true
ブラウザの種類
タイトル: テキストを入力
説明: 編集可能な要素にテキストを入力します
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明ref
(文字列): ページスナップショットからの正確なターゲット要素参照text
(文字列): 要素に入力するテキストsubmit
(ブール値、オプション):入力したテキストを送信するかどうか(送信後にEnterキーを押す)slowly
(boolean, オプション): 一度に1文字ずつ入力するかどうか。ページ内のキーハンドラをトリガーするのに便利です。デフォルトでは、テキスト全体が一度に入力されます。
読み取り専用: false
ブラウザ選択オプション
タイトル: オプションを選択
説明: ドロップダウンからオプションを選択します
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明ref
(文字列): ページスナップショットからの正確なターゲット要素参照values
(配列): ドロップダウンで選択する値の配列。単一の値または複数の値を指定できます。
読み取り専用: false
ブラウザのキーを押す
タイトル: キーを押す
説明: キーボードのキーを押します
パラメータ:
key
(文字列): 押すキーの名前、または生成するa
(例:ArrowLeft
、
読み取り専用: false
ブラウザの待機時間
タイトル: 待つ
説明: テキストが表示されたり消えたりするか、指定された時間が経過するのを待ちます
パラメータ:
time
(数値、オプション):待機時間(秒)text
(文字列、オプション):待機するテキストtextGone
(文字列、オプション): 消えるのを待つテキスト
読み取り専用: true
ブラウザファイルアップロード
タイトル: ファイルをアップロード
説明: 1つまたは複数のファイルをアップロードします
パラメータ:
paths
(配列): アップロードするファイルへの絶対パス。1つのファイルでも複数のファイルでも構いません。
読み取り専用: false
ブラウザハンドルダイアログ
タイトル: ダイアログを処理する
説明: ダイアログを処理する
パラメータ:
accept
(boolean): ダイアログを受け入れるかどうか。promptText
(文字列、オプション): プロンプトダイアログの場合のプロンプトのテキスト。
読み取り専用: false
ブラウザナビゲート
タイトル: URL に移動する
説明: URL に移動する
パラメータ:
url
(文字列): 移動するURL
読み取り専用: false
ブラウザの戻る
タイトル: 戻る
説明: 前のページに戻る
パラメータ: なし
読み取り専用: true
ブラウザで進む
タイトル: 前進
説明: 次のページへ進む
パラメータ: なし
読み取り専用: true
ブラウザのスクリーンショット
タイトル: スクリーンショットを撮る
説明: 現在のページのスクリーンショットを撮ります。スクリーンショットに基づいてアクションを実行することはできません。アクションには browser_snapshot を使用してください。
パラメータ:
raw
(ブール値、オプション): 圧縮せずにPNG形式で返すかどうか。デフォルトはfalseで、JPEG画像を返します。filename
(文字列, オプション): スクリーンショットを保存するファイル名。指定されていない場合は、デフォルトでpage-{timestamp}.{png|jpeg}
になります。element
(文字列, オプション): 要素のスクリーンショットの許可を得るために使用される、人間が読める形式の要素説明。指定されていない場合は、ビューポートのスクリーンショットが撮影されます。element を指定する場合は、ref も指定する必要があります。ref
(文字列, オプション): ページスナップショットから取得する正確なターゲット要素の参照。指定されていない場合は、ビューポートのスクリーンショットが取得されます。ref を指定する場合は、要素も指定する必要があります。
読み取り専用: true
ブラウザPDF保存
タイトル: PDFとして保存
説明: ページをPDFとして保存
パラメータ:
filename
(文字列、オプション): PDFを保存するファイル名。指定されていない場合は、デフォルトでpage-{timestamp}.pdf
になります。
読み取り専用: true
ブラウザネットワークリクエスト
タイトル: ネットワークリクエストの一覧
説明: ページの読み込み以降のすべてのネットワーク リクエストを返します
パラメータ: なし
読み取り専用: true
ブラウザコンソールメッセージ
タイトル: コンソールメッセージを取得する
説明: すべてのコンソールメッセージを返します
パラメータ: なし
読み取り専用: true
ブラウザのインストール
タイトル: 設定で指定されたブラウザをインストールする
説明: 設定で指定されたブラウザをインストールします。ブラウザがインストールされていないというエラーが発生した場合にこれを呼び出します。
パラメータ: なし
読み取り専用: false
ブラウザを閉じる
タイトル: ブラウザを閉じる
説明: ページを閉じる
パラメータ: なし
読み取り専用: true
ブラウザのサイズ変更
タイトル: ブラウザウィンドウのサイズを変更する
説明: ブラウザウィンドウのサイズを変更する
パラメータ:
width
(数値):ブラウザウィンドウの幅height
(数値):ブラウザウィンドウの高さ
読み取り専用: true
ブラウザタブリスト
タイトル: リストタブ
説明: ブラウザのタブを一覧表示する
パラメータ: なし
読み取り専用: true
ブラウザタブ新規
タイトル: 新しいタブを開く
説明: 新しいタブを開く
パラメータ:
url
(文字列、オプション): 新しいタブで移動するURL。指定しない場合、新しいタブは空白になります。
読み取り専用: true
ブラウザタブ選択
タイトル: タブを選択
説明: インデックスでタブを選択する
パラメータ:
index
(数値):選択するタブのインデックス
読み取り専用: true
ブラウザタブを閉じる
タイトル: タブを閉じる
説明: タブを閉じる
パラメータ:
index
(数値, オプション): 閉じるタブのインデックス。指定されていない場合は現在のタブを閉じます。
読み取り専用: false
ブラウザ生成プレイライトテスト
タイトル: Playwright テストを生成する
説明: 指定されたシナリオの Playwright テストを生成します
パラメータ:
name
(文字列): テストの名前description
(文字列): テストの説明steps
(配列):テストのステップ
読み取り専用: true
ブラウザのスクリーンキャプチャ
タイトル: スクリーンショットを撮る
説明: 現在のページのスクリーンショットを撮ります
パラメータ: なし
読み取り専用: true
ブラウザ画面上のマウス移動
タイトル: マウスを動かす
説明: マウスを指定された位置に移動する
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明x
(数値): X座標y
(数値): Y座標
読み取り専用: true
ブラウザ画面のクリック
タイトル: クリック
説明: マウスの左ボタンをクリック
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明x
(数値): X座標y
(数値): Y座標
読み取り専用: false
ブラウザ画面ドラッグ
タイトル: マウスをドラッグ
説明: 左マウスボタンをドラッグ
パラメータ:
element
(文字列): 要素と対話するための許可を得るために使用される、人間が読める要素の説明startX
(数値): 開始X座標startY
(数値): 開始Y座標endX
(数値): 終了X座標endY
(数値): 終了Y座標
読み取り専用: false
ブラウザ画面タイプ
タイトル: テキストを入力
説明: テキストを入力
パラメータ:
text
(文字列): 要素に入力するテキストsubmit
(ブール値、オプション):入力したテキストを送信するかどうか(送信後にEnterキーを押す)
読み取り専用: false
ブラウザのキーを押す
タイトル: キーを押す
説明: キーボードのキーを押します
パラメータ:
key
(文字列): 押すキーの名前、または生成するa
(例:ArrowLeft
、
読み取り専用: false
ブラウザの待機時間
タイトル: 待つ
説明: テキストが表示されたり消えたりするか、指定された時間が経過するのを待ちます
パラメータ:
time
(数値、オプション):待機時間(秒)text
(文字列、オプション):待機するテキストtextGone
(文字列、オプション): 消えるのを待つテキスト
読み取り専用: true
ブラウザファイルアップロード
タイトル: ファイルをアップロード
説明: 1つまたは複数のファイルをアップロードします
パラメータ:
paths
(配列): アップロードするファイルへの絶対パス。1つのファイルでも複数のファイルでも構いません。
読み取り専用: false
ブラウザハンドルダイアログ
タイトル: ダイアログを処理する
説明: ダイアログを処理する
パラメータ:
accept
(boolean): ダイアログを受け入れるかどうか。promptText
(文字列、オプション): プロンプトダイアログの場合のプロンプトのテキスト。
読み取り専用: false
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
ビジョン モデルやスクリーンショットを必要とせずに、構造化されたアクセシビリティ スナップショットを通じて LLM が Web ページと対話できるようにするモデル コンテキスト プロトコル サーバー。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.Last updated -1MIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that enables LLMs to fetch and process web content in multiple formats (HTML, JSON, Markdown, text) with automatic format detection.Last updated -54
- AsecurityAlicenseAqualityA Model Context Protocol server that enables LLMs to interact with web pages, take screenshots, generate test code, scrape web pages, and execute JavaScript in a real browser environment.Last updated -291212MIT License
- -securityAlicense-qualityA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually-tuned models.Last updated -2Apache 2.0