Crawlio Browser MCP server
app.crawlio/crawlio-browser·v1.11.0·7 starsBridge a live Chrome browser to your agent: 150 tools for capture, extraction, and observation.
7 stars
Reviews
Write oneNobody has reviewed Crawlio Browser yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Crawlio Browser tools (100, 11 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
agent_session_actionwrite actionRun one semantic action inside an agent-owned browser session without activating the tab. Prefer selector targets; refs from agent_session_snapshot also work for AX-backed elements. Supported actions include navigate, click, hover, insertText/type/fill, select, scroll, key/press/command, and evaluate.
agent_session_artifactsList artifacts captured by an agent-owned browser session, including snapshots, screenshots, page summaries, and action logs. Payload data is omitted unless includeData=true.
agent_session_batchwrite actionRun a sequential batch of semantic actions inside an agent-owned browser session. Use this for background workflows that should keep running without the user watching the browser.
agent_session_claim_tabAdopt an existing user tab into a logical agent session fleet so the agent can drive it. Rejects non-HTTP tabs and tabs already owned by another session. Requires tabs because it reads user-tab metadata.
agent_session_closeClose an agent-owned browser session. By default also closes its backing tab.
agent_session_createwrite actionCreate an agent-owned browser session in a background tab. The session has its own ID and is not tied to the foreground connected tab. Actions use semantic DOM/CDP operations and do not activate the tab by default.
agent_session_create_tabwrite actionOpen a new agent-owned tab inside a logical session fleet. The tab is created in the background and CDP-attached without disturbing the foreground connected tab. No optional permission is required.
agent_session_finalizeEnd an agent session by disposing of its tabs. keep[].status labels retained tabs as handoff or deliverable in the result. Agent-created tabs not kept are closed; adopted user tabs are released and never closed. No optional permission is required for already-owned tab IDs.
agent_session_listList agent-owned browser sessions. By default returns active/error sessions and omits closed sessions.
agent_session_nameSet the title of an agent's logical session fleet. The name is retained in extension session state; Crawlio does not request Chrome's tabGroups permission.
agent_session_snapshotCapture a snapshot from an agent-owned browser session without activating the tab. Modes: aria, screenshot, page, or all. ARIA snapshots populate refs for later agent_session_action calls.
agent_session_statusGet status for an agent-owned browser session, including tab metadata, action count, error state, and optional page summary/artifacts.
browser_clickClick an element on the active tab. Target by ref (from browser_snapshot, preferred) or CSS selector. Auto-waits for element to be visible and enabled before acting. Settles 500ms after action for SPA re-renders.
browser_double_clickDouble-click on an element. Target by ref (from browser_snapshot, preferred) or CSS selector. Dispatches two click pairs with clickCount 1 then 2 (chromedriver pattern).
browser_dragDrag from one element to another. Target by refs (from browser_snapshot, preferred) or CSS selectors. Simulates mousedown on source, interpolated mousemove steps to target, mouseup on target.
browser_evaluatewrite actionExecute a JavaScript expression in the page context and return the result. Useful for reading page state, checking values, or performing calculations.
browser_file_uploadwrite actionUpload files to a file input element. The element must be an <input type='file'>. Files are specified by their absolute paths on the local machine.
browser_fill_formFill multiple form fields at once. Each field is targeted by ref (from browser_snapshot). Supports textbox, checkbox, radio, and combobox types. Returns post-fill snapshot.
browser_hoverHover over an element on the active tab. Target by ref (from browser_snapshot, preferred) or CSS selector. Dispatches a mouseMoved event to the element's center coordinates.
browser_interceptIntercept network requests on the active tab via CDP Fetch domain. Can block, modify headers, or mock responses for matching URL patterns. Call with action='disable' to stop interception.
browser_navigateNavigate the active tab to a URL. Waits for page load to complete, then settles 1000ms for SPA hydration before returning.
browser_press_keyPress a keyboard key (Enter, Tab, Escape, ArrowDown, Backspace, etc.). Dispatches keyDown + keyUp events via CDP. Supports modifier keys.
browser_scrollScroll the page or scroll an element into view. Use ref (preferred) or selector to scroll an element into view. Use deltaX/deltaY for additional scroll offset after positioning. Returns post-scroll snapshot.
browser_select_optionSelect an option in a <select> element by value. Target by ref (from browser_snapshot, preferred) or CSS selector. Auto-waits for element to be visible and enabled before acting. Settles 500ms after selection.
browser_snapshotCapture accessibility snapshot of the current page. Returns a compact ARIA tree with ref strings (e.g., [ref=e1]) for interactive elements. Use refs with browser_click, browser_type, browser_hover to target elements without constructing CSS selectors. Refs are valid until the page navigates or significant DOM changes occur \u2014 call browser_snapshot again after navigation. Options: interactive=t
browser_typeType text into an editable element. Uses atomic Input.insertText by default (no double-character bugs on SPAs). Set slowly=true for per-character key events. Set submit=true to press Enter after typing.
browser_waitWait for a specified number of seconds (max 30). Useful for waiting for animations, network requests, or page transitions.
browser_wait_forWait for an element matching a CSS selector to reach a specific state. States: 'attached' (exists in DOM), 'visible' (visible and has dimensions), 'hidden' (not visible or not in DOM), 'detached' (removed from DOM). Returns when condition is met or timeout expires.
cancel_pickerwrite actionCancel an in-progress pick_element overlay on the connected tab and remove its highlight. Safe to call when no picker is active.
capture_pageCapture comprehensive browser data for the active tab: framework detection, network requests, console logs, and DOM snapshot. Optionally sends results to Crawlio.
clear_storageClear all localStorage or sessionStorage items for the current page.
close_tabClose a browser tab by its ID. If the tab is currently connected for CDP capture, it will be disconnected first. Returns success/failure.
connect_tabPin a browser tab for subsequent commands and start CDP capture. Three modes: (1) provide a URL: with the optional tabs grant Crawlio reuses a match, otherwise it creates a fresh owned tab; (2) provide a tabId to adopt a specific existing tab (tabs grant required); (3) no args to discover and pin the active tab (tabs grant required). Pass background:true to avoid stealing the user's active tab/win
create_tabwrite actionCreate a new browser tab with the given URL. Pass connect:true to auto-attach CDP and start capturing \u2014 the tab is immediately ready for interaction (screenshot, evaluate, navigate, etc).
delete_cookieswrite actionDelete browser cookies matching the given criteria. At minimum, name is required. Optionally scope by domain and path.
detect_frameworkDetect the JavaScript framework used by the active tab (Next.js, Nuxt, React, Vue, Svelte, Angular, Gatsby, Remix, Astro, etc.)
diff_snapshotCompare the current ARIA snapshot against a previous one using Myers line-level diff. Returns a unified diff with addition/removal stats. If no baseline is provided, diffs against the last cached snapshot (from the most recent browser_snapshot call). Use this to verify interaction effects \u2014 click a button, then diff to see what changed.
disconnect_tabDisconnect from the current tab. Detaches CDP debugger, stops capture, and clears connection state. Safe to call even if not connected.
emulate_deviceEmulate a specific device by name. Sets viewport, scale factor, user agent, and mobile flag to match the device. Supported: 'iPhone 14', 'iPhone 14 Pro Max', 'iPhone SE', 'iPad Pro 11', 'iPad Mini', 'Pixel 7', 'Galaxy S24', 'Desktop 1920x1080', 'Desktop 1440x900', 'Desktop 1366x768'.
emulate_networkEmulate network conditions (throttling). Use a preset name or custom values. Presets: offline, slow-3g, fast-3g, 4g, wifi. Call with no args to clear throttling.
enrich_urlNavigate to a URL, capture browser intelligence (framework, network, console, DOM), and send enrichment to Crawlio \u2014 all in one call. Compound tool: connects tab if needed, navigates, waits for hydration, captures, and posts enrichment. Returns a compact summary (not the full capture).
export_session_rawExport the active tab's cookies to ~/.crawlio/<domain>-session.json WITHOUT redaction, so you can reuse your own authenticated session across runs. Writes the raw CDP cookie array to disk \u2014 the file contains live credentials, so treat it like a password and keep it out of version control. The output path is confined to your home directory. Optionally filter by a specific domain.
extract_siteStart a Crawlio crawl of the active tab's URL. Requires Crawlio to be running.
get_accessibility_treeGet the accessibility tree (AXTree) of the current page. Returns a simplified tree with role, name, value, description, and children for each node. Useful for understanding page structure from a screen-reader perspective. Optionally limit depth to reduce output size.
get_capabilitiesReport browser-bridge command availability for the current tab, CDP domains, and optional permissions. Shows which commands are available, use a fallback, or are unavailable.
get_connection_statusGet current connection state: whether a tab is connected, CDP debugger attached, MCP server connected, and capture status. Use to check if connect_tab is needed.
get_console_logsGet console logs (errors, warnings, info, debug) from the active tab.
get_cookiesGet cookies for the active tab's page via CDP Network.getCookies with document.cookie fallback. Returns domain-scoped cookies with sensitive values (session, csrf, auth, jwt) redacted.
get_crawl_statusGet the current Crawlio crawl status \u2014 engine state, progress counters, sequence number.
get_crawled_urlsGet URLs crawled by Crawlio with their status, content type, and size. Supports filtering by status (queued/downloading/completed/failed) and type (html/css/js/image). Returns paginated results.
get_dialogGet the current pending JavaScript dialog (alert/confirm/prompt/beforeunload). Returns null if no dialog is open. Use handle_dialog to accept or dismiss it.
get_dom_snapshotGet a simplified DOM snapshot of the active tab (strips script/style/svg, captures tag/attrs/text/children). Returns stats summary by default; set summarize=false for full tree.
get_enrichmentGet browser enrichment data stored in Crawlio for a URL (framework, network, console, DOM).
get_frame_treeGet the frame hierarchy of the current page. Returns all frames (main + iframes) with their IDs, URLs, names, and parent relationships. Use frameId with switch_to_frame to execute JS in a specific frame.
get_performance_metricsGet performance metrics for the current page. Includes Chrome's built-in metrics (DOM nodes, JS heap, layout counts, script duration) and Web Vitals (LCP, CLS, FID). Useful for performance auditing and optimization.
get_response_bodyGet the response body for a network request by URL or requestId. The request must have been captured during the current network capture session. Returns body as text (HTML/JSON/CSS) or base64 (binary content like images).
get_security_stateGet the current page's security state including TLS certificate details, protocol, cipher, and mixed content status.
get_storageRead localStorage or sessionStorage items for the current page. Returns all items as key-value pairs, or a single item if key is specified.
get_user_tabsList all of the user's open tabs across every window, most-recently-accessed first, with window and tab-group membership. Broader than list_tabs (includes non-HTTP and ungrouped tabs). Requires the tabs permission.
get_websocket_connectionsList all WebSocket connections observed since network capture started. Shows connection URL, status (connecting/open/closed/error), and message count. Requires active network capture.
get_websocket_messagesGet WebSocket messages for a specific connection or all connections. Returns message direction (sent/received), opcode, data payload, and timestamp.
handle_dialogAccept or dismiss the current JavaScript dialog. For 'prompt' dialogs, optionally provide text to enter. For 'beforeunload' dialogs, accept=true allows navigation, accept=false stays on page.
ignore_certificate_errorsEnable or disable ignoring certificate errors. When enabled, self-signed and expired certificates will not block navigation. Useful for testing staging environments.
list_profilesList the Chrome profiles that have connected to this server, marking which one currently holds the browser connection. A profile appears once its extension has connected at least once \u2014 Chrome gives an extension no way to see other profiles, so a profile that has never connected is invisible here.
list_service_workersList all service worker registrations for the current page. Shows scope URL, script URL, running status, and lifecycle state.
list_tabsList all open HTTP/HTTPS browser tabs with their IDs, URLs, titles, and which tab is currently connected. Use this to discover tab IDs for connect_tab.
monitor_pageManage extension-resident page monitoring. start creates an extension-owned background tab, captures a compact ARIA baseline, and schedules Chrome-alarm recaptures that continue with no MCP server connected. status/results query retained local data; stop ends collection; clear deletes a monitor and its snapshots. Data is bounded and managed through these explicit lifecycle actions; no additional C
pick_elementInteractive element picker (extension-only \u2014 needs a human at the tab). Injects a hover-highlight overlay into the connected page; the user clicks an element and the tool returns a VERIFIED selector plus the 5-rail SelectorBundle (xpath/attribute/classChain/textContent/rolePlusText) forged by the @crawlio/selectors kernel and gated by resolvesExactlyTo. Set multiple=true to pick a repeating s
print_to_pdfGenerate a PDF of the current page. Returns base64-encoded PDF data. Supports landscape/portrait orientation, custom scale, margins, page ranges, paper size, and preset formats (letter, legal, tabloid, a3, a4, a5).
reconnect_tabForce reconnect to the connected tab \u2014 detach CDP debugger and reattach, re-enabling all domains. Use when tools fail with stale connection or timeout errors.
recording_artifactsList files in a canonical RecordingBundle directory without loading large bodies into the MCP response.
recording_capture_bundleOne-shot background canonical capture for automated flows: opens an owned tab without taking focus, starts a bundle, optionally waits for network idle, then stops and writes RecordingBundle v1 artifacts. For human demos prefer recording_start then recording_stop.
recording_clearwrite actionDelete one stopped canonical recording's extension-retained record while preserving every materialized RecordingBundle file. Requires explicit confirmation; stop an active recording first.
recording_startStart an extension-resident canonical RecordingBundle v1 capture. Collection and bounded retention continue without an MCP process; this compatibility tool writes manifest.json and later materializes the resident export.
recording_statusReport active canonical RecordingBundle captures and the underlying browser recording status.
recording_stopStop a canonical RecordingBundle capture. Dumps stateLog first, stops recording, fetches response bodies by requestId while CDP Network is still enabled, then stops network capture and writes all bundle artifacts.
recording_validate_bundleValidate that a canonical RecordingBundle directory contains the required v1 artifacts.
replay_requestRe-fire a previously captured network request with optional modifications. Requires active network capture. Specify the request by URL. Optionally override headers, body, or method. Returns the new response status, headers, and body. Useful for API testing, auth token replay, and form submission testing.
robot_training_artifactsList files in a robot-training artifact directory. Use after robot_training_stop to discover recording, network, body, state, and flows.jsonl files for robot training or OpenAPI synthesis.
robot_training_clearwrite actionDelete one stopped/interrupted/error robot-training record from the extension's bounded IndexedDB retention. Requires explicit confirmation and never deletes canonical artifact files. Active runs must be stopped first.
robot_training_startStart an extension-resident robot-training run. Chrome owns the event monitor, recording state, and bounded IndexedDB retention, so collection continues while MCP is disconnected or restarted. The server writes an initial manifest and later materializes the resident capture as a canonical bundle.
robot_training_statusQuery extension-owned robot-training runs and recording state. Status survives MCP server restarts and reports whether a retained bundle is available.
robot_training_stopStop an extension-resident robot-training run, fetch its bounded/redacted export, and materialize the complete 13-file RecordingBundle: manifest/raw dump, recording, network, bodies, state log/state, flows, causal graph/markdown, recipe, registry, and a captured-endpoint OpenAPI draft that requires validation. The extension fetches response bodies before its Network domain is stopped.
semantic_classifyClassify text against caller-provided labels using Crawlio's local semantic grounding seam. Provider outputs are advisory and provenance-stamped.
semantic_findFind page candidate refs for a natural-language query using Crawlio's local semantic grounding seam. Provider outputs are advisory and include provenance; they do not authorize actions.
set_cache_disabledEnable or disable browser cache. When disabled, the browser will not serve cached resources.
set_cookieSet a browser cookie. Requires name, value, and domain at minimum. The cookie is set via CDP Network.setCookie, not document.cookie, so httpOnly cookies can be set.
set_extra_headersSet extra HTTP headers to be sent with every request. Pass an empty object to clear. Useful for auth tokens, custom X-headers, A/B test variants.
set_geolocationOverride the browser's geolocation. Affects navigator.geolocation.getCurrentPosition() and watchPosition(). Pass no arguments to clear the override and revert to real location.
set_stealth_modeEnable or disable anti-detection stealth mode. When enabled, patches navigator.webdriver, plugins, WebGL renderer, and other automation signals to avoid bot detection. Disabled by default. Call with enabled: true to activate.
set_storageSet a localStorage or sessionStorage item for the current page.
set_user_agentOverride the browser's User-Agent string. Affects all subsequent requests and navigator.userAgent.
set_viewportSet the browser viewport dimensions. Affects page layout and media queries. Does not affect the actual browser window size.
start_network_captureStart capturing network requests on the active tab via Chrome DevTools Protocol. Call stop_network_capture to retrieve results.
stop_network_captureStop network capture and return all captured requests with timing, size, and type information.
switch_profileMove the browser connection to another Chrome profile. One profile is driven at a time; this chooses which. The current profile's extension is released and reconnects in the background, so switching back is immediate. Pass no profileId to clear the preference and accept whichever profile connects first.
switch_tabSwitch browser focus to a specific tab by its ID. Makes the tab active/visible. Does NOT connect CDP \u2014 use connect_tab after switching if needed.
switch_to_frameSwitch execution context to a specific frame by its frameId (from get_frame_tree). Subsequent browser_evaluate, browser_click, browser_type, and browser_wait_for calls will run in this frame until switched back.
switch_to_main_frameSwitch execution context back to the main (top-level) frame. Use after switch_to_frame to return to the main page context.
take_screenshotCapture the viewport, full page, or one CSS-selected element. JPEG is the bounded default; request PNG when lossless output matters. If a PNG exceeds the response budget, capture falls back to JPEG and reports its actual MIME type.
Public scan report
scanner v0.1.9 · 2026-09-23 · same rubric, same numbers if you re-run it
- Code scan47 source files scanned13/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 45 days ago12/15
- Maintainer identitynamespace and repository owner differ; website matches verified namespace6/10
Findings (1)
- highNetwork call to a paste/tunnel/webhook host
net.suspicious-hostdist/mcp-server/chunk-KOSIYU6N.js: …",meta:{generator:"Yoast SEO"},website:"https://yoast.com",implies:"WordPress"},"Schema.org":{…
How Crawlio Browser compares
Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 66/100
- higher than 23% of 866 Scraping and browsing servers
- Tools
- 100
- the typical Scraping and browsing server has 6
- Tools that change things
- 11%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 7
- more than 77% of 583 Scraping and browsing servers
What its tools let an agent do: 78 read · 1 create · 17 change · 2 delete · 2 run or deploy
Install Crawlio Browser in Claude Code, Cursor or VS Code
Runs npx -y crawlio-browser on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add crawlio-browser -- npx -y crawlio-browser
What the publisher says
From the Crawlio Browser repository's README, as published. We do not edit it. Read it on GitHub
Crawlio Browser
Documentation | API Reference | Chrome Extension
MCP server that gives AI full control of a live Chrome browser via CDP. <!--n:full-->150<!--/n--> tools with framework-aware intelligence, typed evidence infrastructure, tracking pixel analysis, technographic fingerprinting, SEO auditing, and confidence-tracked findings — captures what static crawlers can't see.
When to use Crawlio Browser
Use Crawlio Browser when your AI needs to interact with a real browser — SPAs, authenticated pages, dynamic content, JS-rendered frameworks. Unlike headless browser tools, Crawlio Browser connects to your actual Chrome via a lightweight extension, giving the AI access to your logged-in sessions, cookies, and full browser state.
Crawlio Browser vs headless browser tools: Headless tools launch a separate browser process. Crawlio Browser connects to your existing Chrome — no separate browser, no login flows, full access to your tabs and sessions.
[!WARNING]
This is the trade-off, stated plainly: connecting your own Chrome is the feature, and it means
an AI agent can act as you on every site you are logged into. It attaches Chrome's debugger to
the tab you connect, so it can read cookies, storage, and page content for that session.
Review what you connect it to. Prefer a dedicated Chrome profile for agent work. Nothing is
captured until you connect a tab, and you can see the exact tool surface before configuring
anything by running npx crawlio-browser tools. Sites can opt out with
, which the extension honors.
Quick Start
- Install the Chrome Extension
- Run the init wizard:
npx crawlio-browser initThat's it. Auto-detects and configures 14 MCP clients: Claude Code, Cursor, VS Code, Codex, Gemini CLI, Claude Desktop, ChatGPT Desktop, Windsurf, Cline, Zed, Goose, OpenCode, MCPorter, and Cline CLI.
Init wizard options
npx crawlio-browser init # Default: code mode, stdio transport
npx crawlio-browser init --full # Full mode (every tool exposed individually)
npx crawlio-browser init --portal # Portal mode (persistent HTTP server)
npx crawlio-browser init --cloudflare # Add Cloudflare MCP (89 tools, no wrangler)
npx crawlio-browser init --dry-run # Show what would happen
npx crawlio-browser init --yes # Skip prompts (CI / scripted installs)
npx crawlio-browser init -a claude # Target specific MCP clientAs an Agent Plugin
The package is also an Agent Plugins v1 plugin, so a conformant client can load it directly instead of running the wizard — plugin.json at the root, the eleven skills under skills/, and the MCP server declared in mcp.json.
The product-facing crawlio- workflows are folded into the eleven shipped skills. The similarly named definitions in agents/ remain repo-local development fixtures: they import src/evidence/ and loops/*, neither of which is part of the npm runtime. They are excluded from package.json instead of advertising a second, non-executable product surface.
Point the client at the installed package:
node_modules/crawlio-browser # after `npm install crawlio-browser`Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Crawlio Browser: common questions
- Is Crawlio Browser MCP server safe?
- With care: it is graded C, so read the findings first (66/100). Read the Crawlio Browser safety report
- How do I install Crawlio Browser?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Crawlio Browser need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Crawlio Browser maintained?
- The last commit was 86 days ago (2026-08-10). The latest release is v1.11.0.
- What can I use instead of Crawlio Browser?
- Servers from other publishers that do the same job: NexusBrowser MCP server, Agent Browser MCP server and Next AI Draw.io MCP server.
- How does Crawlio Browser compare with other Scraping and browsing MCP servers?
- safety score 66/100 (higher than 23% of 866 Scraping and browsing servers); tools 100 (the typical Scraping and browsing server has 6); tools that change things 11% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Crawlio Browser
Same job from other publishers: the closest match first, then the best rated.
NexusBrowserYour real Chrome in background tabs (Windows; needs the NexusBrowser bridge and extension).not reviewedGrowingA- Agent BrowserSelf-hosted Chrome for AI agents, with a live noVNC view a human can take over.not reviewedGrowingB
- Next AI Draw.iodraw.io diagrams your AI agent draws on a live browser canvas that you can also edit by handnot reviewedWidely usedA
- SafariNative Safari browser automation for AI agents — 98 tools, zero Chrome overhead.not reviewedEstablishedC
- CloakBrowser MCPPlaywright MCP-compatible browser automation bridge for CloakBrowser Chromium.not reviewedEstablishedB