劇作家のワークスペースのリモートMCPサーバーでブラウザを自動化

Important

劇作家のワークスペースのリモートモデルコンテキストプロトコル(MCP)サーバーはプレビュー段階です。 プレビュー機能はサービスレベル契約がなく、本番ワークロードには推奨されていません。 機能、制限、入手可能性は変わることがあります。

劇作家のワークスペースのリモートMCPサーバーは、AIエージェントに管理型リモートブラウザと一連のブラウザ自動化ツールを提供します。 エージェントはブラウザセッションを開き、ページを移動し、要素を見つけて操作し、ブラウザの活動を確認し、スクリーンショットを撮り、セッションを閉じることができます。 エージェント環境でPlaywrightやブラウザをインストールする必要はありません。

サーバーはStreamable HTTP上の Model Context Protocol を使用しています。 Microsoft Entra ID認証およびワークスペースアクセストークンをサポートしています。 Microsoft Foundry Agent ServiceやVisual Studio CodeなどのリモートMCPクライアントと連携します。

この記事では、次の方法について説明します。

  • Playwrightワークスペース用のMCPエンドポイントを構築します。
  • 認証はMicrosoft Entra IDまたはワークスペースのアクセストークンで行います。
  • サーバーをMicrosoft Foundry Agent ServiceまたはVisual Studio Codeに接続してください。
  • 完全なエージェント型ブラウザ自動化フローを実行してください。
  • 利用可能なブラウザツールを選択して安全にご利用ください。
  • セッションの期限切れ、タイムアウト、その他のよくあるエラーを処理してください。

Prerequisites

開始する前に、以下の項目があることを確認します:

  • アクティブなサブスクリプションを持つ Azure アカウント。
  • リモートMCPプレビューにアクセスできるPlaywrightワークスペースです。
  • ワークスペースの ID と Azure リージョン
  • ワークスペース内でブラウザセッションを作成・使用する権限を持つアイデンティティ。
  • Microsoft Foundry については、Foundry プロジェクトと、プロジェクト接続を作成し、エージェントを構成するための権限。
  • Visual Studio Codeは、GitHub CopilotアクセスとMCPサポートが有効な現行バージョンのVisual Studio Codeです。

認証方法の選択

MCPクライアントがOAuthやマネージドIDをサポートしている場合、Microsoft Entra IDを使用してください。 リモートMCPサーバーはこのリソース識別子と委任されたスコープを使用します:

Resource: https://mcp.playwright.microsoft.com
Scope: https://mcp.playwright.microsoft.com/Playwright.Mcp.Tools

サーバーはOAuth保護リソースメタデータを公開します。 Visual Studio Codeを含むOAuthディスカバリーをサポートするクライアントは、ワークスペーススコープのMCPエンドポイントから認証サーバーと必要なスコープを発見できます。 サインインしたアイデンティティは、Azureロールベースアクセス制御(RBAC)を通じてPlaywrightワークスペースへのアクセス権を持つ必要があります。

Warning

MCPクライアントがMicrosoft Entra IDで認証できない場合のみワークスペースアクセストークンを使用してください。 アクセストークンは安全性が低く、デフォルトで無効化されています。

互換性のためにワークスペースアクセストークンを作成しましょう

Microsoft Entra IDを使う場合はこのセクションを飛ばしてください。 もしワークスペースでまだアクセストークン認証が有効になっていなければ:

  1. Azure portal にサインインする
  2. Playwrightの作業スペースを開いてください。
  3. 設定の中からアクセス管理を選択します。
  4. Playwright Service Access Tokenを有効にしてください。
  5. [Generate token](トークンの生成) を選択します。
  6. 名前と有効期限を入力し、トークンを生成します。
  7. トークンをすぐにコピーします。 後で価値を取り戻すことはできません。

トークンは管理された秘密ストアか、MCPクライアントが提供する安全な認証情報施設に保存してください。 露出していた可能性がある場合は取り消して交換してください。 ワークスペースアクセストークンを作成するには 「ワークスペースアクセストークン管理」をご覧ください。

Caution

ワークスペースのアクセストークンはパスワードのように扱いましょう。 絶対にソース管理にコミットさせたり、プロンプトに含めたり、ログに書き込まないでください。

リモートMCPエンドポイントを構築する

エンドポイントは1つのワークスペースとリージョンにスコープが割り当てられています:

https://<region>.mcp.playwright.microsoft.com/playwrightworkspaces/<workspace-id>/mcp

置換してください。

  • ワークスペースの Azure リージョンに <region> を。
  • <workspace-id>ワークスペースIDはAzureポータルに表示されます。

例えば次が挙げられます。

https://eastus.mcp.playwright.microsoft.com/playwrightworkspaces/00000000-0000-0000-0000-000000000000/mcp

x-api-keyリクエストヘッダーの値は、<workspace-id>と同じワークスペースのために作成されたアクセストークンでなければなりません。 ワークスペースのリージョンのエンドポイントを使い、MCPクライアントに最も近いリージョンを使いません。

ブラウザセッションのライフサイクルを理解する

ブラウザ自動化フローは3つの段階から成り立っています。

  1. create_browser_sessionを呼び出します。 その結果、不透明な browserSessionId が含まれ、ライブビューURLが含まれていることもあります。
  2. その browserSessionId をフローで使うすべてのブラウザツールに渡してください。
  3. フローが失敗した場合でも、クリーンアップ ステップで close_browser_session を呼び出してください。

MCPのHTTPトランスポートはブラウザの状態を保持しません。 browserSessionIdは、リモートブラウザを別々のツール呼び出しで識別します。 プライベートにして、作成したワークスペースとアイデンティティでのみ使用してください。

現在のプレビュー動作には以下の制約があります:

  • セッションは作成者のものであり、他の主体と共有することはできません。
  • 1セッションの呼び出しは順番に処理されます。 同じセッションに対して同時行動を出さないでください。
  • 非アクティブなセッションは15分後にクリーンアップされます。 明示的なクリーンアップが必要です。
  • 閉鎖または期限切れのセッションは再開できません。
  • 接続が失われると、セッションは終了します。 新しいセッションを作成して継続してください。
  • 結果には liveViewUrlが含まれることもあります。 ライブビューの利用可能状況はセッションによって異なります。

Microsoft Foundry Agent Service からの接続

Microsoft Entra Agent Identityを使って、Foundryプロジェクトの管理されたIDでエージェントを認証します。 MCPツールを接続する前に、そのIDにPlaywrightワークスペースへのアクセス権を付与してください。

プロジェクト接続を作成する

  1. Microsoft Foundryポータルでプロジェクトを開いてください。
  2. プロジェクトの管理体験を開き、「 接続済みリソース」を選択してください。
  3. リモートMCPサーバー用の接続を作成します。
  4. playwright-mcp-connectionのような記述的な接続名を入力してください。
  5. 認証方法としてMicrosoft Entra Agent Identityを選択してください。
  6. audience として https://mcp.playwright.microsoft.com を入力します。
  7. 接続を保存します。

プロジェクトのマネージドアイデンティティは、ターゲットとなるPlaywrightワークスペース上でブラウザセッション操作を許可する役割を持つ必要があります。 あるプロジェクトのアイデンティティトークンを別のプロジェクトの共有シークレットとして使わないでください。

クライアントや環境でMicrosoft EntraエージェントIDが利用できない場合は、x-api-keyというキーとワークスペースアクセストークンを値としてカスタムキー接続を作成します。

リモートMCPツールの追加

  1. Foundryポータルでエージェントを作成または開設してください。

  2. リモートMCPサーバーやMCPツールを追加してください。

  3. 次の設定を使用します。

    Setting Value
    サーバーラベル playwrightWorkspace のような一意のラベル
    サーバー アドレス ワークスペーススコープ付きのリモートMCPエンドポイント
    プロジェクト接続 前に作成した Microsoft Entra エージェント ID 接続
    承認 統合を評価する際は、すべての通話で承認を求める
    許可済みツール 流れに必要な道具だけから始めましょう
  4. エージェント構成を保存します。

  5. エージェントの指示では、エージェントに1つのセッションを作成し、その browserSessionIdを再利用し、タスク終了時にセッションを終了するよう求めます。

読み取り指向のナビゲーションフローのための最小限のツール許容リストは以下の通りです:

create_browser_session
browser_navigate
browser_snapshot
browser_find
browser_take_screenshot
close_browser_session

browser_clickやbrowser_typeなどのインタラクションツールは、状況に応じてのみ追加しましょう。 デフォルトで browser_evaluate や browser_run_code を有効にしないでください。

ファウンドリーのフローのテスト

目標と清掃の必要性を明示したプロンプトを使いましょう。 例えば次が挙げられます。

Create a browser session, open https://example.com, inspect the page snapshot,
report the main heading and destination URL, and close the browser session.
Always close the session, including when a browser step fails.

エージェントが承認を求める場合:

  1. サーバーラベルが設定されたPlaywrightサーバーであることを確認してください。
  2. ツール名とすべての引数、特にURL、セレクター、テキスト、アップロードされたデータ、コードを確認しましょう。
  3. 期待される作戦のみを承認する。
  4. 最終回答がページ結果に基づいているか確認してください。
  5. close_browser_sessionという名前のフローであることを確認してください。

現在の Foundry の接続フィールド、承認の処理、SDK の例、およびクライアントの制限については、「Connect agents to MCP server endpoints」を参照してください。

Note

Foundryの非ストリーミングMCPツール呼び出しは現在、クライアントのタイムアウトが100秒です。 Playwright の一部の操作では、サービス側のタイムアウトがより長く設定されています。 ファウンドリーの業務を集中させ、長いワークフローを複数のツールコールに分割しましょう。

Visual Studio Code から接続する

Visual Studio CodeはリモートサーバーのOAuth設定を検出し、Microsoft Entra IDでサインインできます。 構成にはワークスペーススコープのエンドポイントのみが必要です。

  1. Visual Studio CodeでコマンドパレットからMCP: Open User Configurationを実行します。
  2. 以下の構成を追加し、エンドポイントのプレースホルダーを置き換えます。
{
  "servers": {
    "playwrightWorkspace": {
      "type": "http",
      "url": "https://<region>.mcp.playwright.microsoft.com/playwrightworkspaces/<workspace-id>/mcp"
    }
  }
}
  1. 設定エディタからサーバーを起動するか、 MCP: List Serversを実行します。
  2. 促されたら、PlaywrightワークスペースにアクセスできるMicrosoft Entraアカウントでサインインしてください。
  3. テナントで同意が必要な場合は、要求された Playwright.Mcp.Tools アクセス許可を承認してください。
  4. サーバーのURLと設定を確認し、そのサーバーを信頼しているか確認してください。
  5. チャットを開き、「 ツールの設定」を選択してください。 作業に必要な劇作家ツールのみを有効にしてください。
  6. 前のFoundryセクションの例示プロンプトを実行してください。
  7. ツールの確認を確認し、セッション終了時に終了したことを確認します。

個人接続の場合はユーザー設定を使いましょう。 エンドポイントのみを含むワークスペース構成は共有可能です。 Visual Studio CodeはOAuth認証情報を安全にキャッシュし、再接続時に再利用できます。

クライアント環境で Microsoft Entra 認証を利用できない場合は、x-api-keyで説明されているように、保護された入力を使用して ヘッダーを構成してください。 ワークスペースのアクセストークン値を直接 mcp.jsonに入れないでください。

構成場所、秘密入力、サーバー信頼、診断について、Visual Studio CodeのMCPサーバーの追加と管理およびMCP設定参照を参照してください。

エージェント型自動化フローの設計

ページ状態を確認せずに長いシーケンスを実行するようエージェントに求めるのではなく、観察・行動・検証ループを使いましょう。

  1. 作成:create_browser_sessionを呼び、その browserSessionId を保持しましょう。
  2. ナビゲーション: 明確で承認されたURLを browser_navigate に電話してください。
  3. 注: 絞り込んだ検索には browser_find、より広範なアクセシビリティ表示には browser_snapshot を使用します。
  4. 行動: スナップショット参照または一意セレクターとインタラクションツールを組み合わせて使用します。
  5. 待ってください: 期待されるテキスト、消えるテキスト、または有制限の遅延のために browser_wait_for に電話してください。
  6. 確認: 別のスナップショットをキャプチャするか、コンソールやネットワークの活動を点検してください。
  7. 分岐の処理: ダイアログの処理、タブの切り替え、ページの状態が必要な場合のみファイルのアップロード。
  8. 証拠の収集: 視覚的な結果が役立つ場合は browser_take_screenshot に連絡してください。 アクションターゲットを選ぶ際にスクリーンショットは使わないでください。
  9. クリーンアップ: finally スタイルのクリーンアップ パスで close_browser_session を呼び出します。

安定した行動標的を選ぶ

browser_snapshotまたはbrowser_findからの推薦状を優先してください。 これらはアクセス可能なページ要素を記述し、実装固有のマークアップへの依存を減らします。 安定したスナップショット参照がない場合は、ユニークなセレクターを使いましょう。

ナビゲーション後やページ変更の後、スナップショットをリフレッシュしてください。 以前に返されたターゲットは、ページが再レンダリングされると無効になることがあります。

会話を安全に処理する

アクションはすでにページの状態を変更した後に、 dialog-opened 結果を返すこともあります。 この結果は通常のアクション失敗ではありません。

  1. 元の行動を繰り返さないでください。
  2. false を accept または browser_handle_dialog に設定して、true を呼び出します。
  3. プロンプトダイアログの場合は、 promptText を受け入れる時のみ含めてください。
  4. 続ける前にもう一度ページをよく見てください。

曖昧な故障の処理

タイムアウトや通話切断が行動に効果がなかった証拠にはなりません。 クリック、フォーム送信、アップロード、コード実行などの冪等ではない操作を再試す前に:

  1. セッションがまだ空けていれば、 browser_snapshot、 browser_find、または他の観察ツールに連絡してください。
  2. 期待される状態の変化が発生したかどうかを判断します。
  3. 繰り返しても安全な場合だけ再挑戦してください。
  4. セッションが終了した場合は、新しいセッションを作成し、既知のアプリケーション状態から再起動します。

ツール リファレンス

すべてのブラウザスコープツールは browserSessionIdが必要です。 ここに示されている文字列およびコレクションの境界は現在のプレビュー制限です。

セッションツール

ツール Parameters Use
create_browser_session None リモートブラウザを作成し、 browserSessionId とオプションの liveViewUrlを返します。
close_browser_session browserSessionId リモートブラウザセッションを閉じます。 片付けの時に呼び出せ。
ツール Parameters 使用と重要な行動
browser_navigate browserSessionId、url URL に移動します。 URLは最大16 KiBの文字を含めることができます。
browser_navigate_back browserSessionId ページ履歴の前のエントリーへナビゲートします。
browser_snapshot browserSessionId; 任意の target、depth、boxes アクセシビリティのスナップショットを返します。 targetはスナップショット参照または一意セレクターを受け入れます。 Depth は1~100です。 Boxes サポートがあればバウンディングボックスデータも含まれます。 スナップショットテキストは64 KiBで切り詰められ、切り詰められたとマークされます。
browser_find browserSessionId、text アクセシビリティスナップショットに対して大文字と小文字を区別しない部分文字列検索を実行し、一致するスニペットを返します。 Text 最大4,096文字まで含めることができます。
browser_wait_for browserSessionId; text、textGone、または time のいずれか 1 つのみ テキストを待つ、テキストが消えるのを待つ、0〜180秒待つ。
browser_take_screenshot browserSessionId;オプションの target、 type、 fullPage、 scale インラインのPNGまたはJPEGを返します。 Type が png または jpeg。 FullPage デフォルトのビューポートではなく、ページ全体をキャプチャします。 Scale が css または device。 ターゲットを選ぶには画像ではなくスナップショットを使いましょう。
browser_console_messages browserSessionId アクティブなページでキャプチャされた、件数が制限されたコンソールメッセージを返します。
browser_network_requests browserSessionId アクティブなページの限定ネットワークリクエスト情報を返します。

対話ツール

ツール Parameters 使用と重要な行動
browser_click browserSessionId、 target;オプション button、 doubleClick、 modifiers ターゲットをクリックする。 Button は、 left、 right、または middle です。 Alt、Control、ControlOrMeta、Meta、Shiftから最大5つの修正を受け付けます。 タイムアウトしたクリックを盲目的にやり直さないでください。
browser_type browserSessionId、 target、 text;オプション submit、 slowly 編集可能な要素にテキストを入力します。 Submit その後、エンターキーを押してください。 Slowly を順番に入力します。
browser_fill_form browserSessionId、fields 1〜50フィールドを埋めます。 各フィールドには、 target、文字列またはブール value、そしてオプションの name と typeが含まれています。 失敗すると、以前のフィールドが更新されたままになることがあります。
browser_press_key browserSessionId、key Enter、ArrowLeft、または Control+C などの Playwright のキー記述子を押します。
browser_select_option browserSessionId、target、values 1から100のオプション値を選択します。 各値は最大4,096文字まで含めることができます。
browser_hover browserSessionId、target ターゲットにカーソルを合わせると、メニューやツールチップが表示されます。
browser_handle_dialog browserSessionId、 accept;任意 promptText 現在ブロック中のブラウザダイアログを承認または終了します。
browser_drag browserSessionId、startTarget、endTarget あるターゲットから別のターゲットへドラッグします。 両方のターゲットはアクティブなページで解決しなければなりません。

タブ、ファイル、コードツール

ツール Parameters 使用と重要な行動
browser_tabs browserSessionId、 action、任意 index、 url タブのリスト、作成、選択、閉じる。 action list、new、select、またはcloseです。 index selectには必要です。closeの場合、省略はアクティブなタブを意味します。インデックスはゼロベースです。
browser_file_upload browserSessionId、 files;任意 target ターゲットファイル入力または保留中のファイル選択器を通じて、1〜20個のbase64エンコードファイルをアップロードします。 ファイル アップロード制限を参照してください。
browser_evaluate browserSessionId、 function;任意 target ページ内またはターゲットに対してJavaScript関数を評価します。 ページの状態を読み取ったり変更したりできます。
browser_run_code browserSessionId、code ページにアクセスできる Playwright の JavaScript 関数本体を実行します。 このツールは最高の特権を持ち、任意の副作用を引き起こすことがあります。

各自動化ワークフローの実行後、アクティブなclose_browser_sessionを使ってbrowserSessionIdを呼び出してください。

フォームフィールドの形状

各 browser_fill_form 場は次の形状をしています:

{
  "target": "<snapshot-reference-or-selector>",
  "value": "<string-or-boolean>",
  "name": "<optional-display-name>",
  "type": "<optional-field-type>"
}

フィールドの文字列値は最大100 KiBの文字を含めます。 name 最大1,024文字まで、 type 最大128文字まで収録可能です。

ファイルアップロード形状

各 browser_file_upload ファイルは以下の形状を使用しています:

{
  "name": "example.txt",
  "data": "SGVsbG8sIHdvcmxkIQ==",
  "mimeType": "text/plain"
}

mimeType は省略可能であり、既定値は application/octet-stream です。

ファイルアップロードの制限

  • 1つのツールコールで1〜20ファイル。
  • 各ファイルあたり最大10 MiBのデコードサイズ。
  • 最大50 MiBの合計復号サイズ。
  • 最大4,096文字のファイル名。
  • 最大1,024文字のMIMEタイプ。
  • 有効なbase64データが必要です。

JavaScriptツール形状

browser_evaluateに対して、関数式を渡します:

() => document.title

targetを提供すると、関数はマッチング要素を受け取ります:

element => element.textContent

browser_run_codeの場合、pageパラメータがPlaywrightページである非同期関数の本体を形成する文をパスします。 JSONで直列化可能なデータのみを返し、インライン応答の制限内に収めてください。

Warning

browser_evaluate また、 browser_run_code ページデータの公開、アプリケーションの状態の変更、ネットワークリクエストの送信が可能です。 browser_run_code これは、隔離されたブラウザ環境内で任意のコード実行に相当します。 レビューされたシナリオで必要とされない限り、これらのツールは無効にしてください。 コードを通じて秘密情報を渡したり、信頼できないモデルに機密のページデータを返したりしないでください。

限界と現在の挙動

Limit 現在の値 推奨されるアクション
非アクティブなブラウザセッション 約 15 分 セッションは明示的に終了し、期限切れ後に新しいセッションを作成しましょう。
待機を依頼しました 180 秒 固定遅延よりも州ごとの待機を優先してください。
サービスコマンドタイムアウト 3分30秒 操作をやり直す前にページの状態を確認してください。 クライアントのタイムアウトは短くすることができます。
インライン応答 1 メビバイト (MiB) 次のステップに必要なデータだけを返すかリクエストしてください。
アクセシビリティスナップショットテキスト 64 KiB 出力が切り詰められた場合は、 browser_find、ターゲットサブツリー、またはより小さな深さを使いましょう。
インラインスクリーンショット base64 データ 768 KiB JPEGやビューポートキャプチャ、スクリーンショットが大きすぎる場合は要素ターゲットを使ってください。
URL パラメーター 16人のKiBキャラクター 有効な絶対的な宛先URLを使用してください。
ターゲットまたはセレクター 4,096 文字 簡潔なスナップショット参照やユニークなセレクターを好みます。
JavaScript関数またはコード 1 MiB分の文字 コードは小さく保ち、レビュー済みにし、スコープを限定しましょう。
ブラウザセッションID 256 文字 返された値を create_browser_session のまま渡します。

回答はインラインで返されます。 このプレビューでは、MCPリソースや大規模なスナップショット、スクリーンショット、ダウンロードのための永続的なアーティファクトストレージを公開しません。 ブラウザ、オペレーティングシステム、ビューポート、ロケール、ユーザーエージェントのオーバーライドはセッション作成パラメータとして公開されません。

エラー処理

ツールエラーには、安定したエラーコード、顧客安全メッセージ、 retryable 値、相関情報が含まれます。 返された retryable 値を主信号として使い、手術の副作用も含めて使用します。

エラー コード Meaning Action
Unauthorized アクセストークンが欠落、無効、期限切れ、無効化、または他のワークスペースに割り当てられています。 x-api-key、ワークスペースのアクセストークン有効化、トークンの有効期限、エンドポイントワークスペースIDを検証します。 同じ無効な認証情報で再挑戦しないでください。
Forbidden トークン所有者が許可を持たない場合、または呼び出し者がセッションを所有していない場合もあります。 ワークスペースアクセスを確認し、セッション中ずっと同じ認証情報を使いましょう。
SessionNotFound セッションは存在しません。 新しいセッションを作成します。
SessionClosed セッションは終了しました。 作業が増えたら新しいセッションを作成しましょう。
SessionExpired セッションまたはそのブラウザ接続はもはや利用できません。 新しいセッションを作成し、既知の状態から再開します。
BrowserUnavailable ブラウザの容量、つまりリモートブラウザが一時的に利用できない場合もあります。 もしこれが真実なら、遅延後にセッション作成を再試行してくださいretryable
DependencyUnavailable 必須サービスが一時的に利用できません。 もしそれが正しければ指数的なバックオフで再挑戦 retryable 。
InvalidArgument パラメータが欠落している、形状が不自然であったり、互いに相容れなかったり、その範囲外にいる場合。 議論を訂正してください。 変更せずに再挑戦しないでください。
UnsupportedOperation 要求された操作はサポートされていません。 サポートされたツールや引数値を使いましょう。
OutputTooLarge その結果、インライン応答限界を超えています。 より小さなスナップショットや結果をリクエストしてください。 スクリーンショットはJPEGや小さなターゲットを使いましょう。
ToolTimeout この操作はサービスの制限時間を超過しました。 セッションがまだ空いている場合は、再挑戦の有無を判断する前にページを観察してください。
NavigationFailed ナビゲーションが完了しなかった。 URLやネットワークのアクセシビリティ、ページの動作を確認しましょう。 再挑戦する前に現在のページを確認してください。
ElementNotFound ターゲットは元素と一致しなかった。 スナップショットを更新し、現在の参照または一意セレクターを使いましょう。
ActionFailed ページがアクションを拒否するか完了できなかった。 ページの状態を確認してください。 その要素は非表示、無効化、切り離し、ダイアログによってブロックされることがあります。
Busy ブラウザは別の操作を完了するか、以前の応答を消耗させています。 少し待ってから、その操作を繰り返しても安全な場合にのみ再試行してください。
QuotaExceeded ワークスペースまたはアカウントはブラウザセッションのクォータに達しました。 未使用のセッションを閉じ、ワークスペースのノルマを見直しましょう。
RateLimited リクエストがあまりにも早く届いています。 指数的バックオフを使い、並行性を減らしましょう。
InternalError サービス中に予期せぬエラーが発生しました。 指示があった時のみ再挑戦してください。 サポートに連絡する際は、相関IDを必ず記載してください。

一般的な問題のトラブルシューティング

MCPクライアントが「Unauthorized 」を報告します

  • ワークスペースでアクセストークン認証が有効になっているか確認してください。
  • トークンが期限切れや取り消しになっていないか確認してください。
  • x-api-key値として生のトークン価値を使います。 Bearerプレフィックスは付けないでください。
  • トークンとエンドポイントが同じワークスペースに属しているか確認してください。
  • もし秘密を誤ってコピーした場合は、ポータルから既存の値を取得できないので新しいトークンを作成してください。

MCPのクライアントは禁止されていると報告しています

  • トークンに関連付けられたユーザーがまだブラウザセッションを作成する権限を持っているか確認してください。
  • 同じプロジェクト接続やトークンで、1つのブラウザセッション内のすべての通話に使います。
  • ユーザー間、異なる認証情報を使うエージェント間、ワークスペース間で browserSessionId を渡さないでください。

道具は発見されません

  • /playwrightworkspaces/<workspace-id>/mcpを含む全エンドポイントを確認してください。
  • エンドポイントリージョンがワークスペースリージョンと一致しているか確認してください。
  • クライアントがHTTP MCPトランスポートを使用し、ディスカバリーやツール呼び出し時に x-api-key を送信していることを確認しましょう。
  • Visual Studio CodeでMCP: List Serversを実行し、サーバーを選択してから「出力表示」を選択します。
  • エンドポイントを変更した後は、MCP接続を再起動するかキャッシュツールをリセットしてください。

担当者はブラウザツールを呼びかけません

  • エージェントに明確に設定済みのPlaywright MCPサーバーを使うよう伝えてください。
  • 必要なツールがクライアントの有効または許可ツールリストに表示されているかを確認してください。
  • エージェント命令に「作成-使用-閉じ」ライフサイクルを含めること。
  • 最初のタスクは集中し、ナビゲーション目標と期待される結果を一つに設定しましょう。

ターゲットは動作しなくなりました

ページがナビゲートされたり、再レンダリングされたりしたのかもしれません。 再度 browser_snapshot か browser_find に電話して、現在の参考文献を使ってください。 生成されたクラスに紐づくセレクタやドキュメント構造の変更は避けましょう。

ツールがタイムアウトしました

状態を変えずにアクションが失敗したと決めつけないでください。 セッションがアクティブであれば、再試行前に現在のページを確認してください。 セッションが期限切れの場合は、新しいセッションを作成し、アプリケーションを既知の状態に戻します。

スクリーンショットは大きすぎます

type: "jpeg"を使うか、ビューポートのみをキャプチャするか、要素レベルのスクリーンショットのターゲットを用意してください。 視覚的証拠を保存するのではなく、要素を特定することが目的の場合に browser_snapshot を活用しましょう。

フロー中にセッションが終了しました

新しいブラウザセッションを作成します。 ブラウザ接続の喪失、サービスオーナーの喪失、明示的な終了、またはアイドルクリーンアップの後はセッションが再接続されません。 既知のURLとアプリケーション状態から再スタートできるようフローを設計してください。

セキュリティに関する推奨事項

  • エージェントのタスクに必要なツールだけを許可してください。
  • 状態変更、ファイル、コードの各ツールでは、人間の承認を必須にしてください。
  • ページコンテンツ、アクセシビリティスナップショット、コンソール出力、ネットワーク出力は信頼できないものとして扱いましょう。 ページにはプロンプトインジェクション命令を含めることができます。
  • システム命令とページ由来のテキストは分けて保管してください。 ページの内容がセキュリティポリシーや承認ルールを変えないようにしましょう。
  • 機密アプリケーションの自動化時に、受信先URLを許可リストと照らして検証してください。
  • ツールコールを承認する前に、テキスト、セレクター、ファイルの内容、コードを必ず確認してください。
  • プロンプト、ソースファイル、スクリーンショット、アップロード済みファイル、JavaScriptのスニペットでアクセストークンを使わないでください。
  • 短命なトークンを使い、定期的にローテーションし、未使用の接続は取り消しましょう。
  • 各トラスト境界に専用のワークスペースと最小権限IDを使いましょう。
  • 承認やツール名を監査用に記録しつつ、認証情報、アップロードされたコンテンツ、機密ページデータは記録しないでください。

地域ごとの提供状況

劇作家のワークスペースは以下のAzureリージョンで利用可能です:

リージョン Available
オーストラリア東部 ✅ はい
東アジア ✅ はい
米国東部 ✅ はい
東日本 ✅ はい
スイス北部 ✅ はい
西ヨーロッパ ✅ はい
米国西部 3 ✅ はい