mcpField
P
Pagerunner — The Browser Layer That Learns

Pagerunner — The Browser Layer That Learns

ローカル
github.comブラウザ自動化314 週間前に更新

Pagerunner — The Browser Layer That Learns について

Pagerunnerは、既存のChromeプロファイルを使って実ブラウザーを操作する、エージェント向けの自動化MCPサーバーです。セッション状態の保存、サイトアダプター、任意の個人情報匿名化を備えています。

主な機能

  1. 01ページ移動と操作の自動化
  2. 02既存のChromeプロファイルとセッションの利用
  3. 03スナップショットとチェックポイントの保存・復元
  4. 04保存済みアダプターによるサイトAPI呼び出し
  5. 05返却コンテンツ内の個人情報の匿名化

活用シーン

  1. 01ログイン済みブラウザーワークフローの自動化
  2. 02ブラウザーセッションをまたいだ作業の再開
  3. 03エージェントの結果に含まれる個人情報の低減

MCP 対応

Pagerunnerは標準入力/出力を通じて、ブラウザーセッションと操作機能をMCPツールとして公開します。MCPクライアントはChromeの起動または接続、ページの確認と操作、保存状態の管理を行えます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"enreign-pagerunner": {
"command": "npx",
"args": [
"-y",
"pagerunner"
]
}
}
}
起動コマンドnpx -y pagerunner

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmpagerunner0.8.0

ツール

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

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

詳細

Pagerunner

CI Release License: MIT Rust 1.91+

Chrome ブラウザー自動化用の MCP サーバーです。Claude(または任意の MCP クライアント)を実際の Chrome セッションに接続し、Cookie、保存済みパスワード、履歴を含む既存のプロフィールを使用します。

警告

Pagerunner は開発初期段階のソフトウェアです(v0.x)。リリース間で API や設定形式が変更される可能性があります。

目次

仕組み

Pagerunner は CDP(Chrome DevTools Protocol)を使用して既存のユーザープロフィールで Chrome を起動し、標準入力/標準出力経由で MCP サーバーとして公開します。これにより Claude は、実行中のブラウザーでページの移動、クリック、入力、スクリーンショットの撮影、JavaScript の実行を行えます。

セットアップ

1. インストール

# Option A — Homebrew (easiest on macOS/Linux):
brew tap enreign/pagerunner
brew install pagerunner

# Option B — Cargo (if you have Rust):
cargo install pagerunner
# Note: if you get "requires rustc 1.91+" despite having a newer Rust installed,
# Homebrew's Rust may be shadowing rustup's. Fix: export PATH="$HOME/.cargo/bin:$PATH"

# Option C — Pre-built binary (no dependencies):

# macOS arm64 (Apple Silicon):
curl -L https://github.com/Enreign/pagerunner/releases/latest/download/pagerunner-macos-arm64 \
  -o pagerunner && chmod +x pagerunner

# macOS x86_64 (Intel):
curl -L https://github.com/Enreign/pagerunner/releases/latest/download/pagerunner-macos-x86_64 \
  -o pagerunner && chmod +x pagerunner

# Linux x86_64:
curl -L https://github.com/Enreign/pagerunner/releases/latest/download/pagerunner-linux-x86_64 \
  -o pagerunner && chmod +x pagerunner

# macOS: if Gatekeeper blocks the binary on first run:
xattr -d com.apple.quarantine pagerunner

# Option B — install via cargo (requires Rust):
cargo install --git https://github.com/Enreign/pagerunner --locked

# Option C — build locally:
cargo build --release

2. Chrome プロフィールを自動検出

pagerunner init

Chrome のプロフィール一覧を読み取り、~/.pagerunner/config.toml に自動的に書き込みます。 pagerunner status を実行して確認してください。

または、~/.pagerunner/config.toml を手動で作成してください。形式については pagerunner example-config を参照してください。

3. MCP サーバーとして登録

# If installed (Options A or B — binary is in PATH):
claude mcp add pagerunner "$(which pagerunner)" mcp

# If built locally (Option C):
claude mcp add pagerunner "$(pwd)/target/release/pagerunner" mcp

Claude Desktop の場合は、~/Library/Application Support/Claude/claude_desktop_config.json に追加してください。

{
  "mcpServers": {
    "pagerunner": {
      "command": "/absolute/path/to/pagerunner",
      "args": ["mcp"]
    }
  }
}

注: mcp サブコマンドが必要です。mcp を指定せず、バイナリのパスだけを登録しても動作しません。

注: Chrome はプロフィールディレクトリをロックします。Pagerunner セッションでプロフィールを開く前に、そのプロフィールを使用している Chrome ウィンドウをすべて閉じてください。

4. プロジェクトでセットアップ(任意)

CLAUDE.md または AGENTS.md がある任意のプロジェクトディレクトリで、次を実行します。

pagerunner init

Pagerunner はすぐに使える使用方法のスニペットを表示し、プロジェクトファイルへの自動追記を提案します。スクリプトから実行する場合は pagerunner init --json を使用してください。

5. (任意、--features ner ビルドのみ)NER モデルをダウンロード

pagerunner download-model   # ~65MB, enables PERSON/ORG name detection

プロジェクトでの使用

エージェントへの指示の例をプロジェクトのルートにコピーして、Claude(または任意のエージェント)が Pagerunner の使い方をすぐに把握できるようにします。

# Claude Code projects:
curl -sL https://raw.githubusercontent.com/Enreign/pagerunner/main/docs/examples/CLAUDE.md -o CLAUDE.md

# Other agents (Gemini, Codex, etc.):
curl -sL https://raw.githubusercontent.com/Enreign/pagerunner/main/docs/examples/AGENTS.md -o AGENTS.md

または、内容を手動で貼り付け、プロジェクト固有の指示を追加してください。

Claude Code での Pagerunner の使用

4 つの異なるユースケースに合わせた包括的なガイダンス、ワークフロー、例を利用するには、Pagerunner Skill をインストールしてください。

# Install the skill (once available in skills.sh registry)
claude skill install pagerunner-skill

スキルリポジトリを直接確認することもできます:pagerunner-skill

スキルには次の内容が含まれています。

  • 4 つの ICP 向けクイックスタート: 個人開発者、パワーユーザー、セキュリティ重視、サーバーサイド
  • 11 種類のワークフローパターン: フォーム入力、認証、スクロール、複数ステップの操作
  • 完全なリファレンス: 38 個すべてのツールとパラメーター、使用例
  • セキュリティガイド: PII の匿名化、監査ログ、暗号化
  • 実例: エラー処理を含むエンドツーエンドのワークフロー
  • トラブルシューティング: よくある問題と解決策

まずスキルの SKILL.md を確認して、ユースケースとクイックスタートの手順を見つけてください。

ツール

セッションとタブ
ツール説明
list_profiles設定済みの Chrome プロファイルを一覧表示します
open_sessionプロファイルで Chrome を起動し、session_id を返します
attach_session--remote-debugging-port を使用して既存の Chrome インスタンスに接続します
close_sessionChrome セッションを終了します
list_sessionsアクティブなセッションを一覧表示します
list_tabsセッション内の開いているタブを一覧表示します
new_tab新しいタブを開き、target_id を返します
close_tab指定したタブを閉じます
ナビゲーションとコンテンツ
ツール説明
navigateタブを URL に移動します
wait_forCSS セレクター、URL パターン、または指定した時間を待ちます
get_contentタブに表示されているテキストコンテンツを取得します
screenshotタブを PNG としてキャプチャします(一時ファイルへの保存、またはインライン base64)
evaluateタブ内で JavaScript を実行し、結果を返します
操作
ツール説明
clickCSS セレクターで要素をクリックします
type_textフォーカスされている要素、または指定したセレクターにテキストを入力します
fillReact/Vue/Angular の合成イベントを使って入力値を設定します
select値を指定してドロップダウンのオプションを選択します
scrollページをピクセル単位でスクロールするか、要素が表示領域に入るまでスクロールします
スナップショットとタブの状態
ツール説明
save_snapshot現在のページの Cookie/localStorage を暗号化 DB に保存します
restore_snapshot保存済みのスナップショットを現在のタブに復元します
list_snapshots保存済みのスナップショットを一覧表示します(すべてのプロファイルを対象にすることもできます)
delete_snapshot保存済みのスナップショットを削除します
save_tab_state開いているすべてのタブの URL を DB に保存します
restore_tab_state以前に保存したタブを再度開きます
キーと値のストア
ツール説明
kv_set値を永続的な名前空間に保存します
kv_getキーを指定して値を取得します
kv_deleteキーを削除します
kv_list名前空間内のキーを一覧表示します(プレフィックスによる絞り込みも指定できます)
kv_clear名前空間内のすべてのキーを削除します
ネットワークとコンソール
ツール説明
get_network_logセッションでキャプチャされた HTTP リクエストを確認します
get_console_logタブの JavaScript コンソール出力をキャプチャします
サイトインテリジェンス
ツール説明
get_site_knowledgePagerunner がサイトについて学習した内容(アダプター、認証トークン、セレクターの状態)を確認します
register_adapterサイトへの直接 API 呼び出し用の JS アダプターを保存します
call_site_api保存済みのアダプターをブラウザータブ内で実行します
generate_adapterClaude を使ってネットワークトラフィックから JS アダプターを自動生成します(ANTHROPIC_API_KEY が必要です)
セッションのチェックポイント
ツール説明
save_session_checkpointセッション内のすべてのタブの状態(URL とスクロール位置)を保存します
restore_session_checkpoint保存済みのすべてのタブを再度開き、保存された URL に移動します
list_session_checkpointsプロファイルの保存済みチェックポイントを一覧表示します
delete_session_checkpointID を指定してチェックポイントを削除します

サイトインテリジェンス

Pagerunner は使用するにつれてサイトについて学習し、セッションの認証情報を使ってサイト API を直接呼び出せます。別途認証を設定する必要はありません。

アダプターは暗号化 DB に保存され、ブラウザータブ内で実行される短い JS 関数です。サイトが公開している API(通常はウェブ UI が使用するものと同じ API)の呼び出しに使用します。

register_adapter(origin="https://github.com", name="list-issues",
  description="List open issues for a repo",
  js_code="async ({owner, repo}) => { const r = await fetch(...); return r.json() }")

call_site_api(session_id, target_id, origin="https://github.com",
  name="list-issues", params={"owner": "Enreign", "repo": "pagerunner"})

GitHub、Linear、Jira、Notion、Gmail 用のアダプターが標準で組み込まれています。

認証トークンの検出 — ネットワークトラフィックから検出された Bearer トークン、API キー、セッション Cookie は、暗号化されたサイトの保管庫に保存されます。アダプターは credentials 引数を通じて自動的にこれらを利用できます。

セレクターの安定性 — click、fill、select はセレクターごとの成功率/失敗率を記録します。5 回以上使用したセレクターで失敗率が 30% を超えると、ツールの応答に脆弱性の警告が表示されます。

セッションのチェックポイント

開いているすべてのタブの URL とスクロール位置を含む完全なブラウザー状態を保存し、今後のセッションで復元できます。

save_session_checkpoint(session_id, name="before-review")
  → checkpoint_id: cp_abc123

restore_session_checkpoint(session_id, checkpoint_id="cp_abc123")
  → reopens all saved tabs at their stored URLs

チェックポイントは暗号化された DB に保存され、プロファイルごとに管理されます。

macOS メニューバーアプリ

ネイティブの Swift コンパニオンアプリが apps/menubar/ にあります。メニューバーからすべての Chrome プロファイル、アクティブなセッション、開いているタブ、デーモンの状態を確認できます。ターミナルは不要です。

機能:

  • ワンクリックでセッションを開閉し、チェックポイントを保存
  • エージェントプロファイルを、専用セクションに異なる CPU アイコンで表示
  • プロファイルの追加フロー:未設定の Chrome プロファイルを検出するか、新しいエージェントプロファイルを作成
  • macOS ネイティブ通知:デーモンの停止、セッションのクラッシュ、チェックポイントの保存
  • グローバルホットキーと Sparkle 2.x による自動更新

ビルドと実行:

pagerunner daemon &
cd apps/menubar
bash scripts/package.sh   # builds + bundles into scripts/Pagerunner.app
open scripts/Pagerunner.app

匿名化(PII 保護)

open_session に anonymize: true を渡すと、get_content と evaluate のすべての結果から PII が除去されてから Claude に渡されます。匿名化モードではスクリーンショットがブロックされます。

{ "tool": "open_session", "profile": "personal", "anonymize": true }

デフォルトで検出される項目: EMAIL、PHONE、CREDIT_CARD、IBAN、SSN、IP
--features ner でビルドした場合: ローカルの ONNX モデルを使って PERSON と ORG の名前も検出します

モード
  • tokenize(デフォルト):PII を [EMAIL:a3f9b2] のようなトークンに置き換えます。トークンを fill/type_text に渡すと、Pagerunner が DOM に書き込む前にトークンを元に戻します。
  • redact:一方向に [EMAIL] へ置き換えます。ボールトは使用せず、トークンを元に戻すこともできません。
NER のセットアップ(PERSON と ORG の名前検出)
# 1. Build with NER support:
cargo build --release --features ner

# 2. Download the model (one-time, ~65MB):
pagerunner download-model

~/.pagerunner/config.toml でグローバルに無効化します:

[ner]
enabled = false

ステルスモード

open_session に stealth: true を渡すと、検出対策が有効になります。自動化のシグナルを隠し、navigator.webdriver を偽装するスクリプトを挿入し、入力の間に人間らしい遅延を加えます。

{ "tool": "open_session", "profile": "personal", "stealth": true }

セッションの例

open_session(profile="personal")          → session_id: abc123
new_tab(session_id, url="https://...")    → target_id: TAB456
get_content(session_id, target_id)        → "page text..."
click(session_id, target_id, "#button")
type_text(session_id, target_id, "hello", selector="#input")
screenshot(session_id, target_id)         → "data:image/png;base64,..."
close_session(session_id)

デーモン(複数の Claude Code セッション/永続状態)

デフォルトでは、各 pagerunner mcp プロセスがデータベースを直接開くため、同時に実行できるのは 1 つだけです。2 つ目の Claude Code ウィンドウで Pagerunner を開くと、DB ロックエラーが発生します。

デーモンを一度起動すれば、任意の数のセッション間で状態を共有できます:

pagerunner daemon &

各 pagerunner mcp インスタンスはデーモンを自動的に検出し、Unix ソケット(~/.pagerunner/daemon.sock)経由で接続して、すべてのツール呼び出しをデーモン経由で中継します。すべての Claude Code ウィンドウで、同じ開いているブラウザー、KV ストア、スナップショットを共有できます。

停止するには:

pkill -f "pagerunner daemon"

バックグラウンドサービスとしてインストール(ログイン時に起動し、クラッシュ時に再起動):

./scripts/install-launchd.sh

スクリプトはインストール済みの pagerunner バイナリを自動的に検出します。ログは ~/.pagerunner/daemon.log に保存されます。

注: デーモンサービスのインストール後は、Claude Code を再起動してください。次回の起動時には、デーモンが先に起動し(launchd 経由)、MCP サーバーがプロキシモードで接続します。デーモンのインストール時に Claude Code がすでに実行中の場合、再起動が 2 回必要です。1 回目で launchd にデーモンを起動させ、2 回目で MCP サーバーをデーモンに再接続します。

スナップショット

認証済みのブラウザー状態を暗号化されたローカル DB に保存します:

save_snapshot(session_id, target_id, origin="https://github.com")

今後のセッションで復元できます:

restore_snapshot(session_id, target_id, origin="https://github.com")

スナップショットは AES-256-GCM で暗号化されます。キーは macOS Keychain の pagerunner / db_key に保存され、平文でディスクに書き込まれることはありません。

法的事項と責任ある利用

Pagerunner は、お客様が所有するブラウザーを、お客様自身の認証情報を使って自動化します。自動化するウェブサイトの利用規約、適用されるデータ保護法(GDPR、CCPA)、および認可されたアクセスに関する要件(CFAA および同等の法律)を遵守する責任はお客様にあります。

他者の個人データを処理するワークフローでは、anonymize: true の使用を推奨します。

法的免責事項、責任の制限、責任ある利用に関する義務の全文は、DISCLAIMER.md をご覧ください。


このプロジェクトがお役に立った場合は、リポジトリにスターを付けてください。ほかの人が見つけやすくなります。

コメント

MCP は初めてですか?

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

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