byob
Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
README
<div align="center">
<img src="assets/logo.svg" alt="byob" width="120"/>
byob
Bring Your Own Browser — let your AI assistant use the Chrome you already have open.
English · 中文
</div>
byob is a local MCP server that lets AI coding tools (Claude Code, Cursor, Cline, Windsurf, etc.) directly control your real Chrome — the one where you're already logged into everything.
"read my Twitter timeline and summarize the top 5 posts"
"google 'mcp protocol spec', click the first result, read the page"
"take a screenshot of example.com"
"grab my GitHub session cookie so I can curl with it"
"open my Gmail tab and tell me how many unread"
| WebFetch | Headless Puppeteer | byob | |
|---|---|---|---|
| Sees logged-in pages | ❌ | ⚠️ manual cookie copy | ✅ already logged in |
| Passes bot detection | ❌ | ❌ | ✅ real human browser |
| Setup time | 0 | hours | ~5 min |
| Cloud cost | free | $$ | free |
Install
Quick install (recommended)
curl -fsSL https://raw.githubusercontent.com/wxtsky/byob/main/install.sh | bash
The script checks prerequisites (Node.js ≥ 20, bun, Chrome), clones the repo, builds everything, and walks you through MCP registration interactively. If bun is not installed, it offers to install it for you.
Set
BYOB_INSTALL_DIRto change the install location (default:~/byob).
Manual install
<details> <summary>Prefer to do it yourself?</summary>
Requires Node.js ≥ 20, bun, Chrome, and any MCP-compatible AI tool.
git clone https://github.com/wxtsky/byob
cd byob
bun install
bun run setup
</details>
bun run setup walks through the install interactively:
- Pick output language (English / 中文)
- Generates a unique extension key for you
- Builds the Chrome extension
- Writes the config that lets Chrome talk to byob
- Prompts you to multi-select your AI tools, then registers each one (CLI tools via their
mcp addcommand, JSON-config tools by writing the config file directly)
After the script finishes, three manual steps remain:
Step 2 — Load extension in Chrome
Open chrome://extensions in Chrome.
- Top-right → turn ON Developer mode
- Top-left → click Load unpacked
- Select the folder printed in your terminal, something like:
/your/path/to/byob/packages/extension/output/chrome-mv3
Step 3 — Restart Chrome
Quit Chrome completely (⌘Q on Mac / close all windows on Windows), then reopen.
Closing a single tab or window is not sufficient — Chrome only reads the Native Messaging config at startup.
Step 4 — (Reference) Manual MCP registration
The setup script registers your selected tools automatically. The block below is for reference only — use it if you skipped the prompt or want to register a different tool later:
<details open> <summary><b>Claude Code</b></summary>
claude mcp add byob -s user -- /path/to/tsx /path/to/byob-mcp.ts
To enable browser_eval, add -e BYOB_ALLOW_EVAL=1 after -s user.
</details>
<details> <summary><b>Codex CLI</b></summary>
codex mcp add byob -- /path/to/tsx /path/to/byob-mcp.ts
</details>
<details> <summary><b>Cursor</b></summary>
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
</details>
<details> <summary><b>Windsurf</b></summary>
Add to ~/.codeium/windsurf/mcp_config.json (same JSON format as Cursor):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
</details>
<details> <summary><b>Cline (VS Code)</b></summary>
Open Cline sidebar → MCP Servers → Configure, then add (same JSON format):
{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"]
}
}
}
</details>
The actual paths are printed by the setup script. The examples above use shortened paths for readability.
To enablebrowser_eval, add"env": { "BYOB_ALLOW_EVAL": "1" }to the config (or-e BYOB_ALLOW_EVAL=1for CLI tools).
Step 5 — Verify
bun run doctor
If all checks pass (4 green ✓), the installation is complete. Open a new session in your AI tool and try "use byob to read ...".
Tools
| Tool | What it does |
|---|---|
browser_read |
Open a page, scroll through, read all text |
browser_read_markdown |
Same, returns clean markdown (no nav/ads) |
browser_extract_table |
Pull <table> elements as JSON |
browser_get_console_logs |
Snapshot console.log / warn / error |
browser_start_record_network |
Start recording HTTP + WebSocket traffic |
browser_stop_record_network |
Stop recording, export JSON or HAR |
browser_screenshot |
Screenshot → saved to disk |
browser_download_images |
Download all images from a page |
browser_click |
Click a button or link |
browser_type |
Type into an input (optionally press Enter) |
browser_press_key |
Send a keyboard key (Enter, Escape, F5, ArrowDown, ...) |
browser_hover |
Hover the mouse over an element to trigger tooltips/menus |
browser_select |
Choose an option in a native <select> |
browser_scroll |
Scroll to top/bottom, an element, or a Y coordinate |
browser_get_html |
Get raw HTML of an element or the whole page |
browser_get_cookies |
Export cookies for curl / scripts |
browser_navigate |
Open a URL in a new or existing tab |
browser_go_back |
Go back one step in browser history |
browser_go_forward |
Go forward one step in browser history |
browser_wait_for |
Wait for an element to appear |
browser_list_tabs |
List all open tabs |
browser_switch_tab |
Switch to a tab |
browser_close_tab |
Close a tab by tabId |
browser_eval |
Run JavaScript on the page (off by default) |
14 of these tools support framePath to reach into nested iframes (including cross-origin).
Full schemas: shared/src/schemas.ts
How it works
AI tool → byob-mcp → byob-bridge → Chrome extension → your tab
(stdio) (Unix socket) (Native Messaging) (Chrome DevTools Protocol)
All communication stays local. No data leaves your machine. When Chrome closes, all byob processes exit automatically.
Everyday commands
bun run setup # install or re-install
bun run doctor # check what's working
bun run bridges # list running bridge processes
bun run logs # tail the bridge log
bun run unsetup # remove everything
All run from the byob repo root.
Reliability
- End-to-end cancellation.
Ctrl+Cpropagates through the entire chain (MCP → bridge → extension → Chrome), cleanly detaching all debug sessions. - DevTools conflict handling. If DevTools is open on a tab,
browser_evalautomatically falls back tochrome.scripting.executeScript. - Sleep/wake recovery. After a laptop sleep cycle, byob resets all debug sessions so the next call starts from a clean state.
Security
browser_evalis off by default — enable withBYOB_ALLOW_EVAL=1. Every call logs + notifies.chrome://,file://, Google/MS/Apple login pages are blocked by default.- Each install gets a unique extension key — no collisions.
- Socket files are
0600, dirs are0700. Other users can't see them. - Zero outbound network traffic. No analytics, no pings, no crash reports.
- Chrome displays a "byob is debugging this browser" banner on active tabs. This is a Chrome security feature and cannot be suppressed.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
No live bridge |
Chrome not running or extension disabled | Check chrome://extensions |
cdp_attach_failed |
DevTools open on that tab | Close DevTools |
url_forbidden |
URL on the blocklist | See Security section |
extension_not_connected |
Extension lost connection | Reload at chrome://extensions |
| Nothing works after install | Chrome was not fully restarted | Quit Chrome completely (⌘Q) and reopen |
Run bun run doctor for detailed diagnostics on which step failed.
Platform notes
| Platform | Auto | Manual |
|---|---|---|
| macOS | Auto-registers selected MCP tools | Open chrome://extensions and load the unpacked extension |
| Windows | Same + writes Native Messaging host to registry | Same as macOS |
| Linux | Auto-registers selected MCP tools | Same as macOS |
More
MIT licensed. byob has broad access to your browser — only use it on machines and accounts you own.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器