Playwright MCP Server
Supports returning screenshots in compressed JPEG format through the browser_take_screenshot tool, with an option to toggle between JPEG and PNG formats.
Click on "Install 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., "@Playwright MCP Servergo to apify.com and take a snapshot of the homepage"
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.
Playwright MCP Server
This Actor wraps the playwright-mcp project to provide a serverless Playwright browser in the cloud. A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually tuned models.
All credits to the original authors of https://github.com/microsoft/playwright-mcp
๐ฉ Claim this MCP server. Contact info
Key features
๐ Uses Playwright's accessibility tree instead of pixel-based input for faster, lighter operation
๐ Works with structured data only - no vision models required
๐ฏ Applies tools deterministically, avoiding the ambiguity of screenshot approaches
๐ Supports Apify Proxy (datacenter, residential, custom) and other Apify features
Related MCP server: Playwright MCP
Use cases
๐ Web navigation and form filling
๐ Structured data extraction
๐งช LLM-driven automated testing
๐ค Browser automation for AI agents
Tools (source)
Snapshot-based Interactions
browser_snapshot
Description: Capture accessibility snapshot of the current page, this is better than screenshot
Parameters: None
browser_click
Description: Perform click on a web page
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementref(string): Exact target element reference from the page snapshot
browser_drag
Description: Perform drag and drop between two elements
Parameters:
startElement(string): Human-readable source element description used to obtain the permission to interact with the elementstartRef(string): Exact source element reference from the page snapshotendElement(string): Human-readable target element description used to obtain the permission to interact with the elementendRef(string): Exact target element reference from the page snapshot
browser_hover
Description: Hover over element on page
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementref(string): Exact target element reference from the page snapshot
browser_type
Description: Type text into editable element
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementref(string): Exact target element reference from the page snapshottext(string): Text to type into the elementsubmit(boolean, optional): Whether to submit entered text (press Enter after)slowly(boolean, optional): Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.
browser_select_option
Description: Select an option in a dropdown
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementref(string): Exact target element reference from the page snapshotvalues(array): Array of values to select in the dropdown. This can be a single value or multiple values.
browser_take_screenshot
Description: Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
Parameters:
raw(boolean, optional): Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.element(string, optional): Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too.ref(string, optional): Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.
Vision-based Interactions
browser_screen_capture
Description: Take a screenshot of the current page
Parameters: None
browser_screen_move_mouse
Description: Move mouse to a given position
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementx(number): X coordinatey(number): Y coordinate
browser_screen_click
Description: Click left mouse button
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementx(number): X coordinatey(number): Y coordinate
browser_screen_drag
Description: Drag left mouse button
Parameters:
element(string): Human-readable element description used to obtain permission to interact with the elementstartX(number): Start X coordinatestartY(number): Start Y coordinateendX(number): End X coordinateendY(number): End Y coordinate
browser_screen_type
Description: Type text
Parameters:
text(string): Text to type into the elementsubmit(boolean, optional): Whether to submit entered text (press Enter after)
Tab Management
browser_tab_list
Description: List browser tabs
Parameters: None
browser_tab_new
Description: Open a new tab
Parameters:
url(string, optional): The URL to navigate to in the new tab. If not provided, the new tab will be blank.
browser_tab_select
Description: Select a tab by index
Parameters:
index(number): The index of the tab to select
browser_tab_close
Description: Close a tab
Parameters:
index(number, optional): The index of the tab to close. Closes current tab if not provided.
Navigation
browser_navigate
Description: Navigate to a URL
Parameters:
url(string): The URL to navigate to
browser_navigate_back
Description: Go back to the previous page
Parameters: None
browser_navigate_forward
Description: Go forward to the next page
Parameters: None
Keyboard
browser_press_key
Description: Press a key on the keyboard
Parameters:
key(string): Name of the key to press or a character to generate, such asArrowLeftora
Console
browser_console_messages
Description: Returns all console messages
Parameters: None
Files and Media
browser_file_upload
Description: Upload one or multiple files
Parameters:
paths(array): The absolute paths to the files to upload. Can be a single file or multiple files.
browser_pdf_save
Description: Save page as PDF
Parameters: None
Utilities
browser_close
Description: Close the page
Parameters: None
browser_wait
Description: Wait for a specified time in seconds
Parameters:
time(number): The time to wait in seconds
browser_resize
Description: Resize the browser window
Parameters:
width(number): Width of the browser windowheight(number): Height of the browser window
browser_install
Description: Install the browser specified in the config. Call this if you get an error about the browser not being installed.
Parameters: None
browser_handle_dialog
Description: Handle a dialog
Parameters:
accept(boolean): Whether to accept the dialog.promptText(string, optional): The text of the prompt in case of a prompt dialog.
Available Tools
7 toolsexecute-codeA
Execute custom Playwright JS code against the current page
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The Playwright code to execute. Must be an async function declaration that takes a page parameter. Example: async function run(page) { console.log(await page.title()); return await page.title(); } Returns an object with: - result: The return value from your function - logs: Array of console logs from execution - errors: Array of any errors encountered Example response: {"result": "Google", "logs": ["[log] Google"], "errors": []} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool executes code and implies mutation (since it interacts with the page), but lacks details on permissions, error handling, or performance impacts. The input schema's example hints at return structure, but the description itself doesn't explicitly cover behavioral traits like safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose without unnecessary words. It efficiently communicates the core function, making it easy for an agent to quickly understand what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (code execution with potential side effects) and no annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks details on usage context, error handling, or return values, which are crucial for safe and effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by emphasizing the code must be 'Playwright JS' and target 'the current page', providing context beyond the schema's technical details. However, it doesn't elaborate on parameter constraints or usage nuances, keeping it at a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Execute custom Playwright JS code') and target ('against the current page'), distinguishing it from sibling tools that retrieve data or initialize the browser. It precisely communicates the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get-full-dom' or 'get-screenshot'. It lacks context about prerequisites (e.g., needing an initialized browser) or scenarios where code execution is preferred over simpler retrieval methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-full-domA
Get the full DOM of the current page. (Deprecated, use get-context instead)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does and its deprecation status. It lacks details on behavioral traits like performance implications, error handling, or output format, though the deprecation warning is useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is extremely concise with two sentences that are front-loaded and essential: the first states the purpose, the second provides critical usage guidance. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is nearly complete for its purpose. It covers what the tool does and key usage guidance, though it could benefit from mentioning output behavior or limitations to be fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score above 3 for not adding unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('full DOM of the current page'), with explicit differentiation from its sibling 'get-context'. It avoids tautology by not just repeating the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly provides when-not-to-use guidance by marking the tool as deprecated and naming the alternative 'get-context'. This gives clear direction for selection among tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-full-snapshotB
Get a complete snapshot of the page including all visible content (text, images, forms, etc.) for understanding the full context
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool captures 'all visible content' but doesn't specify details like whether it requires an active browser session, how it handles dynamic content, potential performance impacts, or what the output format looks like. This leaves significant gaps for a tool that likely interacts with web pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core purpose without redundancy. It's front-loaded with the main action and resource, making it easy to parse. However, it could be slightly more concise by avoiding the parenthetical elaboration, which adds minor verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's likely complexity in capturing web page snapshots, the description is insufficient. With no annotations, no output schema, and minimal behavioral details, it fails to provide enough context for effective use. It doesn't explain what 'complete snapshot' entails, how it differs from siblings, or what the agent should expect as a result, leaving critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't add unnecessary parameter details, aligning with the empty input schema. A baseline score of 4 is applied as it doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get a complete snapshot') and resources ('page including all visible content'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get-full-dom' or 'get-text-snapshot', which likely serve similar but distinct purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance on when to use this tool, only mentioning it's 'for understanding the full context'. It doesn't specify when to choose this over alternatives like 'get-text-snapshot' or 'get-screenshot', nor does it mention any prerequisites or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-interactive-snapshotB
Get a snapshot focused on interactive elements (buttons, links, inputs) with annotated screenshot for UI automation
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (gets a snapshot with annotations) but lacks details on behavioral traits such as performance characteristics, error handling, or whether it requires specific browser states. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and context without any wasted words. It is front-loaded with key information ('Get a snapshot focused on interactive elements') and appropriately sized for its complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description is minimally adequate. It explains what the tool does and its intended use ('for UI automation'), but it lacks details on output format, behavioral constraints, or how it differs from siblings. This leaves gaps in understanding for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't mention any parameters, which is appropriate. A baseline score of 4 is applied since there are no parameters to document, and the description doesn't add unnecessary details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a snapshot focused on interactive elements (buttons, links, inputs) with annotated screenshot for UI automation.' It specifies the verb ('Get'), resource ('snapshot'), and scope ('interactive elements'), though it doesn't explicitly differentiate from sibling tools like 'get-full-snapshot' or 'get-screenshot' beyond mentioning 'focused on interactive elements.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for UI automation') and suggests when to use it (when needing interactive elements), but it doesn't provide explicit guidance on when to choose this tool over alternatives like 'get-full-snapshot' or 'get-screenshot.' No exclusions or prerequisites are mentioned, leaving usage somewhat open to interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-screenshotB
Get a screenshot of the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get a screenshot' implies a read-only operation, it doesn't specify whether this captures the entire viewport, includes scrolling, returns an image format, or has any performance implications. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what the tool returns (e.g., image data, file path, base64 string) or any behavioral nuances like viewport settings or error conditions. For a tool that likely produces visual output, this omission is significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention any parameters, which aligns perfectly with the schema. A baseline of 4 is justified since the description doesn't need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('screenshot of the current page'), making the tool's purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'get-full-snapshot' or 'get-interactive-snapshot', which might also capture visual representations of the page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get-full-snapshot' or 'get-interactive-snapshot'. It also doesn't mention prerequisites such as needing an initialized browser context, which is implied by sibling tools like 'init-browser'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-text-snapshotB
Get all text content from the page (headings, paragraphs, lists) for reading and content extraction
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'gets all text content' but does not specify behavioral traits such as performance characteristics (e.g., speed, pagination), error handling, or whether it requires specific page states (e.g., loaded page). This leaves gaps in understanding how the tool behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Get all text content') and specifies the scope ('from the page') and use cases ('for reading and content extraction'). Every word contributes to understanding without waste, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple text extraction with no parameters) and lack of annotations or output schema, the description is minimally complete. It states what the tool does but lacks details on output format (e.g., structured text, raw string) or behavioral context, which could be important for an agent to use it effectively in varied scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing on the tool's purpose instead. This meets the baseline for tools with no parameters, as it avoids unnecessary details and adds value by clarifying the tool's intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('get all text content') and resources ('from the page'), specifying content types like headings, paragraphs, and lists. It distinguishes the tool by focusing on text extraction for reading, but does not explicitly differentiate it from sibling tools like get-full-dom or get-full-snapshot, which might also retrieve text content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for 'reading and content extraction,' suggesting when to use this tool (e.g., for text analysis). However, it lacks explicit guidance on when not to use it or alternatives among sibling tools (e.g., vs. get-full-dom for full DOM or get-screenshot for visual capture), leaving usage context partially inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init-browserC
Initialize a browser with a URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to navigate to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Initialize a browser') but lacks details on what this entailsโe.g., whether it creates a new browser instance, reuses an existing one, requires specific permissions, has side effects (like opening a window), or includes error handling. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded with the core action ('Initialize a browser') and includes the essential parameter context ('with a URL'). Every part of the description earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of browser initialization (which involves system resources and potential side effects), no annotations, and no output schema, the description is incomplete. It doesn't explain what happens after initialization (e.g., whether it returns a browser session ID, waits for page load, or handles errors), leaving the agent with insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'with a URL', which aligns with the single parameter 'url' in the input schema. Since schema description coverage is 100% (the schema already documents 'url' as 'The URL to navigate to'), the description adds minimal value beyond restating the parameter's existence. This meets the baseline score of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Initialize a browser') and the target resource ('with a URL'), making the purpose understandable. It distinguishes from siblings like 'get-screenshot' or 'execute-code' by focusing on browser initialization rather than data extraction or code execution. However, it doesn't explicitly differentiate from potential similar tools (e.g., 'launch-browser'), which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether a browser session must be active), exclusions (e.g., when not to initialize), or direct comparisons to sibling tools like 'get-full-dom' (which might require an initialized browser). This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- Removed
get-context - Changed
get-full-dom1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
get-full-snapshot - Added
get-interactive-snapshot - Changed
get-screenshot1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Added
get-text-snapshot
5 tool updates
- First observed
execute-code - First observed
get-context - First observed
get-full-dom - First observed
get-screenshot - First observed
init-browser
TDQS
The tools have overlapping purposes that could cause confusion, particularly around snapshot variants (get-full-snapshot, get-interactive-snapshot, get-text-snapshot) which all extract page content in different ways. However, descriptions help differentiate them by specifying focus areas like interactive elements or text content, preventing complete misselection.
Tool names follow a consistent verb-object pattern with hyphens (e.g., execute-code, get-screenshot), making them predictable and readable. The only minor deviation is 'init-browser' which uses 'init' instead of a more standard verb like 'launch' or 'open', but it still fits the overall naming convention.
With 7 tools, this server is well-scoped for browser automation with Playwright, covering key operations like initialization, code execution, and various content extraction methods. Each tool earns its place by addressing distinct aspects of web interaction without being overly sparse or bloated.
The toolset provides solid coverage for core Playwright workflows, including browser setup, DOM/content access, and automation execution. A minor gap exists in navigation control (e.g., no explicit 'navigate' or 'go-back' tools), but agents can work around this using execute-code or init-browser with URLs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
AlicenseBqualityAmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.2246,364,01136,824Apache 2.0- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually-tuned models.6Apache 2.0
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.246,364,011Apache 2.0
- AlicenseAqualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.226,364,011Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AkhatorKing1/accessibility-playwright-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server