
tacosyhorchata/pilot
Browser automationこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
Chrome 拡張 + MCP サーバー — AI エージェントは、実際のブラウザーのタブを制御します
概要
ネイティブのPlaywright-backedブラウザのセッションはデフォルトで行われます。 QA自動化に必要なChrome拡張機能はありません。 - (デフォルト):独立したPlaywrightブラウザのコンテキスト。 これは、並列QA自動化と信頼性の高いスクリーンショットのサポートされているパスです。 - (legacy/opt-in):既存のクッキーとログインセッションを必要とするときに、実際のChromeプロファイルに接続します。 ネイティブモードは chrome.tabs.captureVisibleTab() を完全に回避します。そのため、スクリーンショットはChrome に依存せず、視覚的にアクティブになっているタブ、または拡張サービスワーカーは新鮮です。 1. — クロードコード、カーソル、または任意のMCPクライアントは、stdio 2を介して接続します。 localhost 3. 4. 5.、Chrome拡張キャプチャAPIではなく 「[https://example.com,を開き、スクリーンショットを撮ってページを要約する」 延長は取付けません。 クロムのforegroundの条件無し。 完全なネイティブモード操作、ストレスコマンド、およびクリーンアップチェックについては、docs/native-mode.md を参照してください。 他のツールは、ページごとに50K + charsをコンテキストウィンドウにダンプします。 パイロットは物事を小さく保ちます:
概要(AI 翻訳)
デフォルトでは、ネイティブのPlaywright-backedブラウザセッション。 QA自動化に必要なChrome拡張機能はありません。
パイロットには2つのブラウザのバックエンドがあります。
-Native mode(デフォルト):独立したPlaywrightブラウザのコンテキスト。 これは、並列QA自動化と信頼性の高いスクリーンショットのサポートされているパスです。
- 延長モード (legacy/opt-in):既存のクッキーおよび記録されたセッションを必要とするときあなたの実質のChromeのプロフィールに接続します。
ネイティブモードは chrome.tabs.captureVisibleTab() を完全に回避します。そのため、スクリーンショットはChromeがフォアグラウンド、目に見えないタブ、または拡張サービスワーカーが新鮮であることに依存しません。
お問い合わせ
使い方
1.Pilot は MCP サーバーとして動作します — ロードコード、カーソル、または MCP クライアントが stdio 経由で接続します。 2。 最初のパイロットプロセスは、ローカルホスト上でブローカーになる 3。Later Pilotプロセスはブローカークライアントとして接続します 4。各セッションは独立したネイティブブラウザのコンテキスト/ページを取得 5。 スクリーンショットは、Chrome拡張キャプチャAPIではなくPlaywrightから来ています
お問い合わせ
クイックスタート
##1. MCP サーバーを追加
ローカルチェックアウトの場合:
##2. 使用
「[https://example.com,を開く] スクリーンショットを撮り、ページをまとめる」
延長は取付けません.
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
README
以下は原文 README の抜粋です。原文を見る。
pilot — browser automation MCP for AI agents
Native Playwright-backed browser sessions by default. No Chrome extension required for QA automation.
Pilot has two browser backends:
- Native mode (default): isolated Playwright browser contexts. This is the supported path for parallel QA automation and reliable screenshots.
- Extension mode (legacy/opt-in): connects to your real Chrome profile when you need existing cookies and logged-in sessions.
Native mode avoids chrome.tabs.captureVisibleTab() entirely, so screenshots do not depend on Chrome being foregrounded, a tab being visibly active, or the extension service worker being fresh.
How it works
AI Agent → MCP Server → Broker on 127.0.0.1:3131 → Native browser session
(stdio) (first process owns broker) (Playwright context/page)
- Pilot runs as an MCP server — Claude Code, Cursor, or any MCP client connects via stdio
- The first Pilot process becomes the broker on localhost
- Later Pilot processes connect as broker clients
- Each session gets an isolated native browser context/page
- Screenshots come from Playwright, not the Chrome extension capture API
Quick Start
1. Add the MCP server
codex mcp add pilot \
--env PILOT_BROWSER_MODE=native \
--env PILOT_PROFILE=full \
-- npx -y pilot-mcp
For a local checkout:
npm install
npm run build
codex mcp add pilot \
--env PILOT_BROWSER_MODE=native \
--env PILOT_PROFILE=full \
-- node /absolute/path/to/pilot/dist/index.js
2. Use it
“Open https://example.com, take a screenshot, and summarize the page.”
No extension install. No Chrome foreground requirement.
For full native-mode operations, stress commands, and cleanup checks, see docs/native-mode.md.
Lean snapshots
Other tools dump 50K+ chars per page into your context window. Pilot keeps things small:
Other tools: navigate(58K) → navigate(58K) → answer = 116K chars
Pilot: navigate(2K) → navigate(2K) → snapshot(9K) = 13K chars
snapshot_diff shows only what changed between actions — no redundant re-reads.
Less context = faster responses, cheaper API calls, fewer hallucinations.
Pilot vs @playwright/mcp
| Pilot | @playwright/mcp | |
|---|---|---|
| Browser | Native Playwright context by default; real Chrome via legacy extension | New Chromium instance |
| Auth state | Native isolated by default; extension mode can use real Chrome cookies | Anonymous — manual setup |
インストール
npx -y pilot-mcp設定
{
"mcpServers": {
"pilot": {
"command": "npx",
"args": ["-y", "pilot-mcp"],
"env": { "PILOT_PROFILE": "standard" }
}
}
}