Playwright MCP
公式Playwrightの公式MCPサーバー。ブラウザ自動化、ページ検査、スクリーンショット、およびClaude、Cursor、その他のAIエージェントからのWeb操作に対応。
Playwright MCPで何ができますか?
- アクセシビリティスナップショットによるブラウザ自動化 — 構造化されたアクセシビリティデータを使用して、AIにページのナビゲーションや要素との操作を依頼できます。スクリーンショットは不要です。
- 永続的なブラウジングセッション — 永続プロファイルを使用して会話間でログイン状態を維持したり、クリーンなテスト用に分離されたセッションを使用したりできます。
- マルチブラウザ対応 — Chromium、Firefox、またはWebKitでタスクを自動化でき、ヘッドレスモードやデバイスエミュレーションのオプションも利用できます。
- カスタムブラウザ設定 — ビューポートサイズ、ユーザーエージェント、プロキシ設定、権限をテストニーズに合わせて構成できます。
- ブラウザ拡張機能の統合 — 既存のChromeまたはEdgeブラウザに接続して、現在のタブやログイン済みセッションを活用できます。
ドキュメント
Playwright MCP
Playwright を利用したブラウザ自動化機能を提供する Model Context Protocol (MCP) サーバーです。Playwright を使用して、LLM が構造化されたアクセシビリティスナップショットを通じてウェブページと対話できるようにします。スクリーンショットや視覚的に調整されたモデルは不要です。
Playwright MCP と Playwright CLI の比較
このパッケージは Playwright への MCP インターフェースを提供します。コーディングエージェントを使用している場合は、代わりに CLI+SKILLS を利用するとよいでしょう。
-
CLI: 現代のコーディングエージェントは、MCP よりも SKILL として公開される CLI ベースのワークフローを好む傾向が高まっています。CLI 呼び出しはトークン効率が高いためです。大きなツールスキーマや冗長なアクセシビリティツリーをモデルコンテキストに読み込むことを避け、エージェントが簡潔で目的に特化したコマンドを通じて行動できるようにします。これにより、CLI + SKILLs は、限られたコンテキストウィンドウ内でブラウザ自動化と大規模なコードベース、テスト、推論のバランスを取る必要がある高スループットのコーディングエージェントに適しています。
Playwright CLI with SKILLS の詳細 をご覧ください。 -
MCP: MCP は、永続的な状態、豊富なイントロスペクション、ページ構造に対する反復的な推論を活用する専門的なエージェントループに引き続き関連性があります。例えば、探索的自動化、自己修復テスト、継続的なブラウザコンテキストの維持がトークンコストの懸念を上回る長時間実行の自律ワークフローなどです。
主な機能
- 高速かつ軽量。ピクセルベースの入力ではなく、Playwright のアクセシビリティツリーを使用します。
- LLM フレンドリー。ビジョンモデルは不要で、構造化データのみで動作します。
- 決定的なツール適用。スクリーンショットベースのアプローチに共通する曖昧さを回避します。
要件
- Node.js 18 以降
- VS Code、Cursor、Windsurf、Claude Desktop、Goose、Grok、Junie、その他の MCP クライアント
はじめに
まず、Playwright MCP サーバーをクライアントにインストールします。
標準設定は、ほとんどのツールで動作します:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Amp VS Code 拡張機能の設定画面、または settings.json ファイルを更新して追加します:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Amp CLI セットアップ:
以下の amp mcp add コマンドで追加します
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Antigravity の設定、または設定ファイルを更新して追加します:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Claude Code CLI を使用して Playwright MCP サーバーを追加します:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
MCP インストール ガイド に従い、上記の標準設定を使用します。
Cline
Configuring MCP Servers セクションの手順に従います。
例: ローカル設定
cline_mcp_settings.json ファイルに以下を追加します:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Codex CLI を使用して Playwright MCP サーバーを追加します:
codex mcp add playwright npx "@playwright/mcp@latest"
または、設定ファイル ~/.codex/config.toml を作成または編集して追加します:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
詳細については、Codex MCP ドキュメント を参照してください。
Copilot
Copilot CLI を使用して、対話的に Playwright MCP サーバーを追加します:
/mcp add
または、設定ファイル ~/.copilot/mcp-config.json を作成または編集して追加します:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
詳細については、Copilot CLI ドキュメント を参照してください。
Cursor
ボタンをクリックしてインストール:
または手動でインストール:
Cursor Settings -> MCP -> Add new MCP Server に移動します。任意の名前を付け、command タイプでコマンド npx @playwright/mcp@latest を使用します。Edit をクリックして設定を確認したり、コマンドの引数を追加したりすることもできます。
Factory
Factory CLI を使用して Playwright MCP サーバーを追加します:
droid mcp add playwright "npx @playwright/mcp@latest"
または、Factory droid 内で /mcp と入力して、MCP サーバーを管理するための対話型 UI を開きます。
詳細については、Factory MCP ドキュメント を参照してください。
Gemini CLI
MCP インストール ガイド に従い、上記の標準設定を使用します。
Goose
ボタンをクリックしてインストール:
または手動でインストール:
Advanced settings -> Extensions -> Add custom extension に移動します。任意の名前を付け、タイプ STDIO を使用し、command を npx @playwright/mcp に設定します。「Add Extension」をクリックします。
Grok
Grok CLI を使用して Playwright MCP サーバーを追加します:
grok mcp add playwright -- npx @playwright/mcp@latest
または、設定ファイル ~/.grok/config.toml を作成または編集して追加します:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
詳細については、Grok MCP ドキュメント を参照してください。
Junie
Junie CLI で Playwright MCP サーバーを追加するには:
/mcpと入力しますCtrl+Aを押して新しい MCP サーバーを追加します- リストから Playwright を選択します
または、.junie/mcp/mcp.json に追加します:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
詳細については、Junie MCP 設定ドキュメント を参照してください。
Kiro
MCP サーバーのドキュメントに従います。例えば .kiro/settings/mcp.json の場合:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
ボタンをクリックしてインストール:
または手動でインストール:
右サイドバーの Program -> Install -> Edit mcp.json に移動します。上記の標準設定を使用します。
opencode
MCP サーバーのドキュメントに従います。例えば ~/.config/opencode/opencode.json の場合:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
VSCode または IntelliJ で Qodo Gen チャットパネルを開きます → Connect more tools → + Add new MCP → 上記の標準設定を貼り付けます。
Save をクリックします。
VS Code
ボタンをクリックしてインストール:
または手動でインストール:
MCP インストール ガイド に従い、上記の標準設定を使用します。VS Code CLI を使用して Playwright MCP サーバーをインストールすることもできます:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
インストール後、Playwright MCP サーバーは VS Code の GitHub Copilot エージェントで使用できるようになります。
Warp
Settings -> AI -> Manage MCP Servers -> + Add に移動して MCP サーバーを追加します。上記の標準設定を使用します。
または、Warp プロンプトでスラッシュコマンド /add-mcp を使用し、上記の標準設定を貼り付けます:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Windsurf MCP ドキュメントに従います。上記の標準設定を使用します。
設定
Playwright MCP サーバーは以下の引数をサポートしています。これらは上記の JSON 設定内で、"args" リストの一部として指定できます:
| オプション | 説明 |
|---|---|
| --allowed-hosts <hosts...> | このサーバーが配信を許可するホストのカンマ区切りリスト。デフォルトはサーバーがバインドされているホスト。ホストチェックを無効にするには '*' を渡す。 env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | ブラウザがリクエストを許可する信頼済みオリジンのセミコロン区切りリスト。デフォルトはすべて許可。重要: セキュリティ境界としては機能せず、リダイレクトには影響しません。 env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | ワークスペースルート外のファイルへのアクセスを許可します。file:// URL への無制限アクセスも許可します。デフォルトでは、ファイルシステムへのアクセスはワークスペースのルートディレクトリ(ルートが設定されていない場合は cwd)のみに制限され、file:// URL へのナビゲーションはブロックされます。 env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | ブラウザがリクエストをブロックするオリジンのセミコロン区切りリスト。ブロックリストは許可リストより先に評価されます。許可リストなしで使用した場合、ブロックリストに一致しないリクエストは引き続き許可されます。重要: セキュリティ境界としては機能せず、リダイレクトには影響しません。 env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | サービスワーカーをブロックする env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | 使用するブラウザまたは chrome チャンネル。指定可能な値: chrome、firefox、webkit、msedge。 env PLAYWRIGHT_MCP_BROWSER |
| --caps | 有効にする追加機能のカンマ区切りリスト。指定可能な値: vision、pdf、devtools。 env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | 接続先の CDP エンドポイント。 env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | 接続リクエストとともに送信する CDP ヘッダー。複数指定可能。 env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | CDP エンドポイントへの接続タイムアウト(ミリ秒)。デフォルトは 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | コード生成に使用する言語を指定。指定可能な値: "typescript"、"python"、"java"、"csharp"、"none"。デフォルトは "typescript"。 env PLAYWRIGHT_MCP_CODEGEN |
| --config | 設定ファイルへのパス。 env PLAYWRIGHT_MCP_CONFIG |
| --console-level | 返すコンソールメッセージのレベル: "error"、"warning"、"info"、"debug"。各レベルにはより深刻なレベルのメッセージが含まれます。 env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | エミュレートするデバイス。例: "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | 汎用モバイルデバイスをエミュレートします(Chromium では Pixel 10、WebKit では iPhone 17)。モバイルページは通常より軽量なため、トークンを節約できます。--device とは併用できません。 env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | ブラウザ実行ファイルへのパス。 env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | 実行中のブラウザインスタンスに接続します(Edge/Chrome のみ)。"Playwright Extension" のインストールが必要です。 env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | 接続先のバインド済みブラウザエンドポイント。 env PLAYWRIGHT_MCP_ENDPOINT |
| --file-paths | ツール結果でのファイルパスの表示方法。ワークスペースルートに対する "relative" または "absolute"。デフォルトは "relative"。 env PLAYWRIGHT_MCP_FILE_PATHS |
| --grant-permissions <permissions...> | ブラウザコンテキストに付与する権限のリスト。例: "geolocation"、"clipboard-read"、"clipboard-write"。 env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | ブラウザをヘッドレスモードで実行します。デフォルトはヘッド付き env PLAYWRIGHT_MCP_HEADLESS |
| --host | サーバーをバインドするホスト。デフォルトは localhost。すべてのインターフェースにバインドするには 0.0.0.0 を使用。 env PLAYWRIGHT_MCP_HOST |
| --idle-timeout | ツール呼び出しが完了せずにこのミリ秒数が経過したらブラウザを閉じ、次のツール呼び出しで再起動します。デフォルトはヘッドレスブラウザで 1 時間、ヘッド付きではなし、0 で無効。 env PLAYWRIGHT_MCP_IDLE_TIMEOUT |
| --ignore-https-errors | https エラーを無視する env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | Playwright ページオブジェクトで評価する TypeScript ファイルへのパス env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | 初期化スクリプトとして追加する JavaScript ファイルへのパス。このスクリプトは各ページのスクリプトが実行される前にすべてのページで評価されます。複数回指定可能。 env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | ブラウザプロファイルをメモリ内に保持し、ディスクに保存しません。 env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | 画像レスポンスをクライアントに送信するかどうか。"allow"、"omit"、"only" のいずれか。"only" の場合、画像を含むレスポンスはテキスト部分なしで画像部分のみで構成されます。デフォルトは "allow"。 env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | 通常サンドボックス化されるすべてのプロセスタイプのサンドボックスを無効にします。 env PLAYWRIGHT_MCP_NO_SANDBOX |
| --no-webmcp | ページが WebMCP API を通じて登録するツールを収集または公開しません。 env PLAYWRIGHT_MCP_WEBMCP=false |
| --output-dir | 自動的に名前が付けられる出力ファイル用のディレクトリへのパス。たとえば、明示的なファイル名なしで撮影されたスクリーンショットなど。明示的な名前を持つファイルはワークスペースルートに対して解決され、このオプションの影響を受けません。 env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | 古い出力ファイルを退避するためのしきい値(バイト単位)。 env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | SSE トランスポートでリッスンするポート。 env PLAYWRIGHT_MCP_PORT |
| --profile-dir-name | --extension で接続するユーザーデータディレクトリ内のプロファイルディレクトリ名。例: "Profile 1"。デフォルトは拡張機能がインストールされている最後に使用されたプロファイル。 env PLAYWRIGHT_MCP_PROFILE_DIR_NAME |
| --proxy-bypass | プロキシをバイパスするドメインのカンマ区切りリスト。例: ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | プロキシサーバーを指定。例: "http://myproxy:3128" または "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | 通常サンドボックス化されないすべてのプロセスタイプのサンドボックスを有効にします。 env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | Playwright MCP セッションを出力ディレクトリに保存するかどうか。 env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | dotenv 形式のシークレットを含むファイルへのパス env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | 接続されたすべての HTTP クライアント間で同じブラウザコンテキストを再利用します。 env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | 各要素のバウンディングボックスを [box=x,y,width,height] としてスナップショットに含めます。座標はビューポート基準、CSS ピクセル単位です。 env PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | レスポンス用のスナップショットを撮るときに使用するモードを指定。"full" または "none"。デフォルトは "full"。 env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | 分離セッション用のストレージ状態ファイルへのパス。 env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | テスト ID に使用する属性を指定。デフォルトは "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | アクションタイムアウトをミリ秒で指定。デフォルトは 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | ナビゲーションタイムアウトをミリ秒で指定。デフォルトは 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | 各アクション後にトリガーされた処理が安定するまでの待機時間(ミリ秒)。デフォルトは 500ms env PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | ユーザーエージェント文字列を指定 env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | ユーザーデータディレクトリへのパス。指定しない場合、一時ディレクトリが作成されます。 env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | ブラウザのビューポートサイズをピクセルで指定。例: "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
ユーザープロファイル
Playwright MCP は、通常のブラウザのように永続プロファイルで実行するか(デフォルト)、テストセッション用の分離コンテキストで実行するか、ブラウザ拡張機能を使用して既存のブラウザに接続して実行できます。
永続プロファイル
ログイン済みのすべての情報は永続プロファイルに保存されます。オフライン状態をクリアしたい場合は、セッション間で削除できます。
永続プロファイルは以下の場所にあり、--user-data-dir 引数で上書きできます。
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash} は MCP クライアントのワークスペースルートから派生するため、異なるプロジェクトには自動的に別々のプロファイルが割り当てられます。
[!IMPORTANT] 永続プロファイルは一度に 1 つのブラウザインスタンスでのみ使用できるため、同じワークスペースを共有する同時 MCP クライアントは競合します。複数のクライアントを並行して実行するには、追加の各クライアントを
--isolatedで起動するか、別の--user-data-dirを指定します。
分離モード
分離モードでは、各セッションは分離プロファイルで開始されます。MCP にブラウザを閉じるよう要求するたびに、セッションは閉じられ、このセッションのすべてのストレージ状態は失われます。設定の contextOptions または --storage-state 引数を通じて、ブラウザに初期ストレージ状態を提供できます。ストレージ状態の詳細については、こちら を参照してください。
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
ブラウザ拡張機能
Playwright MCP Chrome 拡張機能を使用すると、既存のブラウザタブに接続し、ログイン済みセッションとブラウザ状態を活用できます。インストールとセットアップの手順については、microsoft/playwright › packages/extension を参照してください。
初期状態
ブラウザコンテキストまたはページに初期状態を提供する方法は複数あります。
ストレージ状態については、次のいずれかを選択できます:
--user-data-dir引数を使用してユーザーデータディレクトリで開始する。これにより、すべてのブラウザデータがセッション間で永続化されます。--storage-state引数を使用してストレージ状態ファイルで開始する。これにより、ファイルから Cookie とローカルストレージが分離ブラウザコンテキストに読み込まれます。
ページ状態については、以下を使用できます:
--init-pageは、Playwright ページオブジェクトで評価される TypeScript ファイルを指定します。これにより、ページをセットアップするための任意のコードを実行できます。
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};
--init-scriptは、初期化スクリプトとして追加される JavaScript ファイルを指定します。このスクリプトは各ページのスクリプトが実行される前にすべてのページで評価されます。 これはブラウザ API のオーバーライドや環境のセットアップに役立ちます。
// init-script.js
window.isPlaywrightMCP = true;
設定ファイル
Playwright MCP サーバーは JSON 設定ファイルを使用して設定できます。設定ファイルは --config コマンドラインオプションで指定できます:
npx @playwright/mcp@latest --config path/to/config.json
設定ファイルのスキーマ
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Whether to collect and expose the tools that a page registers through the
* experimental WebMCP API. Enabled by default.
*/
webmcp?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory for automatically named output files, for example a screenshot taken without an
* explicit file name. Files with an explicit name are resolved against the workspace root instead
* and are not affected by this option.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
/**
* Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
* Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
* The CLI shuts the whole session down instead of relaunching.
*/
idle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
* With "only", a response that carries an image consists of the image parts alone, without the text part.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
*/
filePaths?: 'relative' | 'absolute';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
スタンドアロン MCP サーバー
ディスプレイのないシステムや IDE のワーカープロセスからヘッド付きブラウザを実行する場合は、
DISPLAY が設定された環境から MCP サーバーを実行し、HTTP トランスポートを有効にするために --port フラグを渡します。
npx @playwright/mcp@latest --port 8931
次に、MCP クライアント設定で url を HTTP エンドポイントに設定します:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
セキュリティ
Playwright MCP はセキュリティ境界ではありません。デプロイメントの保護に関するガイダンスについては、MCPセキュリティのベストプラクティスを参照してください。
Docker
注: Docker実装は現時点ではヘッドレスChromiumのみをサポートしています。
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
または、MCPクライアントに起動させる代わりに、コンテナを長時間実行サービスとして実行したい場合は、次を使用します:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
サーバーはホストポート 8931 でリッスンし、任意のMCPクライアントから到達できます。
Dockerイメージを自分でビルドすることもできます。
docker build -t mcr.microsoft.com/playwright/mcp .
プログラムでの使用
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
ツール
コア自動化
- browser_click
- タイトル: クリック
- 説明: Webページ上でクリックを実行します
- パラメータ:
element(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターdoubleClick(ブール値、オプション): シングルクリックではなくダブルクリックを実行するかどうかbutton(文字列、オプション): クリックするボタン。デフォルトは左modifiers(配列、オプション): 押す修飾キー
- 読み取り専用: false
- browser_close
- タイトル: ブラウザを閉じる
- 説明: ページを閉じます
- パラメータ: なし
- 読み取り専用: false
- browser_console_messages
- タイトル: コンソールメッセージを取得
- 説明: すべてのコンソールメッセージを返します
- パラメータ:
level(文字列): 返すコンソールメッセージのレベル。各レベルには、より深刻なレベルのメッセージが含まれます。デフォルトは"info"です。all(ブール値、オプション): 最後のナビゲーション以降だけでなく、セッションの開始以降のすべてのコンソールメッセージを返します。デフォルトはfalseです。filename(文字列、オプション): コンソールメッセージを保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、メッセージはテキストとして返されます。
- 読み取り専用: true
- browser_drag
- タイトル: マウスをドラッグ
- 説明: 2つの要素間でドラッグアンドドロップを実行します
- パラメータ:
startElement(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読めるソース要素の説明startTarget(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターendElement(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読めるターゲット要素の説明endTarget(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクター
- 読み取り専用: false
- browser_drop
- タイトル: 要素にファイルまたはデータをドロップ
- 説明: ページの外部からドラッグされたかのように、ファイルまたはMIMEタイプのデータを要素にドロップします。"paths"または"data"の少なくとも1つを指定する必要があります。
- パラメータ:
element(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターpaths(配列、オプション): 要素にドロップするファイルの絶対パス。data(オブジェクト、オプション): ドロップするデータ。MIMEタイプから文字列値へのマップ(例: {"text/plain": "hello", "text/uri-list": "https://example.com"})。
- 読み取り専用: false
- browser_emulate_media
- タイトル: メディア機能をエミュレート
- 説明: ページのCSSメディア機能をエミュレートします。例えば、ライトとダークのカラースキームを切り替えます。省略されたパラメータは変更されません。nullはオーバーライドをクリアします。
- パラメータ:
colorScheme(オプション): prefers-color-schemeメディア機能をエミュレートしますreducedMotion(オプション): prefers-reduced-motionメディア機能をエミュレートしますforcedColors(オプション): forced-colorsメディア機能をエミュレートしますcontrast(オプション): prefers-contrastメディア機能をエミュレートしますmedia(オプション): ページのCSSメディアタイプを変更します
- 読み取り専用: false
- browser_evaluate
- タイトル: JavaScriptを評価
- 説明: ページまたは要素でJavaScript式を評価します
- パラメータ:
element(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列、オプション): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターfunction(文字列): 要素が指定された場合の () => { /* code / } または (element) => { / code */ }filename(文字列、オプション): 結果を保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、結果はテキストとして返されます。
- 読み取り専用: false
- browser_file_upload
- タイトル: ファイルをアップロード
- 説明: 1つまたは複数のファイルをアップロードします
- パラメータ:
paths(配列、オプション): アップロードするファイルの絶対パス。単一ファイルまたは複数ファイルにできます。省略した場合、ファイルチューザーはキャンセルされます。
- 読み取り専用: false
- browser_fill_form
- タイトル: フォームに入力
- 説明: 複数のフォームフィールドに入力します
- パラメータ:
fields(配列): 入力するフィールド
- 読み取り専用: false
- browser_find
- タイトル: ページスナップショット内を検索
- 説明: 現在のページのアクセシビリティスナップショット内でテキストまたは正規表現を検索します。一致するスナップショットノードを、周囲の数行のコンテキスト(検索スニペットのようなもの)とともに返します。各ノードはツリーのルートからのパスの下に表示されます。これは、要素とそのrefを見つけるだけでよい場合に、スナップショット全体を取得するよりもコストが低くなります。
- パラメータ:
text(文字列、オプション): ページスナップショット内で検索するプレーンテキスト(大文字と小文字を区別しない部分文字列一致)。textまたはregexのいずれかを指定します。両方は指定しないでください。regex(文字列、オプション): ページスナップショット内で検索する正規表現。デフォルトでは大文字と小文字が区別されます。パターンをスラッシュで囲むとフラグを追加できます。例: 大文字と小文字を区別しない場合は"/error/i"。textまたはregexのいずれかを指定します。両方は指定しないでください。filename(文字列、オプション): 結果をレスポンスで返す代わりにファイルに保存します。相対ファイル名はワークスペースルートに対して解決されます。
- 読み取り専用: true
- browser_handle_dialog
- タイトル: ダイアログを処理
- 説明: ダイアログを処理します
- パラメータ:
accept(ブール値): ダイアログを受け入れるかどうか。promptText(文字列、オプション): プロンプトダイアログの場合のプロンプトのテキスト。
- 読み取り専用: false
- browser_hover
- タイトル: マウスをホバー
- 説明: ページ上の要素にホバーします
- パラメータ:
element(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクター
- 読み取り専用: false
- browser_navigate
- タイトル: URLに移動
- 説明: URLに移動します
- パラメータ:
url(文字列): 移動するURL
- 読み取り専用: false
- browser_navigate_back
- タイトル: 戻る
- 説明: 履歴の前のページに戻ります
- パラメータ: なし
- 読み取り専用: false
- browser_network_request
- タイトル: ネットワークリクエストの詳細を表示
- 説明: 単一のネットワークリクエストの完全な詳細(ヘッダーと本文)を返します。
partが設定されている場合は、単一の部分のみを返します。browser_network_requestsの番号を使用してください。 - パラメータ:
index(整数): browser_network_requestsによって出力された、リクエストの1から始まるインデックス。part(文字列、オプション): リクエストのこの部分のみを返します。省略すると完全な詳細を返します。filename(文字列、オプション): 結果を保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、出力はテキストとして返されます。
- 読み取り専用: true
- browser_network_requests
- タイトル: ネットワークリクエストを一覧表示
- 説明: ページの読み込み以降のネットワークリクエストの番号付きリストを返します。完全な詳細を取得するには、番号を指定してbrowser_network_requestを使用します。
- パラメータ:
static(ブール値): 画像、フォント、スクリプトなどの成功した静的リソースを含めるかどうか。デフォルトはfalseです。filter(文字列、オプション): URLがこの正規表現に一致するリクエストのみを返します(例: "/api/.*user")。filename(文字列、オプション): ネットワークリクエストを保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、リクエストはテキストとして返されます。
- 読み取り専用: true
- browser_press_key
- タイトル: キーを押す
- 説明: キーボードのキーを押します
- パラメータ:
key(文字列): 押すキーの名前、または生成する文字。例:ArrowLeftまたはa
- 読み取り専用: false
- browser_resize
- タイトル: ブラウザウィンドウのサイズを変更
- 説明: ブラウザウィンドウのサイズを変更します
- パラメータ:
width(数値): ブラウザウィンドウの幅height(数値): ブラウザウィンドウの高さ
- 読み取り専用: false
- browser_run_code_unsafe
- タイトル: Playwrightコードを実行(安全ではありません)
- 説明: Playwrightコードスニペットを実行します。安全ではありません: Playwrightサーバープロセス内で任意のJavaScriptを実行し、RCEと同等です。
- パラメータ:
code(文字列、オプション): 実行するPlaywrightコードを含むJavaScript関数。単一の引数pageで呼び出され、任意のページ操作に使用できます。例:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(文字列、オプション): 指定されたファイルからコードを読み込みます。相対ファイル名はワークスペースルートに対して解決されます。codeとfilenameの両方が指定された場合、codeは無視されます。
- 読み取り専用: false
- browser_select_option
- タイトル: オプションを選択
- 説明: ドロップダウンでオプションを選択します
- パラメータ:
element(文字列、オプション): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターvalues(配列): ドロップダウンで選択する値の配列。単一の値または複数の値にできます。
- 読み取り専用: false
- browser_snapshot
- タイトル: ページスナップショット
- 説明: 現在のページのアクセシビリティスナップショットを取得します。これはスクリーンショットよりも優れています。
- パラメータ:
target(string, 任意): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターfilename(string, 任意): スナップショットをレスポンスで返す代わりにファイルに保存します。相対ファイル名はワークスペースルートに対して解決されます。depth(number, 任意): スナップショットツリーの深さを制限しますboxes(boolean, 任意): 各要素のバウンディングボックスをスナップショットに [box=x,y,width,height] として含めます。座標はビューポート基準で、CSSピクセル単位です (Element.getBoundingClientRect)
- 読み取り専用: true
- browser_take_screenshot
- タイトル: スクリーンショットを撮る
- 説明: 現在のページのスクリーンショットを撮ります。スクリーンショットに基づいてアクションを実行することはできません。アクションには browser_snapshot を使用してください。
- パラメータ:
element(string, 任意): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(string, 任意): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターtype(string, 任意): スクリーンショットの画像形式。未設定の場合は、ファイル名の拡張子から推測され、それ以外の場合は png になります。filename(string, 任意): スクリーンショットを保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、スクリーンショットは出力ディレクトリにpage-{timestamp}.{png|jpeg|webp}として保存されます。fullPage(boolean, 任意): true の場合、現在表示されているビューポートではなく、スクロール可能なページ全体のスクリーンショットを撮ります。要素スクリーンショットとは併用できません。scale(string): 画像解像度スケール。"css" は CSS ピクセル単位のスクリーンショットを生成します (小さく、デバイス間で一貫性があります)。"device" はデバイスピクセルを使用した高解像度スクリーンショットを生成します (大きく、デバイスピクセル比を考慮します)。デフォルトは css です。
- 読み取り専用: true
- browser_type
- タイトル: テキストを入力
- 説明: 編集可能な要素にテキストを入力します
- パラメータ:
element(string, 任意): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(string): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターtext(string): 要素に入力するテキストsubmit(boolean, 任意): 入力したテキストを送信するかどうか (その後 Enter を押す)slowly(boolean, 任意): 一度に1文字ずつ入力するかどうか。ページ内のキーハンドラーをトリガーするのに便利です。デフォルトでは、テキスト全体が一度に入力されます。
- 読み取り専用: false
- browser_wait_for
- タイトル: 待機
- 説明: テキストが表示されるか消えるか、指定した時間が経過するまで待機します
- パラメータ:
time(number, 任意): 待機する時間(秒)、最大30秒text(string, 任意): 待機するテキストtextGone(string, 任意): 消えるまで待機するテキスト
- 読み取り専用: false
タブ管理
- browser_tabs
- タイトル: タブを管理
- 説明: ブラウザタブを一覧表示、作成、閉じる、または選択します。
- パラメータ:
action(string): 実行する操作index(number, 任意): タブインデックス。close/select に使用します。close で省略した場合、現在のタブが閉じられます。url(string, 任意): 新しいタブで移動する URL。new に使用します。
- 読み取り専用: false
ブラウザのインストール
設定 (--caps=config でオプトイン)
- browser_get_config
- タイトル: 設定を取得
- 説明: CLI オプション、環境変数、設定ファイルをマージした後の最終的な解決済み設定を取得します。
- パラメータ: なし
- 読み取り専用: true
ネットワーク (--caps=network でオプトイン)
- browser_network_state_set
- タイトル: ネットワーク状態を設定
- 説明: ブラウザのネットワーク状態をオンラインまたはオフラインに設定します。オフラインの場合、すべてのネットワークリクエストは失敗します。
- パラメータ:
state(string): オフラインモードをシミュレートするには "offline" に、ネットワーク接続を復元するには "online" に設定します
- 読み取り専用: false
- browser_route
- タイトル: ネットワークリクエストをモック
- 説明: URL パターンに一致するネットワークリクエストをモックするためのルートを設定します
- パラメータ:
pattern(string): 一致させる URL パターン (例: "/api/users", "/*.{png,jpg}")status(number, 任意): 返す HTTP ステータスコード (デフォルト: 200)body(string, 任意): レスポンスボディ (テキストまたは JSON 文字列)contentType(string, 任意): Content-Type ヘッダー (例: "application/json", "text/html")headers(array, 任意): "Name: Value" 形式で追加するヘッダーremoveHeaders(string, 任意): リクエストから削除するヘッダー名のカンマ区切りリスト
- 読み取り専用: false
- browser_route_list
- タイトル: ネットワークルートを一覧表示
- 説明: アクティブなネットワークルートをすべて一覧表示します
- パラメータ: なし
- 読み取り専用: true
- browser_unroute
- タイトル: ネットワークルートを削除
- 説明: パターンに一致するネットワークルートを削除します (パターンが指定されていない場合はすべてのルートを削除)
- パラメータ:
pattern(string, 任意): ルートを解除する URL パターン (省略するとすべてのルートを削除)
- 読み取り専用: false
ストレージ (--caps=storage でオプトイン)
- browser_cookie_clear
- タイトル: クッキーをクリア
- 説明: すべてのクッキーをクリアします
- パラメータ: なし
- 読み取り専用: false
- browser_cookie_delete
- タイトル: クッキーを削除
- 説明: 特定のクッキーを削除します
- パラメータ:
name(string): 削除するクッキー名
- 読み取り専用: false
- browser_cookie_get
- タイトル: クッキーを取得
- 説明: 名前で特定のクッキーを取得します
- パラメータ:
name(string): 取得するクッキー名
- 読み取り専用: true
- browser_cookie_list
- タイトル: クッキーを一覧表示
- 説明: すべてのクッキーを一覧表示します (任意でドメイン/パスでフィルタリング)
- パラメータ:
domain(string, 任意): ドメインでクッキーをフィルタリングpath(string, 任意): パスでクッキーをフィルタリング
- 読み取り専用: true
- browser_cookie_set
- タイトル: クッキーを設定
- 説明: オプションのフラグ (ドメイン、パス、有効期限、httpOnly、secure、sameSite) 付きでクッキーを設定します
- パラメータ:
name(string): クッキー名value(string): クッキー値domain(string, 任意): クッキーのドメインpath(string, 任意): クッキーのパスexpires(number, 任意): Unix タイムスタンプとしてのクッキーの有効期限httpOnly(boolean, 任意): クッキーが HTTP のみかどうかsecure(boolean, 任意): クッキーがセキュアかどうかsameSite(string, 任意): クッキーの SameSite 属性
- 読み取り専用: false
- browser_localstorage_clear
- タイトル: localStorage をクリア
- 説明: すべての localStorage をクリアします
- パラメータ: なし
- 読み取り専用: false
- browser_localstorage_delete
- タイトル: localStorage アイテムを削除
- 説明: localStorage アイテムを削除します
- パラメータ:
key(string): 削除するキー
- 読み取り専用: false
- browser_localstorage_get
- タイトル: localStorage アイテムを取得
- 説明: キーで localStorage アイテムを取得します
- パラメータ:
key(string): 取得するキー
- 読み取り専用: true
- browser_localstorage_list
- タイトル: localStorage を一覧表示
- 説明: すべての localStorage キーと値のペアを一覧表示します
- パラメータ: なし
- 読み取り専用: true
- browser_localstorage_set
- タイトル: localStorage アイテムを設定
- 説明: localStorage アイテムを設定します
- パラメータ:
key(string): 設定するキーvalue(string): 設定する値
- 読み取り専用: false
- browser_sessionstorage_clear
- タイトル: sessionStorage をクリア
- 説明: すべての sessionStorage をクリアします
- パラメータ: なし
- 読み取り専用: false
- browser_sessionstorage_delete
- タイトル: sessionStorage アイテムを削除
- 説明: sessionStorage アイテムを削除します
- パラメータ:
key(string): 削除するキー
- 読み取り専用: false
- browser_sessionstorage_get
- タイトル: sessionStorage アイテムを取得
- 説明: キーで sessionStorage アイテムを取得します
- パラメータ:
key(string): 取得するキー
- 読み取り専用: true
- browser_sessionstorage_list
- タイトル: sessionStorage を一覧表示
- 説明: すべての sessionStorage キーと値のペアを一覧表示します
- パラメータ: なし
- 読み取り専用: true
- browser_sessionstorage_set
- タイトル: sessionStorage アイテムを設定
- 説明: sessionStorage アイテムを設定します
- パラメータ:
key(string): 設定するキーvalue(string): 設定する値
- 読み取り専用: false
- browser_set_storage_state
- タイトル: ストレージ状態を復元
- 説明: ファイルからストレージ状態 (クッキー、ローカルストレージ) を復元します。これにより、復元前に既存のクッキーとローカルストレージがクリアされます。
- パラメータ:
filename(string): 復元元のストレージ状態ファイルへのパス。相対ファイル名はワークスペースルートに対して解決されます。
- 読み取り専用: false
- browser_storage_state
- タイトル: ストレージ状態を保存
- 説明: 後で再利用するためにストレージ状態 (クッキー、ローカルストレージ) をファイルに保存します
- パラメータ:
filename(string, 任意): ストレージ状態を保存するファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、ストレージ状態は出力ディレクトリにstorage-state-{timestamp}.jsonとして保存されます。
- 読み取り専用: true
DevTools (--caps=devtools でオプトイン)
- browser_annotate
- タイトル: 現在のページに注釈を付ける
- 説明: 現在のページに対して Playwright Dashboard を注釈モードで開き、ユーザーが注釈を描画するのを待ちます。注釈付きスクリーンショット、ARIA スナップショット、および注釈のリストを返します。
- パラメータ: なし
- 読み取り専用: true
- browser_hide_highlight
- タイトル: 要素のハイライトを非表示
- 説明: 要素に対して以前に追加されたハイライトオーバーレイを削除します。
- パラメータ:
element(string, 任意): ハイライトを追加するときに使用される、人間が読める要素の説明。browser_highlight に渡された値と一致する必要があります。target(string, 任意): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクター
- 読み取り専用: true
- browser_highlight
- タイトル: 要素をハイライト
- 説明: ページ上の要素の周囲に永続的なハイライトオーバーレイを表示します。
- パラメータ:
element(string, optional): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(string): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクターstyle(string, optional): ハイライトオーバーレイに適用される追加のインラインCSS(例: "outline: 2px dashed red")。
- 読み取り専用: true
- browser_resume
- タイトル: 一時停止したスクリプト実行を再開
- 説明: 一時停止後にスクリプト実行を再開します。stepをtrueに設定して呼び出された場合、次のアクションの前に実行が再度一時停止します。
- パラメータ:
step(boolean, optional): trueの場合、次のアクションの前に実行が再度一時停止し、ステップバイステップのデバッグが可能になります。location(string, optional): 特定の:で実行を一時停止します(例: "example.spec.ts:42")。
- 読み取り専用: false
- browser_start_recording
- タイトル: ユーザー操作の記録を開始
- 説明: ユーザーがブラウザで実行する操作をPlaywrightコードとして記録を開始します。ユーザーがフローを手動でデモしたい場合に使用します。ユーザーが完了したと言ったら、browser_stop_recordingを呼び出して記録された操作を取得します。
- パラメータ: なし
- 読み取り専用: true
- browser_start_tracing
- タイトル: トレースを開始
- 説明: トレースの記録を開始します
- パラメータ: なし
- 読み取り専用: true
- browser_start_video
- タイトル: ビデオを開始
- 説明: ビデオの記録を開始します
- パラメータ:
filename(string, optional): ビデオの保存先ファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、ビデオは出力ディレクトリにvideo-{timestamp}.webmとして保存されます。size(object, optional): ビデオサイズfps(number, optional): 1秒あたりのフレーム数でのビデオフレームレート。デフォルトは25です。cursor(boolean, optional): 各アクションポイントに移動するアニメーション化されたマウスカーソルをレンダリングします。カーソルが移動する時間を確保するため、アクションを800ms間隔で調整します。
- 読み取り専用: true
- browser_stop_recording
- タイトル: ユーザー操作の記録を停止
- 説明: browser_start_recordingで開始した記録を停止し、記録された操作をPlaywrightコードとして返します。
- パラメータ: なし
- 読み取り専用: true
- browser_stop_tracing
- タイトル: トレースを停止
- 説明: トレースの記録を停止します
- パラメータ: なし
- 読み取り専用: true
- browser_stop_video
- タイトル: ビデオを停止
- 説明: ビデオの記録を停止します
- パラメータ: なし
- 読み取り専用: true
- browser_video_chapter
- タイトル: ビデオチャプター
- 説明: ビデオ録画にチャプターマーカーを追加します。ぼかした背景を持つ全画面のチャプターカードを表示します。
- パラメータ:
title(string): チャプタータイトルdescription(string, optional): チャプターの説明duration(number, optional): チャプターカードを表示する時間(ミリ秒)
- 読み取り専用: true
- browser_video_hide_actions
- タイトル: アクションオーバーレイを非表示
- 説明: ページ上で実行されたアクションの注釈付けを停止します。
- パラメータ: なし
- 読み取り専用: true
- browser_video_show_actions
- タイトル: アクションオーバーレイを表示
- 説明: ページ上で実行される後続のアクションに、アクション名を示すコールアウトで注釈を付け、スタイル設定されている場合はアクションポイントをマークし、ターゲット要素をハイライトします。ビデオ録画やスクリーンキャスト中に便利です。
- パラメータ:
duration(number, optional): 各アクション注釈が画面に表示される時間(ミリ秒)。デフォルトは500です。position(string, optional): ページに対するアクションタイトルの配置場所。デフォルトは右上です。cursor(string, optional): ポインターアクションのカーソル装飾。"pointer"(デフォルト)は前のアクションポイントから次のアクションポイントへマウスポインターをアニメーション表示します。"none"はカーソル装飾を無効にします。style(object, optional): アクション装飾のスタイル。
- 読み取り専用: true
座標ベース(--caps=visionでオプトイン)
- browser_mouse_click_xy
- タイトル: クリック
- 説明: 指定された位置でマウスボタンをクリックします
- パラメータ:
x(number): X座標y(number): Y座標button(string, optional): クリックするボタン。デフォルトは左です。clickCount(number, optional): クリック回数。デフォルトは1です。delay(number, optional): マウスダウンとマウスアップの間の待機時間(ミリ秒)。デフォルトは0です。
- 読み取り専用: false
- browser_mouse_down
- タイトル: マウスダウンを押す
- 説明: マウスダウンを押します
- パラメータ:
button(string, optional): 押すボタン。デフォルトは左です。
- 読み取り専用: false
- browser_mouse_drag_xy
- タイトル: マウスをドラッグ
- 説明: 左マウスボタンを指定された位置にドラッグします
- パラメータ:
startX(number): 開始X座標startY(number): 開始Y座標endX(number): 終了X座標endY(number): 終了Y座標
- 読み取り専用: false
- browser_mouse_move_xy
- タイトル: マウスを移動
- 説明: マウスを指定された位置に移動します
- パラメータ:
x(number): X座標y(number): Y座標
- 読み取り専用: false
- browser_mouse_up
- タイトル: マウスアップを押す
- 説明: マウスアップを押します
- パラメータ:
button(string, optional): 押すボタン。デフォルトは左です。
- 読み取り専用: false
- browser_mouse_wheel
- タイトル: マウスホイールをスクロール
- 説明: マウスホイールをスクロールします
- パラメータ:
deltaX(number): XデルタdeltaY(number): Yデルタ
- 読み取り専用: false
PDF生成(--caps=pdfでオプトイン)
- browser_pdf_save
- タイトル: PDFとして保存
- 説明: ページをPDFとして保存します
- パラメータ:
filename(string, optional): PDFの保存先ファイル名。相対ファイル名はワークスペースルートに対して解決されます。指定しない場合、PDFは出力ディレクトリにpage-{timestamp}.pdfとして保存されます。
- 読み取り専用: true
テストアサーション(--caps=testingでオプトイン)
- browser_generate_locator
- タイトル: 要素のロケーターを作成
- 説明: テストで使用する指定された要素のロケーターを生成します
- パラメータ:
element(string, optional): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(string): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクター
- 読み取り専用: true
- browser_verify_element_visible
- タイトル: 要素が表示されていることを確認
- 説明: 要素がページ上に表示されていることを確認します
- パラメータ:
role(string): 要素のROLE。スナップショットで次のように確認できます:- {ROLE} "Accessible Name":accessibleName(string): 要素のACCESSIBLE_NAME。スナップショットで次のように確認できます:- role "{ACCESSIBLE_NAME}"
- 読み取り専用: false
- browser_verify_list_visible
- タイトル: リストが表示されていることを確認
- 説明: リストがページ上に表示されていることを確認します
- パラメータ:
element(string): 人間が読めるリストの説明target(string): リストを指す正確なターゲット要素参照items(array): 確認する項目
- 読み取り専用: false
- browser_verify_text_visible
- タイトル: テキストが表示されていることを確認
- 説明: テキストがページ上に表示されていることを確認します。可能であればbrowser_verify_element_visibleを優先してください。
- パラメータ:
text(string): 確認するTEXT。スナップショットで次のように確認できます:- role "Accessible Name": {TEXT}または次のように:- text: {TEXT}
- 読み取り専用: false
- browser_verify_value
- タイトル: 値を確認
- 説明: 要素の値を確認します
- パラメータ:
type(string): 要素のタイプelement(string): 人間が読める要素の説明target(string): ページスナップショットからの正確なターゲット要素参照value(string): 確認する値。チェックボックスの場合は、"true"または"false"を使用します。
- 読み取り専用: false