Playwright MCP Server (Hyhfish)
Browser automation for LLMs using structured accessibility trees instead of screenshots.
Data last scanned 3 days ago · Reviewed 3 days ago
Overview
This server leverages Playwright to provide LLMs with direct access to web pages through an accessibility tree. By focusing on structured data rather than pixel-based visual input, it aims to deliver deterministic interactions for tasks like form-filling, data extraction, and automated testing.
Our verdict
With a security score of 31/100, this tool is categorized as high risk and should be used with caution. The repository has not been updated in over 435 days, and its security profile regarding OAuth and read-only mode has not been reviewed. Given the lack of recent maintenance, users should carefully evaluate its suitability for any environment requiring up-to-date dependencies or active security patches.
- Uses accessible structured data for deterministic LLM interactions
- Supports multiple browser engines including Chrome, Firefox, and WebKit
- Includes only 4 direct dependencies to limit supply-chain surface
- Licensed under the permissive Apache-2.0 license
- High-risk security score of 31/100
- Last code commit occurred over 435 days ago
- Authentication and read-only modes remain unreviewed
Setup
{
"mcpServers": {
"hyhfish-playwright-mcp": {
"args": [
"-y",
"@hyhfish/mcp-hyh"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| browser_snapshot | Capture accessibility snapshot of the current page, this is better than screenshot | low |
| browser_click | Perform click on a web page | medium |
| browser_drag | Perform drag and drop between two elements | medium |
| browser_hover | Hover over element on page | low |
| browser_type | Type text into editable element | medium |
| browser_select_option | Select an option in a dropdown | medium |
| browser_take_screenshot | Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions. | low |
| browser_screen_capture | Take a screenshot of the current page | low |
| browser_screen_move_mouse | Move mouse to a given position | low |
| browser_screen_click | Click left mouse button | medium |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| ChatGPT | ||||
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf |
Frequently asked questions
›How does this server interact with web pages?
This server uses Playwright's accessibility tree rather than pixel-based screenshots to interact with web pages, which makes it suitable for non-vision models.
›Can I use this server with a non-Chrome browser?
Yes, you can specify different browsers such as firefox, webkit, or other Chrome/Edge channels using the --browser command-line option.
›Where does the server store my logged-in information and sessions?
The server stores browser profiles in platform-specific directories, such as AppData on Windows, Library/Caches on macOS, or .cache on Linux, which can be deleted to clear your session state.
›Is it possible to run the browser in headless mode?
Yes, you can enable headless mode by passing the --headless flag to the command or setting the headless property within the browser configuration object.
›How can I restrict network requests from the browser?
You can use the --allowed-origins and --blocked-origins flags to provide semicolon-separated lists of domains to permit or restrict respectively.
›What if I need to use screenshots instead of accessibility snapshots?
While the server uses accessibility trees by default, you can enable screenshot-based interaction by providing the --vision flag.
Alternatives
Badge
Maintain this server? Add the live badge to your README.