browser-mcp-demo
Provides search capabilities on TripAdvisor through the platform_search tool, enabling querying for attractions, restaurants, and hotels with site-aware search.
Provides search capabilities on Yelp through the platform_search tool, enabling querying for businesses and places with support for site-aware search.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@browser-mcp-demo search XHS for hiking gear and extract first result"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Remote Browser + MCP Tool Gateway (Multi-Site MVP)
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)
Related MCP server: Real Browser MCP
Install
npm install
npx playwright install chromiumCopy the environment template and adjust as needed:
cp .env.example .envRun
npm run devThis starts:
HTTP server on
http://HOST:PORTMCP 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-demoNotes:
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.
Available Tools
5 toolscreate_sessionC
Create a new browser session and return sessionId + viewUrl.
Inputs: site.
destroy_sessionC
Destroy a browser session.
Inputs: sessionId (required).
platform_searchC
Search a site and return a list of notes.
Inputs: sessionId (required), query (required), maxNotes, scrollTimes, +1 more.
wait_for_loginC
Poll login status for a session (site-specific when provided).
Inputs: sessionId (required), timeoutSec, site.
xhs_open_and_extractC
Open a note and extract full detail (site-specific).
Inputs: sessionId (required), url (required), site.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a clear and distinct purpose: session creation/destruction, platform searching, login polling, and site-specific extraction. No overlapping functionality.
Naming conventions are inconsistent: create_session and destroy_session follow verb_noun, but platform_search is noun_verb, wait_for_login uses a preposition, and xhs_open_and_extract is a long combined verb. No uniform pattern.
Five tools is an appropriate scope for a demo browser MCP server, covering essential workflows without being overwhelming.
The set covers a specific workflow (session management, search, login, extraction) for a particular site, but lacks generic browser actions like navigation, clicking, or form filling, which limits its applicability to other contexts.
Maintenance
Related MCP Connectors
One MCP for the Web. Easily search, crawl, navigate, and extract websites without getting blocked.…
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides browser automation and web scraping as MCP tools, enabling autonomous URL ingestion, crawling, extraction, and anti-bot handling with interactive browser control.626MIT
- AlicenseNot gradedqualityDmaintenanceProvides a real browser that bypasses bot detection (Cloudflare, Turnstile) for AI agents, enabling navigation, clicking, typing, screenshots, and data collection through MCP tools.180 npmMIT
- FlicenseNot gradedqualityDmaintenancePaid remote MCP for browser session management, enabling AI agents to open sessions, run stateful snippets, read page state, and export session logs.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents and human operators to drive isolated browser profiles with persistent cookies, fingerprints, and proxies, exposing navigation, clicking, typing, extraction, screenshots, JS evaluation, tabs, cookies, and waits to MCP clients.-