Realbrowser
БесплатноНе проверенA persistent browser profile for your AI — log in once, sessions stay forever. 20 MCP tools for Claude Code,auto-detects your default browser.
Описание
A persistent browser profile for your AI — log in once, sessions stay forever. 20 MCP tools for Claude Code,auto-detects your default browser.
README
A persistent browser profile for your AI — log in once, sessions stay forever.
No more blank browser windows. No more "please copy-paste this page." Give your AI a dedicated browser identity, and it remembers everything.
License: MIT TypeScript MCP CI
Why this exists
Every existing MCP browser tool launches a fresh, blank browser that forgets everything when closed:
| Tool | Problem |
|---|---|
@playwright/mcp |
New incognito window, temporary profile — lost on restart |
browser-use |
Python-only, doesn't speak MCP |
stagehand |
Data extraction focus, not general browsing |
MCP-RealBrowser gives your AI a persistent browser profile — same directory, same cookies, same sessions across restarts. Log into GitHub, Gmail, Bilibili once, and it stays logged in forever.
What it does
You: "Check my unread emails and summarize them"
AI: navigate(gmail.com) → snapshot() → extract() → reads & summarizes
You: "Find flights to Tokyo next Friday under ¥3000"
AI: navigate(ctrip.com) → fill("出发", "上海") → fill("到达", "东京")
→ click("搜索") → extract() → sorted results
You: "Open my GitHub and tell me how many stars I have"
AI: navigate(github.com/obbbba) → snapshot() → "You have 1 star"
Quick start
1. Install
git clone https://github.com/obbbba/mcp-realbrowser.git
cd mcp-realbrowser
npm install
npm run build
2. Run diagnostics
node dist/index.js --doctor
Checks: Node.js, dependencies, Chrome installed, Chrome running, CDP port open, debug flag enabled.
3. Launch your browser with debug port
The browser uses a separate persistent profile — your daily browser isn't affected.
Windows (Edge — pre-installed on Win11):
scripts\launch-edge.bat
Windows (Chrome):
scripts\launch-chrome.bat
Mac/Linux:
chmod +x scripts/launch-chrome.sh
./scripts/launch-chrome.sh
4. Choose your mode
Mode A: MCP Server (recommended — Claude Code auto-control)
Add to .claude/settings.json in your project:
{
"mcpServers": {
"realbrowser": {
"command": "npx",
"args": ["tsx", "/path/to/mcp-realbrowser/src/index.ts"],
"env": { "CDP_PORT": "9222" }
}
}
}
Restart Claude Code. Now you can just talk:
> Go to baidu.com and search for "MCP tutorial"
> Open GitHub trending page and find the top TypeScript repo
> Navigate to my Gmail and summarize unread emails
Mode B: Direct API (for scripts / custom tools)
import { CDPConnection } from "mcp-realbrowser";
const browser = new CDPConnection();
await browser.connect("http://localhost:9222");
await browser.navigate("github.com");
const snapshot = await browser.snapshot(); // AI sees the page
await browser.click("Sign in");
await browser.type("hello");
const screenshot = await browser.screenshot();
await browser.disconnect(); // Chrome stays open
5. Verify it works
npx tsx src/smoke-test.ts
# Expected: test runs pass
Tools (20)
| Tool | What it does |
|---|---|
navigate(url) |
Open any URL in the current tab |
snapshot(query?) |
Get interactive elements — filter with query to save tokens |
click(target) |
Click by CSS selector, text, role, placeholder, or label (6 strategies) |
type(text) |
Type into the focused input with human-like delay |
press_key(key) |
Press Enter, Tab, Escape, arrows, etc. |
screenshot(format?, quality?) |
Take a viewport screenshot (PNG/JPEG, quality 10-100 for JPEG) |
extract(maxChars?) |
Get visible text (default 3K chars, max 30K) |
scroll(direction, amount?) |
Scroll up/down, returns scroll position |
fill(field, value) |
Fill an input by placeholder or label |
select_option(target, value) |
Select an option in a <select> dropdown |
go_back() |
Navigate back in browser history |
go_forward() |
Navigate forward in browser history |
reload() |
Reload the current page |
hover(target) |
Hover over an element (dropdowns, tooltips) |
wait_for_text(text, timeout?) |
Wait for text to appear after an action |
list_tabs() |
List all open browser tabs with index, URL, and title |
select_tab(index) |
Switch to a tab by index |
new_tab(url?) |
Open a new browser tab |
close_tab(index) |
Close a tab by index |
reconnect() |
Reconnect to browser after restart |
💡 Token-saving tips
snapshot(query="login") — only elements matching "login"
extract(maxChars=500) — small snippets, not full pages
screenshot(format="jpeg", quality=40) — compact visual check
Architecture
┌──────────────┐ stdio (MCP) ┌──────────────────┐ CDP (ws) ┌──────────────────┐
│ Claude Code │ ◄────────────────► │ MCP-RealBrowser │ ◄──────────────► │ Browser profile │
│ (AI Agent) │ JSON-RPC 2.0 │ (TypeScript) │ DevTools Proto │ (persistent) │
└──────────────┘ └──────────────────┘ └──────────────────┘
│
│ chromium.connectOverCDP()
│ DOM snapshot (interactive elements)
│ page.screenshot()
│ page.keyboard.type()
▼
┌──────────────┐
│ Playwright │
└──────────────┘
Key design decisions:
- Persistent profile: Browser data saved to
%LOCALAPPDATA%\mcp-realbrowser\— cookies, logins, localStorage survive browser restarts - CDP attach (not launch): Uses
connectOverCDP— the browser process lives independently from the MCP server - DOM snapshot for vision: Structured element scan, 250-element limit keeps context manageable
- Screenshot as fallback: For visual pages where DOM structure isn't enough
- Disconnect ≠ Close: Shutting down the MCP server never closes your browser
- --doctor mode: Diagnose and auto-fix browser/CDP issues before starting the server
Troubleshooting
"CDP port not accepting connections"
The browser isn't running with the debugging flag.
Quick fix:
# One command to diagnose and auto-fix
node dist/index.js --doctor --fix
Or manually:
# 1. Kill stale browser processes
taskkill /F /IM msedge.exe & taskkill /F /IM chrome.exe
# 2. Run the launch script
scripts\launch-edge.bat # Windows (Edge)
scripts\launch-chrome.bat # Windows (Chrome)
./scripts/launch-chrome.sh # Mac/Linux
Other issues
Run --doctor for a full diagnostic report:
node dist/index.js --doctor
First time? Log in to your sites
The profile is empty on first launch. Log into GitHub, Gmail, Bilibili, etc. once — cookies are saved to %LOCALAPPDATA%\mcp-realbrowser\browser-profile and persist forever.
Supported browsers
| Browser | Support | Notes |
|---|---|---|
| Edge | ✅ Full | Pre-installed on Win11, same CDP |
| Chrome | ✅ Full | All platforms |
| Brave | ✅ Full | Chromium-based |
| Arc | ✅ Full | Chromium-based |
| Opera | ✅ Full | Chromium-based |
| 360 / QQ / Sogou | ⚠️ Likely | Chromium-based, not tested |
Contributing
Pull requests welcome! Areas you can help:
- New tools — want
drag_and_droporselect_option? PR it. - Bug fixes — found an edge case? Fix it.
- Docs — better examples, translations, tutorials.
- Tests — more coverage for edge cases.
- Fork it
- Create your feature branch (
git checkout -b feature/amazing) - Run the smoke test:
npx tsx src/smoke-test.ts— should be 13/13 - Commit (
git commit -m 'Add something amazing') - Push + open a Pull Request
License
MIT © 2024
Star History
If this is useful, a ⭐ on GitHub makes a big difference — it tells others the project is worth their time.
中文说明
MCP-RealBrowser 是一个 MCP 服务器,为 AI 助手提供持久化的浏览器身份。独立 profile 不影响你的日常浏览器。登录一次 GitHub、B 站、Gmail——Cookies 永久保存到 %LOCALAPPDATA%\mcp-realbrowser\browser-profile,关了再开登录态还在。
与现有方案的区别: Playwright MCP 每次启动临时 profile,关闭即销毁。我们用固定持久目录,登录态跨会话保留。
两种使用方式:
A. MCP Server 模式(推荐):
git clone→npm install→npm run buildnode dist/index.js --doctor --fix一键诊断并启动浏览器- 在
.claude/settings.json中配置 MCP Server - 重启 Claude Code,直接说话
B. 直接 API 模式:
import { CDPConnection } from "mcp-realbrowser";
const browser = new CDPConnection();
await browser.connect("http://localhost:9222");
await browser.navigate("github.com");
await browser.click("Sign in");
await browser.disconnect();
验证: npx tsx src/smoke-test.ts
20 个工具: navigate / snapshot / click / type / press_key / screenshot / extract / scroll / fill / select_option / go_back / go_forward / reload / hover / wait_for_text / list_tabs / select_tab / new_tab / close_tab / reconnect
故障排除: --doctor --fix 自动检测并修复。支持 Edge / Chrome / Brave / Arc / Opera / Vivaldi / Chromium,自动读取系统默认浏览器。
Установка Realbrowser
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/obbbba/mcp-realbrowserFAQ
Realbrowser MCP бесплатный?
Да, Realbrowser MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Realbrowser?
Нет, Realbrowser работает без API-ключей и переменных окружения.
Realbrowser — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Realbrowser в Claude Desktop, Claude Code или Cursor?
Открой Realbrowser на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Realbrowser with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
