MCP Playwright Browser
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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.launchC | Launch Chromium with Playwright and open a new page. |
| browser.connect_cdpC | Connect to an existing Chrome/Chromium with remote debugging enabled (CDP). |
| browser.launch_chrome_cdpC | Launch Chrome with remote debugging enabled and connect via CDP. |
| browser.new_pageA | Open a new page/tab in the current context. |
| browser.closeB | Close the current browser session. |
| browser.gotoC | Navigate to a URL. |
| browser.backC | Go back in history. |
| browser.forwardC | Go forward in history. |
| browser.waitC | Wait for a selector or timeout. |
| browser.get_scroll_stateA | Get scroll metrics for the main page (window). |
| browser.scroll_byC | Scroll the main page by a delta. |
| browser.scroll_toC | Scroll the main page to an absolute position. |
| browser.get_scrollablesC | List scrollable containers on the page. |
| browser.get_container_scroll_stateC | Get scroll metrics for a specific scrollable container. |
| browser.scroll_containerC | Scroll a specific container by selector. |
| browser.snapshotB | Return a snapshot of the current page (title, url, text, links). |
| browser.listC | List visible interactive elements (links, buttons, inputs). |
| browser.clickC | Click an element by elementId, selector, or text. |
| browser.typeC | Type into an input by selector or cached elementId. |
| browser.pressC | Press a key, optionally focusing selector or elementId. |
| browser.extract_textC | Extract text from a selector. Use all=true to get all matches. |
| browser.extract_htmlC | Extract outerHTML from a selector. |
| browser.screenshotC | Save a screenshot to a path. |
| browser.visual_snapshotC | Take a screenshot and return an element map with bounding boxes for visual navigation. |
| browser.click_atB | Click at specific page coordinates (x, y). Useful for visual workflows. |
| files.write_textC | Write arbitrary text to a file path. |
| jobs.extract_indeedC | Extract jobs from an Indeed search results page. Optionally save each job to a .txt file. |
| jobs.indeed_next_pageA | Go to the next Indeed results page (direct URL by default, with optional click mode). |
| search.extract_googleC | Extract standard Google search results from the current page. Optionally save to .txt files. |
| search.googleB | Search Google and extract results for a query. Optionally save to .txt files. |
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 30 tools
Each tool has a distinct purpose; even similar tools like scroll_to and scroll_by are differentiated by delta vs absolute positioning. The namespace prefixing (browser, jobs, search) further clarifies intent.
All tools follow a consistent lowercase snake_case pattern, using verb_noun or verb_preposition structures (e.g., extract_html, scroll_to). No mixed conventions or ambiguous abbreviations.
With 30 tools, the server is on the high side for a coherent set. While the browser tools are comprehensive, the inclusion of job and search extraction tools expands the scope beyond core browser automation, making it feel slightly bloated.
The tool set covers essential browser interactions: navigation, clicking, typing, scrolling, extraction, and page management. Minor gaps exist (no network interception, no cookie handling), but for typical automation tasks it is largely complete.