mcpField
W
Web Agent Protocol

Web Agent Protocol

ローカル
otatech.aiAI・エージェント50773 週間前に更新

Web Agent Protocol について

Web Agent Protocol(WAP)は、ブラウザー操作の記録と再生を行う Python SDK です。操作の記録と実行を分離しており、自動化フローの再利用を支援します。

主な機能

  1. 01OTA-WAP Chrome 拡張機能によるユーザー操作の収集
  2. 02生データを精密再生用または스マート再生用のリストに変換
  3. 03WAP-Replay プロトコルによる操作リストの再生
  4. 04記録した操作から MCP サーバーへの変換

活用シーン

  1. 01Web 操作の流れを再利用可能な自動化スクリプトとして記録
  2. 02記録したブラウザー操作を MCP サーバーとしてエージェントに提供
  3. 03ゴール指向のスマート再生によるWebタスクの実行

MCP 対応

WAP は記録したブラウザー操作を MCP サーバーに変換し、任意のエージェントやユーザーが再利用できるようにします。リポジトリの wap_service.py と mcp_client.py は、MCP 経由での再生手順を示しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

OTA-tool-kits

ホームページ Hugging Face コードライセンス


Web Agent Protocol

概要

Web Agent Protocol(WAP)は、ブラウザー操作を記録して再生することで、ユーザー、ウェブエージェント、ブラウザー間のシームレスな連携を実現するために設計された標準化フレームワークです。操作の記録と実行を分離することで、効率的な自動化と再利用を可能にします。WAP の Python SDK は仕様全体を実装しており、次のことを簡単に行えます。

  1. OTA‑WAP Chrome extensionを使って、ユーザー操作データを収集します。
  2. 生のイベントストリームを、完全再生またはスマート再生の操作リストに変換します。
  3. 記録した操作を、あらゆるエージェントやユーザーが再利用できる**MCPサーバーに変換**します。
  4. WAP-Replayプロトコルを使ってリストを再生し、ブラウザー操作を正確に実行します。
WAP の全体デモ

動画を見る

WAP を使用しない場合

image

WAP の記録

image

WAP の再生

image

WAP の使用例

image

セットアップ

次のコマンドで依存関係をインストールします。

conda 環境を作成します

conda create -n WAP python=3.11

conda 環境を有効にします

conda activate WAP

依存関係をインストールします

pip install -r requirements.txt

リポジトリのソースパスを設定します:

set PYTHONPATH=C:/path/to/webagentprotocol # for Windows
export PYTHONPATH=/path/to/webagentprotocol # for Linux

リポジトリのルートディレクトリに、独自の API キーを記載した .env ファイルを作成します:

OPENAI_API_KEY=sk-proj-...
DEEPSEEK_API_KEY=sk-...

記録

WAP 記録用拡張機能

Chrome ブラウザーに操作キャプチャ機能をセットアップするには、OTA‑WAP Chrome Extensionを参照してください。

データ収集サーバーの起動

次のコマンドを実行して、拡張機能からデータを収集するサーバーを起動します:

python action_collect_server.py

サーバーが起動したら、WAP Chrome extension を使ってページ上の記録を開始できます。

サーバーはデフォルトで http://localhost:4934/action-data をリッスンします。拡張機能の設定にある Host と Port が、このサーバーの設定と一致していることを確認してください。 各セッションは次の場所に保存されます:

data/YYYYMMDD/taskid/summary_event_<timestamp>.json

WAP バックエンドサーバーで受信するデータの形式の例を次に示します。

{
  "taskId": "MkCAhQsHgXn7YgaK",
  "type": "click",
  "actionTimestamp": 1746325231479,
  "eventTarget": {
    "type": "click",
    "target": "<a ota-use-interactive-target=\"1\" data-ordinal=\"3\" href=\"https://www.allrecipes.com/recipe/68925/cheesy-baked-salmon/\" data-tax-levels=\"\" data-doc-id=\"6592066\" class=\"comp mntl-card-list-card--extendable mntl-universal-card mntl-document-card mntl-card card card--no-image\" id=\"mntl-card-list-card--extendable_3-0\">\n<div class=\"loc card__top\"><div class=\"card__media mntl-image card__media universal-image__container\">...",
    "targetId": "mntl-card-list-card--extendable_3-0",
    "targetClass": "comp mntl-card-list-card--extendable mntl-universal-card mntl-document-card mntl-card card card--no-image"
  },
  "allEvents": {},
  "pageHTMLContent": "<header data-tracking-container=\"true\" data-collapsible=\"true\" class=\"comp header mntl-header mntl-header--magazine mntl-header--open-search-bar mntl-header--myr\" id=\"header_1-0\"><a data-tracking-container=\"true\" id=\"mntl-skip-to-content_1-0\" class=\"mntl-skip-to-content mntl-text-link\" rel=\"nocaes\" href=\"#main\"></a><div class=\"mntl-header__menu-top\">..."
}

リプレイリストを生成する

モードコマンド
完全リプレイ – すべてのアクションを正確に再現しますpython wap_replay/generate_exact_replay_list.py --data_dir_path data/<date>/<task_id> --output_dir_path data_processed/exact_replay
スマートリプレイ – 目標指向のステップに要約しますpython wap_replay/generate_smart_replay_list.py --data_dir_path data/<date>/<task_id> --output_dir_path data_processed/smart_replay

<task_id> は、拡張機能によって生成されたフォルダーに置き換えてください (例:em3h6UBDZykz0gnH)。

出力構造:

data_processed/smart_replay/
 ├─ subgoals_<task_id>/                     # intermediate prompts & replies
 └─ wap_smart_replay_list_<task_id>.json   # final smart replay list for the agent

data_processed/exact_replay/
 └─ wap_smart_replay_list_<task_id>.json   # final exact replay list for the agent

リプレイ

python run_replay.py --model-provider openai --wap_replay_list data_processed/exact_replay/wap_exact_replay_list_<task_id>.json --max-concurrent 1

スマートリプレイをテストするには、パスをスマートリプレイの JSON に置き換えてください。

MCP サーバーに変換する

python wap_replay\generate_mcp_server.py --task_id <task_id>

変換された MCP サーバーは mcp_servers フォルダー内に配置されます。

MCP でリプレイする

MCP でリプレイするには、2 つのターミナルが必要です。1 つ目のターミナルで

python wap_service.py

2 つ目のターミナルで

python mcp_client.py

次に、2 つ目のターミナルでプロンプトを入力します。

example: find a top rated keyboard on amazon.ca using smart replay

デスクトップアプリでリプレイする

リプレイリストを実行するためのデスクトップアプリを、すぐに使える形で提供しています。インストールは簡単で、セットアップやデプロイに追加の手順は必要ありません。詳細については、WAP Replay Tool のリリースをご覧ください。

WAP Replay Tool のデモ GIF

トラブルシューティング

ModuleNotFoundError – プロジェクトのルートからコマンドを実行するか、PYTHONPATH=. をエクスポートしてください(Windows では PYTHONPATH=. を設定してください)。

「タスク開始ファイルがありません」– 拡張機能がセッション全体を記録したことを確認してください。 ジェネレーターには、タスク開始レコードとタスク終了レコードがそれぞれ 1 つだけ必要です。

謝辞

Browser-Use: https://github.com/browser-use/browser-use

MCP: https://github.com/modelcontextprotocol/python-sdk

DOM Extension: https://github.com/kdzwinel/DOMListenerExtension

コメント

MCP は初めてですか?

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

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