mcpField
P
PLAYWRIGHT-MCP

PLAYWRIGHT-MCP

github.com/microsoftチャットアプリ38.8k6 日前に更新

PLAYWRIGHT-MCP について

Playwright MCP は、Playwright を用いてLLMにブラウザー自動化とWebスクレイピングの機能を提供する MCP サーバーです。スクリーンショットではなくアクセシビリティスナップショットを基に動作するため、ビジョンモデルは不要です。ブラウザーの状態を保持しながら反復的に作業するエージェントに適しています。

主な機能

  1. 01アクセシビリティツリーに基づくページスナップショット
  2. 02ビジョンモデル不要の構造化データ処理
  3. 03決定的なツール実行
  4. 04ブラウザーやデバイスの設定オプション

活用シーン

  1. 01LLMによるブラウザー操作の自動化
  2. 02Webページからのデータ抽出
  3. 03探索的な自動化と自己修復型テスト

詳細

Playwright MCP

Playwright を使用してブラウザー自動化機能を提供する Model Context Protocol(MCP)サーバーです。このサーバーを使うと、LLM は構造化されたアクセシビリティスナップショットを通じて Web ページとやり取りできます。スクリーンショットや視覚に合わせて調整したモデルは必要ありません。

Playwright MCP と Playwright CLI の比較

このパッケージは、Playwright の MCP インターフェースを提供します。コーディングエージェントを使用している場合は、代わりに CLI+SKILLS を利用するとよいでしょう。

  • CLI:最新のコーディングエージェントでは、MCP よりも、SKILL として公開される CLI ベースのワークフローが好まれる傾向が強まっています。CLI の呼び出しはトークン効率が高く、大規模なツールスキーマや冗長なアクセシビリティツリーをモデルのコンテキストに読み込まずに済むため、エージェントは簡潔で目的に特化したコマンドを使って操作できます。そのため、限られたコンテキストウィンドウ内でブラウザー自動化と大規模なコードベース、テスト、推論のバランスを取る必要がある高スループットのコーディングエージェントには、CLI + SKILL のほうが適しています。
    SKILLS を使った Playwright CLI について詳しく見る。

  • 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"
      ]
    }
  }
}

VS Code にインストール VS Code Insiders にインストール

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

「MCP サーバーの設定」のセクションにある手順に従ってください。

例:ローカルセットアップ

次の内容を 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 にインストール

または、手動でインストールします:

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 #### ボタンをクリックしてインストールします:

Install in 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 documentation をご覧ください。

Junie

Junie CLI で Playwright MCP サーバーを追加するには:

  1. /mcp と入力します
  2. Ctrl+A を押して、新しい MCP サーバーを追加します
  3. リストから Playwright を選択します

または、.junie/mcp/mcp.json に追加します:

{
  "mcpServers": {
    "Playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ]
    }
  }
}

詳しくは、Junie MCP configuration documentation をご覧ください。

Kiro

Add to Kiro

MCP サーバーのドキュメントに従ってください。たとえば、.kiro/settings/mcp.json では次のように設定します:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
LM Studio
ボタンをクリックしてインストールします:

Add MCP Server playwright to 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
ボタンをクリックしてインストールします:

VS Code にインストール VS Code Insiders にインストール

#### または手動でインストールする場合:

MCP のインストールガイドに従い、上記の標準設定を使用してください。VS Code CLI を使用して Playwright MCP サーバーをインストールすることもできます。

# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

インストール後、VS Code の GitHub Copilot エージェントで Playwright MCP サーバーを使用できるようになります。

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-errorsHTTPS エラーを無視します
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>Playwright の page オブジェクトで評価する 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-webmcpWebMCP 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-sessionPlaywright 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 クライアントのワークスペースルートから導出されるため、プロジェクトごとにプロファイルが自動的に分かれます。

重要

永続プロファイルを使用できるのは、一度に 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 Extension を使用すると、既存のブラウザータブに接続し、ログイン済みセッションとブラウザーの状態を利用できます。インストールと設定の手順については、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 Security Best Practicesを参照してください。

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** - Title: クリック - Description: Web ページ上でクリックを実行します - Parameters: - `element` (string, optional): 要素とのやり取りの許可を得るために使用する、人が理解しやすい要素の説明 - `target` (string): ページのスナップショットから取得した正確なターゲット要素の参照、または一意の要素セレクター - `doubleClick` (boolean, optional): シングルクリックの代わりにダブルクリックを実行するかどうか - `button` (string, optional): クリックするボタン。デフォルトは左ボタンです - `modifiers` (array, optional): 押す修飾キー - Read-only: **false**
  • browser_close

    • Title: ブラウザーを閉じる
    • Description: ページを閉じます
    • Parameters: None
    • Read-only: false
  • browser_console_messages

    • Title: コンソールメッセージを取得
    • Description: すべてのコンソールメッセージを返します
    • Parameters:
      • level (string): 返すコンソールメッセージのレベル。それぞれのレベルには、より重大なレベルのメッセージも含まれます。デフォルトは "info" です。
      • all (boolean, optional): 前回のページ遷移後だけでなく、セッション開始以降のすべてのコンソールメッセージを返します。デフォルトは false です。
      • filename (string, optional): コンソールメッセージの保存先ファイル名。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、メッセージはテキストとして返されます。
    • Read-only: true
  • browser_drag

    • Title: マウスでドラッグ
    • Description: 2 つの要素間でドラッグ&ドロップを実行します
    • Parameters:
      • startElement (string, optional): 要素とのやり取りの許可を得るために使用する、人が理解しやすい始点要素の説明
      • startTarget (string): ページのスナップショットから取得した正確なターゲット要素の参照、または一意の要素セレクター
      • endElement (string, optional): 要素とのやり取りの許可を得るために使用する、人が理解しやすい終点要素の説明
      • endTarget (string): ページのスナップショットから取得した正確なターゲット要素の参照、または一意の要素セレクター
    • Read-only: false
  • browser_drop

    • Title: 要素にファイルまたはデータをドロップ
    • Description: ページの外部からドラッグしたかのように、ファイルまたは MIME タイプ付きデータを要素にドロップします。"paths" または "data" の少なくとも一方を指定する必要があります。
    • Parameters:
      • element (string, optional): 要素とのやり取りの許可を得るために使用する、人が理解しやすい要素の説明
      • target (string): ページのスナップショットから取得した正確なターゲット要素の参照、または一意の要素セレクター
      • paths (array, optional): 要素にドロップするファイルの絶対パス。
      • data (object, optional): MIME タイプを文字列値に対応付けるマップとして、ドロップするデータを指定します(例:{"text/plain": "hello", "text/uri-list": "https://example.com"})。
    • Read-only: false
  • browser_emulate_media

    • Title: メディア機能をエミュレート
    • Description: たとえば、ライトとダークの配色を切り替えるなど、ページの CSS メディア機能をエミュレートします。省略したパラメーターは変更されず、null を指定するとオーバーライドが解除されます。
    • Parameters:
      • colorScheme (optional): prefers-color-scheme メディア機能をエミュレートします
      • reducedMotion (optional): prefers-reduced-motion メディア機能をエミュレートします
      • forcedColors (optional): forced-colors メディア機能をエミュレートします
      • contrast (optional): prefers-contrast メディア機能をエミュレートします
      • media (optional): ページの CSS メディアタイプを変更します
    • Read-only: false
  • browser_evaluate

    • タイトル:JavaScript を評価
    • 説明:ページまたは要素で JavaScript 式を評価します
    • パラメーター:
      • element (string, optional):要素とのインタラクション許可を得るために使用する、人が読んで理解できる要素の説明
      • target (string, optional):ページスナップショットから取得した対象要素の正確な参照、または一意の要素セレクター
      • function (string):() => { /* code / } または、element が指定されている場合は (element) => { / code */ }
      • filename (string, optional):結果の保存先ファイル名。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、結果はテキストとして返されます。
    • 読み取り専用:false
  • browser_file_upload

    • タイトル:ファイルをアップロード
    • 説明:1 つ以上のファイルをアップロードします
    • パラメーター:
      • paths (array, optional):アップロードするファイルの絶対パス。単一ファイルまたは複数ファイルを指定できます。省略した場合、ファイル選択ダイアログはキャンセルされます。
    • 読み取り専用:false
  • browser_fill_form

    • タイトル:フォームに入力
    • 説明:複数のフォームフィールドに入力します
    • パラメーター:
      • fields (array):入力するフィールド
    • 読み取り専用:false
  • browser_find

    • タイトル:ページスナップショット内を検索
    • 説明:現在のページのアクセシビリティスナップショットから、テキストまたは正規表現を検索します。一致したスナップショットノードとその前後数行のコンテキスト(検索スニペットのようなもの)を返します。それぞれツリーのルートからのパスの下に表示されるため、要素とその参照の特定だけが必要な場合に、スナップショット全体を取得するより低コストです。
    • パラメーター:
      • text (string, optional):ページスナップショット内で検索するプレーンテキスト(大文字と小文字を区別しない部分一致)。text または regex のいずれかを指定してください。両方は指定できません。
      • regex (string, optional):ページスナップショット内で検索する正規表現。デフォルトでは大文字と小文字を区別します。大文字と小文字を区別しない場合は、パターンをスラッシュで囲んでフラグを追加します(例:"/error/i")。text または regex のいずれかを指定してください。両方は指定できません。
      • filename (string, optional):結果を応答として返す代わりに、ファイルに保存します。相対ファイル名はワークスペースのルートを基準に解決されます。
    • 読み取り専用:true
  • browser_handle_dialog

    • タイトル:ダイアログを操作
    • 説明:ダイアログを操作します
    • パラメーター:
      • accept (boolean):ダイアログを承認するかどうか。
      • promptText (string, optional):プロンプトダイアログの場合に入力するテキスト。
    • 読み取り専用:false
  • browser_hover

    • タイトル:マウスをホバー
    • 説明:ページ上の要素にカーソルを合わせます
    • パラメーター:
      • element (string, optional):要素とのインタラクション許可を得るために使用する、人が読んで理解できる要素の説明
      • target (string):ページスナップショットから取得した対象要素の正確な参照、または一意の要素セレクター
    • 読み取り専用:false
  • browser_navigate

    • タイトル:URL に移動
    • 説明:URL に移動します
    • パラメーター:
      • url (string):移動先の URL
    • 読み取り専用:false
  • browser_navigate_back

    • タイトル:戻る
    • 説明:履歴内の前のページに戻ります
    • パラメーター:なし
    • 読み取り専用:false
  • browser_network_request

    • タイトル:ネットワークリクエストの詳細を表示
    • 説明:単一のネットワークリクエストの詳細(ヘッダーと本文)全体を返します。part が設定されている場合は、リクエストの一部のみを返します。browser_network_requests で表示された番号を使用してください。
    • パラメーター:
      • index (integer):browser_network_requests で表示されたリクエストの 1 始まりのインデックス。
      • part (string, optional):リクエストのこの部分のみを返します。詳細全体を返す場合は省略します。
      • filename (string, optional):結果の保存先ファイル名。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、出力はテキストとして返されます。
    • 読み取り専用:true
  • browser_network_requests

    • タイトル:ネットワークリクエストの一覧表示
    • 説明:ページの読み込み後に発生したネットワークリクエストを番号付きで返します。番号を指定して browser_network_request を使用すると、詳細を取得できます。
    • パラメーター:
      • static (boolean):画像、フォント、スクリプトなど、成功した静的リソースを含めるかどうかを指定します。デフォルトは false です。
      • filter (string, optional):URL がこの正規表現に一致するリクエストのみを返します(例:「/api/.*user」)。
      • filename (string, optional):ネットワークリクエストを保存するファイル名です。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、リクエストはテキストとして返されます。
    • 読み取り専用:true
  • browser_press_key

    • タイトル:キーを押す
    • 説明:キーボードのキーを押します
    • パラメーター:
      • key (string):押すキーの名前、または生成する文字です(ArrowLeft や a など)
    • 読み取り専用:false
  • browser_resize

    • タイトル:ブラウザーウィンドウのサイズ変更
    • 説明:ブラウザーウィンドウのサイズを変更します
    • パラメーター:
      • width (number):ブラウザーウィンドウの幅
      • height (number):ブラウザーウィンドウの高さ
    • 読み取り専用:false
  • browser_run_code_unsafe

    • タイトル:Playwright コードの実行(安全ではありません)
    • 説明:Playwright のコードスニペットを実行します。安全ではありません。Playwright サーバープロセス内で任意の JavaScript を実行するため、リモートコード実行と同等です。
    • パラメーター:
      • code (string, optional):実行する Playwright コードを含む JavaScript 関数です。引数として page のみが渡され、ページを操作するために使用できます。例:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, optional):指定したファイルからコードを読み込みます。相対ファイル名はワークスペースのルートを基準に解決されます。code と filename の両方が指定された場合、code は無視されます。
    • 読み取り専用:false
  • browser_select_option

    • タイトル:オプションの選択
    • 説明:ドロップダウンからオプションを選択します
    • パラメーター:
      • element (string, optional):要素を操作する許可を得るために使用する、人が理解できる要素の説明です
      • target (string):ページスナップショットにある要素の正確な参照、または一意の要素セレクターです
      • values (array):ドロップダウンで選択する値の配列です。値は 1 つでも複数でも指定できます。
    • 読み取り専用:false
  • browser_snapshot

    • タイトル:ページスナップショット
    • 説明:現在のページのアクセシビリティスナップショットを取得します。スクリーンショットよりも適しています。
    • パラメーター:
      • target (string, optional):ページスナップショットにある要素の正確な参照、または一意の要素セレクターです
      • filename (string, optional):応答に返す代わりに、スナップショットをファイルに保存します。相対ファイル名はワークスペースのルートを基準に解決されます。
      • depth (number, optional):スナップショットツリーの深さを制限します
      • boxes (boolean, optional):各要素のバウンディングボックスを [box=x,y,width,height] の形式でスナップショットに含めます。座標は CSS ピクセル単位で、ビューポートを基準とします(Element.getBoundingClientRect)
    • 読み取り専用:true
  • browser_take_screenshot

    • タイトル:スクリーンショットを撮影
    • 説明:現在のページのスクリーンショットを撮影します。スクリーンショットに基づいて操作することはできません。操作には browser_snapshot を使用してください。
    • パラメーター:
      • element (string, optional):要素とやり取りする許可を得るために使用する、人が読みやすい要素の説明
      • target (string, optional):ページスナップショット内の正確なターゲット要素の参照、または一意の要素セレクター
      • type (string, optional):スクリーンショットの画像形式。設定されていない場合は、ファイル名の拡張子から推測され、それ以外の場合は png になります。
      • filename (string, optional):スクリーンショットの保存先となるファイル名。相対ファイル名はワークスペースのルートを基準に解決されます。指定されていない場合、スクリーンショットは出力ディレクトリに page-{timestamp}.{png|jpeg|webp} として保存されます。
      • fullPage (boolean, optional):true の場合、現在表示されているビューポートではなく、スクロール可能なページ全体のスクリーンショットを撮影します。要素のスクリーンショットとは併用できません。
      • scale (string):画像の解像度スケール。"css" は CSS ピクセル単位のスクリーンショットを生成します(サイズが小さく、デバイス間で一貫性があります)。"device" はデバイスピクセルを使用して高解像度のスクリーンショットを生成します(サイズが大きく、デバイスのピクセル比を考慮します)。デフォルトは css です。
    • 読み取り専用:true
  • browser_type

    • タイトル:テキストを入力
    • 説明:編集可能な要素にテキストを入力します
    • パラメーター:
      • element (string, optional):要素とやり取りする許可を得るために使用する、人が読みやすい要素の説明
      • target (string):ページスナップショット内の正確なターゲット要素の参照、または一意の要素セレクター
      • text (string):要素に入力するテキスト
      • submit (boolean, optional):入力したテキストを送信するかどうか(その後に Enter キーを押します)
      • slowly (boolean, optional):1 文字ずつ入力するかどうか。ページ内のキーイベントハンドラーを動作させるのに便利です。デフォルトでは、テキスト全体を一度に入力します。
    • 読み取り専用:false
  • browser_wait_for

    • タイトル:待機
    • 説明:テキストの表示または非表示、あるいは指定した時間が経過するまで待機します
    • パラメーター:
      • time (number, optional):待機する時間(秒)。最大 30 秒
      • text (string, optional):表示されるまで待機するテキスト
      • textGone (string, optional):非表示になるまで待機するテキスト
    • 読み取り専用:false
タブ管理
  • browser_tabs
    • タイトル:タブを管理
    • 説明:ブラウザーのタブを一覧表示、新規作成、閉じる、または選択します。
    • パラメーター:
      • action (string):実行する操作
      • index (number, optional):閉じる/選択するタブのインデックス。閉じる際に省略すると、現在のタブが閉じられます。
      • url (string, optional):新しいタブで移動する 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, optional):返す HTTP ステータスコード(デフォルト:200)
      • body (string, optional):レスポンス本文(テキストまたは JSON 文字列)
      • contentType (string, optional):Content-Type ヘッダー(例:"application/json"、"text/html")
      • headers (array, optional):"名前: 値"形式で追加するヘッダー
      • removeHeaders (string, optional):リクエストから削除するヘッダー名のカンマ区切りリスト
    • 読み取り専用:false
  • browser_route_list

    • タイトル:ネットワークルートを一覧表示する
    • 説明:有効なネットワークルートをすべて一覧表示します
    • パラメーター:なし
    • 読み取り専用:true
  • browser_unroute

    • タイトル:ネットワークルートを削除する
    • 説明:パターンに一致するネットワークルートを削除します(パターンが指定されていない場合はすべてのルートを削除します)
    • パラメーター:
      • pattern (string, optional):ルートを解除する URL パターン(すべてのルートを削除する場合は省略します)
    • 読み取り専用:false
ストレージ(--caps=storage でオプトイン)
  • browser_cookie_clear

    • タイトル:Cookie を消去する
    • 説明:すべての Cookie を消去します
    • パラメーター:なし
    • 読み取り専用:false
  • browser_cookie_delete

    • タイトル:Cookie を削除する
    • 説明:特定の Cookie を削除します
    • パラメーター:
      • name (string):削除する Cookie の名前
    • 読み取り専用:false
  • browser_cookie_get

    • タイトル:Cookie を取得する
    • 説明:名前で特定の Cookie を取得します
    • パラメーター:
      • name (string):取得する Cookie の名前
    • 読み取り専用:true
  • browser_cookie_list

    • タイトル:Cookie を一覧表示する
    • 説明:すべての Cookie を一覧表示します(ドメイン/パスでの絞り込みは任意です)
    • パラメーター:
      • domain (string, optional):ドメインで Cookie を絞り込みます
      • path (string, optional):パスで Cookie を絞り込みます
    • 読み取り専用:true
  • browser_cookie_set

    • タイトル:Cookie を設定する
    • 説明:任意のフラグ(domain、path、expires、httpOnly、secure、sameSite)を指定して Cookie を設定します
    • パラメーター:
      • name (string):Cookie の名前
      • value (string):Cookie の値
      • domain (string, optional):Cookie のドメイン
      • path (string, optional):Cookie のパス
      • expires (number, optional):Cookie の有効期限(Unix タイムスタンプ)
      • httpOnly (boolean, optional):Cookie が HTTP 専用かどうか
      • secure (boolean, optional):Cookie がセキュアかどうか
      • sameSite (string, optional):Cookie の 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

    • タイトル:ストレージ状態を復元
    • 説明:ファイルからストレージ状態(Cookie、ローカルストレージ)を復元します。復元前に既存の Cookie とローカルストレージを消去します。
    • パラメーター:
      • filename (string):復元元となるストレージ状態ファイルのパスです。相対ファイル名はワークスペースのルートを基準に解決されます。
    • 読み取り専用:false
  • browser_storage_state

    • タイトル:ストレージ状態を保存
    • 説明:後で再利用できるよう、ストレージ状態(Cookie、ローカルストレージ)をファイルに保存します
    • パラメーター:
      • filename (string, optional):ストレージ状態の保存先となるファイル名です。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、ストレージ状態は出力ディレクトリに storage-state-{timestamp}.json として保存されます。
    • 読み取り専用:true
DevTools(--caps=devtools でオプトイン)
  • browser_annotate

    • タイトル:現在のページに注釈を付ける
    • 説明:現在のページで Playwright Dashboard を注釈モードで開き、ユーザーが注釈を描画するまで待機します。注釈付きスクリーンショット、ARIA スナップショット、注釈のリストを返します。
    • パラメーター:なし
    • 読み取り専用:true
  • browser_hide_highlight

    • タイトル:要素のハイライトを非表示
    • 説明:要素に以前追加されたハイライトオーバーレイを削除します。
    • パラメーター:
      • element (string, optional):ハイライトの追加時に使用した、人が理解できる要素の説明です。browser_highlight に渡した値と一致する必要があります。
      • target (string, optional):ページスナップショットに記載された正確な対象要素の参照、または一意の要素セレクター
    • 読み取り専用: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、任意):動画の保存先ファイル名です。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、動画は出力ディレクトリに `video-{timestamp}.webm` として保存されます。 - `size`(object、任意):動画のサイズ - `fps`(number、任意):1 秒あたりのフレーム数で表す動画のフレームレートです。デフォルトは 25 です - `cursor`(boolean、任意):各操作ポイントへ移動するアニメーション付きマウスカーソルを表示します。カーソルの移動時間を確保するため、操作の間隔は 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、任意):チャプターの説明
      • duration(number、任意):チャプターカードを表示する時間(ミリ秒)
    • 読み取り専用:true
  • browser_video_hide_actions

    • タイトル:操作オーバーレイを非表示
    • 説明:ページ上で実行された操作への注釈表示を停止します。
    • パラメーター:なし
    • 読み取り専用:true
  • browser_video_show_actions

    • タイトル:操作オーバーレイを表示
    • 説明:以降にページ上で実行される操作に、操作名を示す吹き出しを付けます。スタイルが設定されている場合は、操作ポイントを示し、対象要素を強調表示します。動画の録画やスクリーンキャスト中に便利です。
    • パラメーター:
      • duration(number、任意):各操作の注釈を画面に表示する時間(ミリ秒)です。デフォルトは 500 です。
      • position(string、任意):ページ上で操作タイトルを配置する位置です。デフォルトは top-right です。
      • cursor(string、任意):ポインター操作のカーソル装飾です。"pointer"(デフォルト)は、前の操作ポイントから次の操作ポイントまでマウスポインターをアニメーション表示します。"none" はカーソル装飾を無効にします。
      • style(object、任意):操作装飾のスタイルです。
    • 読み取り専用:true
座標ベース(--caps=vision でオプトイン)
  • browser_mouse_click_xy

    • タイトル:クリック
    • 説明:指定した位置でマウスボタンをクリックします
    • パラメーター:
      • x(number):X 座標
      • y(number):Y 座標
      • button(string、任意):クリックするボタンです。デフォルトは left です
      • clickCount(number、任意):クリック回数です。デフォルトは 1 です
      • delay(number、任意):マウスボタンを押してから離すまでの待機時間(ミリ秒)です。デフォルトは 0 です
    • 読み取り専用:false
  • browser_mouse_down

    • タイトル:マウスボタンを押す
    • 説明:マウスボタンを押します
    • パラメーター:
      • button(string、任意):押すボタンです。デフォルトは left です
    • 読み取り専用: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

    • Title: マウスボタンを離す
    • Description: マウスボタンを離します
    • Parameters:
      • button (string, optional): 押すボタン。デフォルトは左ボタンです
    • 読み取り専用: false
  • browser_mouse_wheel

    • Title: マウスホイールをスクロール
    • Description: マウスホイールをスクロールします
    • Parameters:
      • deltaX (number): X 方向の変化量
      • deltaY (number): Y 方向の変化量
    • 読み取り専用: false
PDF の生成(--caps=pdf でオプトイン)
  • browser_pdf_save
    • Title: PDF として保存
    • Description: ページを PDF として保存します
    • Parameters:
      • filename (string, optional): PDF の保存先ファイル名です。相対ファイル名はワークスペースのルートを基準に解決されます。指定しない場合、PDF は出力ディレクトリに page-{timestamp}.pdf として保存されます。
    • 読み取り専用: true
テストアサーション(--caps=testing でオプトイン)
  • browser_generate_locator

    • Title: 要素のロケーターを作成
    • Description: テストで使用する、指定した要素のロケーターを生成します
    • Parameters:
      • element (string, optional): 要素とのインタラクション許可を取得するために使用する、人が読める要素の説明
      • target (string): ページスナップショット内の正確な対象要素の参照、または一意の要素セレクター
    • 読み取り専用: true
  • browser_verify_element_visible

    • Title: 要素の表示を検証
    • Description: 要素がページに表示されていることを検証します
    • Parameters:
      • role (string): 要素の ROLE。スナップショットでは、次のように確認できます:- {ROLE} "Accessible Name":
      • accessibleName (string): 要素の ACCESSIBLE_NAME。スナップショットでは、次のように確認できます:- role "{ACCESSIBLE_NAME}"
    • 読み取り専用: false
  • browser_verify_list_visible

    • Title: リストの表示を検証
    • Description: リストがページに表示されていることを検証します
    • Parameters:
      • element (string): 人が読めるリストの説明
      • target (string): リストを示す正確な対象要素の参照
      • items (array): 検証する項目
    • 読み取り専用: false
  • browser_verify_text_visible

    • Title: テキストの表示を検証
    • Description: テキストがページに表示されていることを検証します。可能な場合は browser_verify_element_visible を優先してください。
    • Parameters:
      • text (string): 検証する TEXT。スナップショットでは、次のいずれかの形式で確認できます:- role "Accessible Name": {TEXT} または - text: {TEXT}
    • 読み取り専用: false
  • browser_verify_value

    • Title: 値を検証
    • Description: 要素の値を検証します
    • Parameters:
      • type (string): 要素の種類
      • element (string): 人が読める要素の説明
      • target (string): ページスナップショット内の正確な対象要素の参照
      • value (string): 検証する値。チェックボックスの場合は "true" または "false" を使用します。
    • 読み取り専用: false

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。