Browser Demo
FreeNot checkedProvides a remote browser session and MCP tools for restricted search and extraction on sites like XHS, Yelp, and TripAdvisor, with human-in-the-loop login.
About
Provides a remote browser session and MCP tools for restricted search and extraction on sites like XHS, Yelp, and TripAdvisor, with human-in-the-loop login.
README
This project provides a minimal HITL (human-in-the-loop) remote browser session and an MCP tool gateway for restricted search/extraction. It currently supports XHS and includes real search adapters for Yelp and TripAdvisor.
Requirements
- Node.js >= 18
- Playwright Chromium (
npx playwright install chromium)
Install
npm install
npx playwright install chromium
Copy the environment template and adjust as needed:
cp .env.example .env
Run
npm run dev
This starts:
- HTTP server on
http://HOST:PORT - MCP server on stdio (connect with an MCP client)
Docker (single-user + noVNC)
This path is intended for a single user (or MAX_SESSIONS=1). It runs the browser inside Xvfb and streams the desktop via noVNC.
Build:
docker build -t browser-mcp-demo .
Run:
docker run --rm \
-p 3000:3000 -p 7900:7900 \
-e HOST=0.0.0.0 \
-e HEADLESS=false \
-e MAX_SESSIONS=1 \
-e VIEW_MODE=novnc \
-e PUBLIC_BASE_URL=http://YOUR_SERVER_IP:3000 \
-e NOVNC_URL_TEMPLATE="http://YOUR_SERVER_IP:7900/vnc.html?autoconnect=1&resize=scale&path=websockify" \
-e PROFILES_DIR=/data/profiles \
-e AUDIT_LOG_PATH=/data/logs/audit.log \
-e DELETE_PROFILE=false \
-v "$PWD/profiles:/data/profiles" \
-v "$PWD/logs:/data/logs" \
browser-mcp-demo
Notes:
VIEW_MODE=novncmakes/session/view/:idembed the live browser stream.- Update
PUBLIC_BASE_URLandNOVNC_URL_TEMPLATEwith your public host or domain.
HITL Login Flow
- Call MCP tool
create_session->{ sessionId, viewUrl } - Open
viewUrlin your browser.- Default mode: a local Chromium window is opened for login.
- noVNC mode (
VIEW_MODE=novnc): the remote browser stream is embedded in the page.
- Login on that window (QR/OTP/2FA handled by the user).
- Call
wait_for_loginuntil status isREADY(site-aware whensiteis provided).
MCP Tools (stdio)
Tools:
create_sessionwait_for_login(optionalsite)platform_search(site-aware viasiteparam)xhs_open_and_extract(site-aware viasiteparam)destroy_session
Example (pseudo):
const session = await client.callTool("create_session", {});
await client.callTool("wait_for_login", { sessionId: session.sessionId, timeoutSec: 120 });
const results = await client.callTool("platform_search", {
sessionId: session.sessionId,
query: "camping",
maxNotes: 10,
scrollTimes: 0,
site: "xhs" // xhs | yelp | tripadvisor
});
const detail = await client.callTool("xhs_open_and_extract", {
sessionId: session.sessionId,
url: results.notes[0]?.url,
site: "xhs"
});
Security Boundary
- Tools return sanitized structured JSON only.
- No cookies, localStorage, sessionStorage, storageState, or userDataDir exposure.
- No screenshot tool.
- Audit log is written to
logs/audit.logwith redaction.
Agent HTTP Endpoints
POST /agent/run→ start a run and execute until login required or donePOST /agent/continue→ continue a run after user loginGET /agent/run/:id→ fetch current run state
Example request body:
{
"query": "camping",
"maxNotes": 10,
"scrollTimes": 0,
"detailCount": 3,
"detailParallel": 4,
"site": "xhs"
}
Configuration
Key environment variables:
HOST,PORT,PUBLIC_BASE_URLUI_DIST_DIR(serve built UI from the same server)VIEW_MODE(info|novnc)NOVNC_URL_TEMPLATE(supports{sessionId}placeholder)OPENAI_API_KEY,OPENAI_MODELAGENT_RUN_TTL_MINUTESMAX_SESSIONS,SESSION_TTL_MINUTESPROFILES_DIR,DELETE_PROFILEHEADLESSXHS_BASE_URLAUDIT_LOG_PATH
Notes
- XHS, Yelp, and TripAdvisor all support search in the current adapter layer. XHS detail extraction is implemented; Yelp/TripAdvisor detail extraction is still stubbed.
- The DOM selectors for each site may change. Update
src/browser/xhs.tsorsrc/sites/*.tsif extraction breaks. - This MVP does not implement large-scale crawling or anti-bot bypass.
Installing Browser Demo
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/Hanny658/browser-mcp-demoFAQ
Is Browser Demo MCP free?
Yes, Browser Demo MCP is free — one-click install via Unyly at no cost.
Does Browser Demo need an API key?
No, Browser Demo runs without API keys or environment variables.
Is Browser Demo hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Browser Demo in Claude Desktop, Claude Code or Cursor?
Open Browser Demo on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Playwright
Browser automation, scraping, screenshots
by MicrosoftPuppeteer
Browser automation and web scraping.
by modelcontextprotocolopentabs-dev/opentabs
Plugin-based MCP server + Chrome extension that gives AI agents access to web applications through the user's authenticated browser session. 100+ plugins with a
by opentabs-devrobhunter/agentdeals
1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan
by robhunterCompare Browser Demo with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All browse MCPs
