real-browser-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WS_PORT | No | WebSocket port for extension connection | 7225 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_navigateB | Navigate to a URL in the active browser tab |
| browser_clickC | Click an element on the page using a ref from snapshot or a CSS selector |
| browser_typeC | Type text into an input element |
| browser_scrollB | Scroll the page or an element. Supports pixel offsets, scrolling to elements, and named positions (top/bottom). Works with virtual scroll containers used by social media sites. |
| browser_press_keyB | Press a keyboard key or combination (Enter, Escape, Tab, ArrowDown, etc). Supports modifiers like Ctrl+A, Cmd+C. |
| browser_waitB | Wait for a condition: element to appear, element to disappear, or a fixed delay. Useful for SPAs and dynamic content. |
| browser_snapshotA | Get an accessibility tree snapshot of the page. Returns element refs you can use with click, type, and other tools. Use compact mode (default) for smaller output - only interactive elements. |
| browser_screenshotC | Capture a screenshot of the visible page area |
| browser_consoleC | Read console messages (log, warn, error) from the browser |
| browser_networkB | Read network requests made by the page. Filter by URL pattern. |
| browser_tabsB | Manage browser tabs and the extension-managed tab group. list/create/close/focus tabs. name puts the tab into a Real Browser MCP tab group and sets the group title (emoji in the title is shown as the group icon). ungroup removes the tab from its group. |
| browser_findA | Find elements on the page using natural language (e.g. "login button", "search input"). Returns refs you can use with click/type. |
| browser_textC | Extract raw text content from the page or a specific element |
| browser_hoverC | Hover over an element to trigger tooltips, dropdown menus, or hover states |
| browser_selectC | Select an option from a dropdown/select element |
| browser_evaluateA | Execute JavaScript in the page and return the result. Use for DOM queries, reading page state, or any operation not covered by other tools. |
| browser_click_textA | Click an element by its visible text content. Works on React dropdowns, portals, and overlays that may not appear in snapshots. CSP-safe (no eval). Prefers deepest matching element. |
| browser_handle_dialogA | Handle JavaScript dialogs (alert, confirm, prompt). Dialogs block page interaction until handled. |
| browser_upload_fileA | Upload a file through a file input element. Uses CDP DOM.setFileInputFiles — works even on strict-CSP pages. Provide the local file path and either a ref from snapshot, a CSS selector targeting the file input, or omit both to auto-find the first input[type="file"]. |
| browser_run_actionB | Run a self-contained JavaScript action object in the page context via CDP. The code must be an expression that evaluates to an object with an execute(params) method. Returns the action result directly. Bypasses CSP restrictions. |
| browser_dragB | Drag from one element or position to another. Uses CDP mouse events for reliable drag-and-drop. Provide either refs/selectors or explicit x,y coordinates. |
| browser_fill_formA | Fill multiple form fields in a single call. Supports text inputs, selects, checkboxes, and contentEditable elements. Reduces round-trips compared to calling browser_type for each field individually. Optionally submit the form after filling. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Most tools have clearly distinct purposes (click, type, snapshot, navigate, etc.), but there is overlap: browser_evaluate and browser_run_action both execute JavaScript, and browser_click, browser_click_text, and browser_find can be confused for locating and clicking elements. Descriptions mostly clarify these boundaries, but an agent may still hesitate between the JS execution tools and the click variants.
All tool names use the browser_ prefix and snake_case, which is highly predictable. However, the second component mixes verbs (click, type, navigate) and nouns (console, network, tabs, screenshot, text), so it is not a strict verb_noun pattern.
22 tools is on the heavy side of the ideal 3-15 range, but each tool maps to a distinct browser automation capability such as interaction, observation, navigation, or tab management. The breadth is justified for a full-featured browser control server, though some consolidation (e.g., click variants) would improve usability.
The surface covers navigation, element interaction, observation, waiting, dialogs, and tabs, leaving few dead ends. Minor gaps include browser history (back/forward), cookie/storage management, and download handling, but core automation workflows are well supported.