browser-agent
Autonomous Browser Agent — スクリーンショットなし
エージェントはPlaywrightを通じて実際のChromiumを操作し、LLMは画像ではなく
ページの構造化テキストスナップショット(ref | role | name | 状態)に基づいて判断を下します。
Visionモデルは不要で、どのステップでもスクリーンショットは撮影されません。
同じコードベースから3つの動作モード:
モード | 有効化方法 | 用途 |
ローカル、可視ブラウザ |
| デバッグ、視覚的な確認 |
CDP経由の実際のChrome |
| ライブセッション、より良いフィンガープリント |
VPSヘッドレス24/7 |
| タスクキューの自律実行 |
アーキテクチャ
ファイル | 役割 |
| JSインジェクション: DOM + オープンShadow DOM + iframeの走査、可視のインタラクティブ要素の選別、 |
| Playwrightセッション(headless/headful/CDP、stealth-init、プロキシ、画像ブロック)と14アクションの実行エンジン |
| プランナー: Anthropic / OpenAI互換 / Ollama、厳格なJSONアクションプロトコル |
| LangGraphループ |
| CLI: |
| MCPサーバー: Claude Code / Cursor / 独自オーケストレーター向けブラウザツール13種 |
| デバッグポート付きで自分のChromeを起動(Linux/macOSおよびWindows) |
| VPS用 |
Related MCP server: Playwright MCP Server
1. ローカルマシンへのインストール
git clone https://github.com/maxmkab/autonomous-browser-agent.git
cd autonomous-browser-agent
python -m venv .venv
source .venv/bin/activate # Windows: .venv\\Scripts\\activate
pip install -r requirements.txt
playwright install chromium
cp .env.example .env # вписать ANTHROPIC_API_KEYLLMに費用をかけずに確認 — モデルが実際に何を見ているかを確認:
python main.py snapshot --url https://example.com可視ブラウザでのタスク実行:
HEADLESS=false python main.py run \
--task "Найди раздел с ценами и извлеки все тарифы через extract" \
--url https://example.com \
--json state/report.json2. 実際のブラウザへの組み込み(CDP)
エージェントは独自のクリーンなChromiumではなく、自分のChromeで動作できます — ライブセッション、 拡張機能、本物のフィンガープリント付きです。拡張機能をインストールする必要はありません — 制御はChrome DevTools Protocol経由で行われます。
# 1) запустить Chrome с открытым портом (отдельный профиль для агента)
chmod +x scripts/chrome-cdp.sh
./scripts/chrome-cdp.sh 9222 # Windows: scripts\\chrome-cdp.bat 9222
# 2) в другом терминале отдать задачу агенту в этом же браузере
CDP_URL=http://127.0.0.1:9222 python main.py run --task "..."このモードでは、エージェントは storage_state.json に触れません: セッションはChromeプロファイルから取得されます。
初回起動時 — 必要なサービスに手動でログインし、以降はプロファイルがそれを記憶します。
3. MCP経由でのClaude Code / Cursorへの組み込み
mcp_server.py はstdioトランスポートのMCPサーバーを起動します。ツール:
browser_open、browser_snapshot、browser_click、browser_type、browser_select、
browser_check、browser_scroll、browser_press、browser_back、browser_tabs、
browser_save_session、browser_run_task、browser_close。
Claude Codeの設定(~/.claude.json またはプロジェクトルートの .mcp.json):
{
"mcpServers": {
"browser-agent": {
"command": "/absolute/path/autonomous-browser-agent/.venv/bin/python",
"args": ["/absolute/path/autonomous-browser-agent/mcp_server.py"],
"env": {
"HEADLESS": "false",
"CDP_URL": "http://127.0.0.1:9222",
"ANTHROPIC_API_KEY": "sk-ant-...",
"REQUIRE_APPROVAL": "true"
}
}
}
}または1コマンドで:
claude mcp add browser-agent -- /absolute/path/.venv/bin/python /absolute/path/mcp_server.pyこれ以降、Claude Codeのモデルは
browser_snapshot → browser_click → browser_snapshot のループでブラウザを操作し、テキストスナップショットのみを受け取ります。
ブラウザセッションは呼び出し間で維持されるため、シナリオをステップバイステップで進めることができます。
完全な自律実行には browser_run_task があります — エージェントが自らループを回し、JSONレポートを返します。
4. サーバーへの認証情報の移行
# локально, в видимом окне: залогинился → Enter в консоли
HEADLESS=false python main.py login --url https://site.ru/login
# переносим cookies + localStorage на сервер
scp state/storage_state.json root@YOUR_VPS_IP:/opt/browser-agent/state/5. VPSへのデプロイ(Ubuntu 24.04 + Docker)
mkdir -p /opt/browser-agent/state && cd /opt/browser-agent
git clone https://github.com/maxmkab/autonomous-browser-agent.git .
cp .env.example .env && nano .env
docker build -t browser-agent .
docker run -d --name browser-agent --restart unless-stopped \
--shm-size=1g \
--env-file .env \
-v /opt/browser-agent/state:/app/state \
browser-agent--shm-size=1g は必須です: デフォルトの64MBの/dev/shmを持つコンテナ内のChromiumは、
重いページでクラッシュします。
サーバーでの単発タスク:
docker exec -it browser-agent python main.py run --task "..." --url https://...Dockerなし(systemd)
apt update && apt install -y python3-venv
cd /opt/browser-agent && python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
playwright install --with-deps chromium/etc/systemd/system/browser-agent.service:
[Unit]
Description=Autonomous browser agent
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/browser-agent
EnvironmentFile=/opt/browser-agent/.env
ExecStart=/opt/browser-agent/.venv/bin/python main.py daemon --interval 300
Restart=always
RestartSec=10
StandardOutput=append:/var/log/browser-agent.log
StandardError=append:/var/log/browser-agent.log
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload && systemctl enable --now browser-agent
journalctl -u browser-agent -f6. タスクの設定とn8n
デーモンは state/tasks.jsonl を読み取ります — 1行 = 1タスク:
{"id":"price-check-1","task":"Открой карточку товара, извлеки цену и наличие через extract","url":"https://site.ru/item/123"}
{"id":"lead-form","task":"Заполни форму заявки: имя Иван, телефон +79990000000. Отправку подтвердит человек."}結果は state/results.jsonl に success、result、extracted、
steps、tokens_in/out フィールドと完全なトレース history とともに書き込まれます。n8nはこのファイルにタスクを書き込み
(Execute Command / SSHノード)、結果を読み取ることができます。
7. トークン節約
スクリーンショットなし: テキストのみ、visionモデルなし。
DOMフィルタリング: コンテキストには可視のインタラクティブ要素で名前が空でないもののみ、フレームあたり最大250個。
ネットワークレベルでの画像/フォント/メディアのブロック(
BLOCK_MEDIA=true)。履歴圧縮(
HISTORY_WINDOW): 完全なスナップショットは直近のステップのみ、古いものはaction → resultに圧縮。ループ検出: スナップショットのフィンガープリントが変わらない場合、モデルに戦略変更の指示が出されます。
8. セキュリティ
RISKY_PATTERNS(支払い、購入、注文、削除、送信、
checkout、pay、delete)に該当するアクションは確認が必要です: ローカルではコンソールで、サーバーではTelegramで「はい」と回答
(APPROVAL_MODE=telegram)。ALLOW_EVAL=false がデフォルトで任意のJS実行を禁止します。
すべてのアクションエラーはobservationとしてモデルに返され、プロセスをクラッシュさせません。
シークレットはgitから除外された .env にのみ保存されます。
9. 本番環境前の確認
python main.py snapshot --url <対象サイト>— 必要な要素がスナップショットに含まれていますか?REQUIRE_APPROVAL=trueでheadfulでローカルにタスクを実行。同じタスクをローカルでheadless実行 — デプロイ前にレンダリングの差異を検出。
その後でのみVPSにデプロイしてデーモンを起動。
ライセンス
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables direct browser control via Chrome DevTools Protocol, supporting navigation, interaction, content extraction, and screenshots through a single MCP tool.1341MIT
- FlicenseNot gradedqualityCmaintenanceEnables browser automation through the MCP protocol, allowing AI agents to control a real browser using accessibility snapshots and natural language commands.
- AlicenseNot gradedqualityBmaintenanceEnables Codex to control a visible Chromium browser via MCP tools for navigation, page inspection, and interaction, while keeping sensitive steps like login and captcha under the user's control.31MIT
- AlicenseAqualityBmaintenanceBrowser automation MCP server that uses a real browser to give agents eyes and hands—open pages, click, fill, screenshot, and run scripts via accessibility-tree snapshots.22MIT
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maxmkab/autonomous-browser-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server