Skip to main content
Glama
teifidebugger

Cloudflare Playwright MCP

Cloudflare Playwright MCP Example

Deploy to Cloudflare

Overview

This project demonstrates how to use Playwright with Cloudflare Workers as a Model Control Protocol (MCP) server using Cloudflare Playwright MCP.

It enables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.

The server can be used with various AI platforms including Cloudflare AI Playground, Claude Desktop, and GitHub Copilot in VS Code.

Deploy

Follow these steps to set up and deploy the project:

  1. Install dependencies:

npm ci
  1. Deploy to Cloudflare Workers:

npx wrangler deploy

Use with Cloudflare AI Playground

alt text

Cloudflare playground AI is a great way to test MCP servers using LLM models available in Workers AI.

  • Navigate to https://playground.ai.cloudflare.com/

  • Ensure model is set to llama-3.3-70b-instruct-fp8-fast

  • In MCP Servers, set URL to https://[my-mcp-url].workers.dev/sse

  • Click Connect

  • Status should update to Connected and it should list 14 available tools

You can now start to interact with the model, and it will run necessary tools to accomplish what was requested.

TIP

For best results, give simple instructions consisting of one single action, e. g., "Create a new todo entry", "Go to cloudflare site", "Take a screenshot"

Example of a conversation:

Role

Message

User

Go to demo.playwright.dev/todomvc

Assistant

runs browser_navigate tool The page has been navigated to https://demo.playwright.dev/todomvc/. The page title is "React • TodoMVC". The page snapshot shows the content of the page, including a heading, a textbox, and several links.

User

Create some todo entry

Assistant

runs browser_type tool A new todo entry "Buy groceries" has been created. The page snapshot shows the updated content of the page, including the new todo entry.

User

Nice. Now create a todo in parrot style

Assistant

runs browser_type tool A new todo entry "Polly wants a cracker" has been created in parrot style. The page snapshot shows the updated content of the page, including the new todo entry.

User

And create another todo in yoda style

Assistant

runs browser_type tool A new todo entry "A walk, I must take" has been created in Yoda style. The page snapshot shows the updated content of the page, including the new todo entry.

User

Take a screenshot

Assistant

runs browser_take_screenshot tool alt text A screenshot of the current page has been taken. The screenshot is in PNG format and is 56KB in size.

User

Now click the checkbox of the parrot todo entry

Assistant

runs browser_clickt tool The checkbox of the parrot todo entry "Polly wants a cracker" has been clicked. The page snapshot shows the updated content of the page, with the checkbox now checked.

User

Take a screenshot

Assistant

runs browser_take_screenshot tool alt text A screenshot of the current page has been taken. The screenshot is in PNG format and is 58KB in size.

User

Remove completed todo entries

Assistant

runs browser_clickt tool The "Clear completed" button has been clicked. The page snapshot shows the updated content of the page, with the completed todo entry "Polly wants a cracker" removed.

User

Take a final screenshot

Assistant

runs browser_take_screenshot tool alt text A final screenshot of the current page has been taken. The screenshot is in PNG format and is 50KB in size.

Use with Claude Desktop

As of now, Claude Desktop only supports local MCP servers. To use playground-mcp with Claude Desktop we make use of mcp-remote, a tool that proxies remote MCP servers and exposes them locally. Use the following configuration:

  1. Open the configuration file for Claude Desktop.

  2. Add the following JSON snippet under the mcpServers section:

{
  "mcpServers": {
    "cloudflare-playwright-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://[my-mcp-url].workers.dev/sse"
      ]
    }
  }
}
  1. Save the configuration file and restart Claude Desktop to apply the changes.

This setup ensures that Claude Desktop can communicate with the Cloudflare Playwright MCP server.

Here's an example of a session opening the TODO demo app, adding "buy lemons" and doing a screenshot, taking advantage of playwright-mcp tools and Browser Rendering:

alt text

Configure in VSCode

You can install the Playwright MCP server using the VS Code CLI:

# For VS Code
code --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'

After installation, the Playwright MCP server will be available for use with your GitHub Copilot agent in VS Code.

Available Tools

7 tools
execute-codeA

Execute custom Playwright JS code against the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe 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

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only partially discloses behavioral traits. It mentions the execution environment (Playwright JS) and that code must be an async function with a page parameter, but lacks details on permissions needed, error handling beyond the response structure, rate limits, or whether execution modifies page state. The description adds some context but leaves significant behavioral aspects unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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 with zero waste. It uses minimal words to convey essential information, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (executing arbitrary code with potential side effects) and lack of annotations and output schema, the description is incomplete. It covers the basic purpose and parameter requirement but omits critical details like safety warnings, execution constraints, or expected output behavior beyond the schema's example, leaving gaps for an AI agent to use it correctly in varied contexts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter 'code' with detailed examples and response format. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline of 3 for high schema coverage without extra value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 resource ('against the current page'), distinguishing it from sibling tools that retrieve data or initialize the browser rather than executing code. It uses precise technical language that leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'against the current page,' suggesting it should be used after browser initialization and when you need to run custom JavaScript code. However, it doesn't explicitly state when NOT to use it or name alternatives among the sibling tools (e.g., when to use this vs. get-full-dom for DOM retrieval).

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)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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 what the tool does (gets the full DOM) and its deprecated status, but doesn't provide additional behavioral context such as performance characteristics, potential limitations, or what 'full DOM' specifically entails. The description adds some value but lacks rich behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just two sentences that each earn their place: the first states the core functionality, and the second provides crucial deprecation guidance. There is zero waste or redundancy, and the most important information (the deprecation warning) is appropriately placed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a zero-parameter tool with no output schema and no annotations, the description provides adequate context by stating what it does and its deprecated status. However, it doesn't explain what 'full DOM' means or what format the output might be in, which could be helpful for an agent. The deprecation warning is the most critical contextual element and is well-covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description doesn't need to add parameter information, and it appropriately doesn't attempt to do so. A baseline of 4 is appropriate for zero-parameter tools where the schema handles all parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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'), making the purpose immediately understandable. It also distinguishes itself from siblings by mentioning a deprecated status and alternative tool ('get-context'), which helps differentiate it from other snapshot-related tools like get-full-snapshot or get-text-snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when NOT to use this tool ('Deprecated, use get-context instead'), which is crucial for agent decision-making. This directly addresses the alternative tool and effectively communicates that this tool should be avoided in favor of the recommended alternative.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the tool captures 'all visible content' but doesn't disclose behavioral traits such as performance implications, whether it requires browser initialization, potential rate limits, or how it handles dynamic content. This is inadequate 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the core functionality without waste. It is front-loaded with the main action and resource. However, it could be slightly more concise by avoiding redundancy like 'etc.' after listing content types.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (capturing full page snapshots), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the snapshot output looks like (e.g., format, structure), performance considerations, or dependencies on tools like 'init-browser'. This leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds no parameter information, focusing on the tool's purpose instead. A baseline of 4 is applied since no parameters exist, and the description doesn't introduce unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 a specific verb ('Get') and resource ('complete snapshot of the page'), and specifies what content is included ('all visible content including text, images, forms, etc.'). However, it doesn't explicitly differentiate from sibling tools like 'get-full-dom' or 'get-text-snapshot', which likely serve similar purposes, preventing 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance by stating the tool is for 'understanding the full context', which implies usage when comprehensive page analysis is needed. However, it lacks explicit when-to-use advice, alternatives (e.g., vs. 'get-text-snapshot' for text-only), or exclusions, leaving the agent with limited direction.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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, not how it behaves. It doesn't disclose whether this is a read-only operation, if it requires browser initialization, potential performance impacts, rate limits, or what 'annotated screenshot' entails. The description adds minimal behavioral context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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 a snapshot') and immediately specifies the focus and output. Every word earns its place with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no annotations, and no output schema, the description provides adequate basic purpose but lacks completeness. It doesn't explain what 'annotated screenshot' contains, how interactive elements are identified, or relationship to sibling tools like 'init-browser'. The context signals suggest simplicity, but more behavioral detail would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't waste space discussing parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters with full coverage is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 snapshot') and resources ('interactive elements'), and distinguishes it from siblings by specifying the focus on UI automation elements. However, it doesn't explicitly differentiate from similar tools like 'get-full-snapshot' or 'get-screenshot' beyond mentioning 'annotated screenshot'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context for UI automation with interactive elements, but provides no explicit guidance on when to use this tool versus alternatives like 'get-full-dom' or 'get-screenshot'. It mentions 'annotated screenshot' which suggests a visual output, but doesn't clarify trade-offs or prerequisites.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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 the basic action. It doesn't disclose behavioral traits such as whether this requires a browser session, what format the screenshot returns (e.g., image data, file path), potential errors, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (likely medium for browser interactions) and lack of annotations/output schema, the description is incomplete. It doesn't cover return values, error conditions, or dependencies on other tools like 'init-browser', leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here, earning a baseline score above 3 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('screenshot of the current page'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-full-snapshot' or 'get-interactive-snapshot' which might also capture visual elements, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., needing an initialized browser), exclusions, or comparisons to siblings like 'get-full-snapshot' for more comprehensive captures.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It states what content is retrieved but doesn't describe format (e.g., plain text, structured data), pagination, performance characteristics, error conditions, or authentication needs. For a tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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 from the page') and adds clarifying details. It avoids redundancy and wastes no words, though it could be slightly more structured for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and moderate complexity (extracting text content from a page), the description is incomplete. It lacks details on return format, error handling, performance, or how it differs from similar siblings like get-full-snapshot. The agent would need to guess key behavioral aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't add parameter details, maintaining focus on the tool's purpose. Baseline 4 is correct for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('all text content from the page'), specifying the content types (headings, paragraphs, lists) and purpose (reading and content extraction). It distinguishes from siblings like get-full-dom (full DOM) and get-screenshot (visual), but doesn't explicitly contrast with get-full-snapshot or get-interactive-snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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' contexts, suggesting when this tool might be appropriate. However, it doesn't provide explicit guidance on when to use this versus alternatives like get-full-dom or get-full-snapshot, nor does it mention prerequisites or exclusions.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to

TDQS

C2.9/5.0
Behavior2/5

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 states the action ('Initialize a browser') but doesn't explain what this entails—e.g., whether it launches a new browser instance, reuses an existing one, requires specific permissions, has side effects like network calls, or what happens on failure. For a tool with no annotations, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste: 'Initialize a browser with a URL'. It is appropriately sized and front-loaded, clearly stating the core action without unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (initializing a browser, which could involve setup, navigation, and potential side effects), no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what 'initialize' means, error handling, or return values, leaving the agent with insufficient context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the 'url' parameter fully documented in the schema as 'The URL to navigate to'. The description adds no additional meaning beyond this, such as URL format examples or constraints. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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. However, it doesn't differentiate this tool from its siblings like 'get-full-dom' or 'get-screenshot', which might also involve browser interactions, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., needing a browser session first), exclusions, or how it relates to sibling tools like 'execute-code' that might also initialize contexts. This leaves the agent with minimal context for 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.

  1. 6 tool updatesv1.0.0
    • Removedget-context
    • Changedget-full-dom1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget-full-snapshot
    • Addedget-interactive-snapshot
    • Changedget-screenshot1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget-text-snapshot
  2. 5 tool updates
    • First observedexecute-code
    • First observedget-context
    • First observedget-full-dom
    • First observedget-screenshot
    • First observedinit-browser

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have distinct purposes, with clear separation between code execution, DOM/snapshot retrieval, and browser initialization. However, get-full-dom and get-context (implied by deprecation note) could cause confusion, and the various snapshot tools (full, interactive, text) might overlap slightly in content extraction scenarios.

Naming Consistency5/5

All tool names follow a consistent verb-object pattern with hyphen separation (e.g., execute-code, get-screenshot, init-browser). The naming is predictable and readable throughout the set, with no mixing of conventions.

Tool Count5/5

With 7 tools, this server is well-scoped for Playwright automation, covering core operations like browser setup, code execution, and various snapshot types. Each tool serves a clear purpose without bloat, making it manageable and functional.

Completeness4/5

The toolset covers essential Playwright workflows: initialization, code execution, and multiple snapshot types for different contexts. A minor gap exists in navigation or page interaction tools (e.g., click, type), but agents can work around this using execute-code for custom actions.

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a browser through Playwright automation tools, allowing them to perform web tasks like navigation, typing, clicking, and taking screenshots. Deployed on Cloudflare Workers and compatible with various AI platforms including Claude Desktop and VS Code.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a web browser through tools for navigation, clicking, typing, and capturing screenshots using Cloudflare Workers. It allows models to perform complex web automation tasks and interact with live websites through a set of 14 specialized tools.
    9,320
    -

Latest Blog Posts

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/teifidebugger/playwright-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server