parallel-browser-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| --caps | No | Extra Playwright MCP capabilities, for example vision,pdf. | |
| --headed | No | Run the browser headed instead of headless. | false |
| --browser | No | Browser to use: chrome, msedge, or chromium. | chrome |
| --data-dir | No | Directory for profiles and output files. | ~/.parallel-browser |
| --concurrency | No | Default concurrency for run_parallel. | 4 |
| --idle-minutes | No | Idle timeout in minutes for headless sessions; 0 means never. | 30 |
| --max-sessions | No | Maximum number of open sessions. | 8 |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| session_createA | Open a new isolated browser session (own cookies, storage and tabs) with options. Optional: any browser_* call with a new session id creates a default session automatically. Use it for a visible window (headed), a saved login (profile), device emulation, faster scraping (blockResources), or a logged-in worker copied from another session (cloneFrom). |
| session_listA | List open sessions with their mode, tabs and whether they are busy. |
| session_closeA | Close one session, or all, and free their memory. Profile sessions keep their saved logins on disk. |
| run_parallelA | Run many browser tasks at the same time in ONE call. Each task is a list of browser_* steps run in order in its own session; tasks run concurrently server-side. Use it to visit or scrape many pages at once, or to repeat a flow across sessions. Steps cannot use snapshot refs they have not seen, so target elements with CSS selectors (target accepts a selector) or use browser_evaluate / browser_run_code_unsafe. Keep output small: end tasks with browser_evaluate returning only the data you need. |
| browser_closeB | Close this session: its tabs, cookies and storage. Profile sessions keep their saved login on disk. |
| browser_resizeC | Resize the browser window |
| browser_console_messagesC | Returns all console messages |
| browser_handle_dialogC | Handle a dialog |
| browser_emulate_mediaA | Emulate CSS media features for the page, for example switch between the light and dark color scheme. Omitted parameters are left unchanged; null clears an override. |
| browser_evaluateC | Evaluate JavaScript expression on page or element |
| browser_file_uploadC | Upload one or multiple files |
| browser_dropB | Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided. |
| browser_findA | Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref. |
| browser_fill_formC | Fill multiple form fields |
| browser_press_keyC | Press a key on the keyboard |
| browser_typeC | Type text into editable element |
| browser_navigateC | Navigate to a URL |
| browser_navigate_backC | Go back to the previous page in the history |
| browser_network_requestsA | Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details. |
| browser_network_requestA | Returns full details (headers and body) of a single network request, or a single part if |
| browser_run_code_unsafeA | Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent. |
| browser_take_screenshotA | Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions. |
| browser_snapshotB | Capture accessibility snapshot of the current page, this is better than screenshot |
| browser_clickC | Perform click on a web page |
| browser_dragB | Perform drag and drop between two elements |
| browser_hoverC | Hover over element on page |
| browser_select_optionC | Select an option in a dropdown |
| browser_tabsC | List, create, close, or select a browser tab. |
| browser_wait_forB | Wait for text to appear or disappear or a specified time to pass |
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 29 tools
Most tools map to distinct browser actions (click, type, hover, drag, navigate, snapshot, etc.), so an agent can usually choose correctly. However, session_close and browser_close both appear to close the current session, and browser_evaluate vs browser_run_code_unsafe overlap in executing JavaScript.
Names are consistently snake_case and grouped with predictable browser_ and session_ prefixes. Minor deviations include run_parallel without a prefix and a mix of verb-based (browser_click) and noun-based (browser_snapshot, browser_tabs) names.
29 tools is heavy for a single MCP server, even for full browser automation. Most actions are justified, but the redundant close-session tools and niche operations like browser_drop and browser_emulate_media make the surface feel larger than necessary.
The surface covers a broad browser-automation lifecycle: sessions, navigation, interaction, forms, dialogs, screenshots, snapshots, network inspection, and parallel execution. Minor gaps include no forward-navigation or explicit reload tool, though these can be worked around via browser_navigate or browser_evaluate.