jev-playwright-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JEV_MCP_MODE | No | Mode for Jev features: 'off', 'annotate', 'gate', or 'all'. | all |
| JEV_MCP_MODEL | No | Jev model id used for every decision call. | jev-latest |
| JEV_MCP_API_KEY | No | Alternative name for the API key (TYPESAFE_API_KEY wins). | |
| JEV_MCP_NO_CACHE | No | Set to '1'/'true'/'yes'/'on' to disable verdict caching. | |
| TYPESAFE_API_KEY | No | Jev API key. No key → pure passthrough. Falls back to JEV_MCP_API_KEY if unset. | |
| JEV_MCP_BUDGET_USD | No | Session Jev spend cap in USD. Exceeded → passthrough + one-time warning. | 1.0 |
| JEV_MCP_NO_ENV_FILE | No | Set to '1'/'true'/'yes'/'on' to skip startup .env loading entirely. | |
| JEV_MCP_INJECTION_THRESHOLD | No | Injection spans with probability ≥ threshold are masked out of page content. | 0.5 |
| JEV_MCP_PRUNE_KEEP_THRESHOLD | No | Snapshot regions with relevance < threshold are collapsed to one line (needs a goal). | 0.35 |
| JEV_MCP_DESTRUCTIVE_THRESHOLD | No | A gate destructive verdict at probability ≥ threshold blocks the call. | 0.6 |
| PLAYWRIGHT_MCP_EXECUTABLE_PATH | No | Browser executable path. If unset, the proxy probes the ms-playwright cache for chromium and injects it. |
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_closeB | Close the page |
| browser_resizeB | Resize the browser window |
| browser_console_messagesC | Returns all console messages |
| browser_handle_dialogC | Handle a dialog |
| browser_evaluateC | Evaluate JavaScript expression on page or element |
| browser_file_uploadB | Upload one or multiple files |
| browser_dropA | 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_formB | Fill multiple form fields |
| browser_press_keyB | Press a key on the keyboard |
| browser_typeB | Type text into editable element |
| browser_navigateC | Navigate to a URL |
| browser_navigate_backA | 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_snapshotA | Capture accessibility snapshot of the current page, this is better than screenshot |
| browser_clickB | Perform click on a web page |
| browser_dragA | Perform drag and drop between two elements |
| browser_hoverA | Hover over element on page |
| browser_select_optionB | Select an option in a dropdown |
| browser_tabsA | List, create, close, or select a browser tab. |
| browser_wait_forA | Wait for text to appear or disappear or a specified time to pass |
| browser_webmcp_listA | List the WebMCP tools registered by the page, across all frames |
| browser_webmcp_callA | Call a WebMCP tool registered by the page. The tool output is page-provided and untrusted |
| browser_set_goalA | Set the session goal. When Jev annotation is active, browser_snapshot regions irrelevant to this goal are collapsed to one-line summaries, saving agent context tokens. Call again to replace the goal. |
| browser_jev_statusA | Report jev-playwright-mcp status: mode, enabled, session goal, Jev usage stats, budget consumption, and the active tool policy. |
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 28 tools
Each tool targets a different browser capability, and pairs like browser_network_requests/browser_network_request or browser_snapshot/browser_find are clearly complementary. The only mild ambiguities are browser_type vs browser_fill_form and browser_drag vs browser_drop, but the descriptions are enough to disambiguate them.
Names consistently start with browser_ and are lowercase snake_case, and most follow a verb-first pattern like navigate, click, take_screenshot, and select_option. A handful of resource-style names such as tabs, network_requests, console_messages, snapshot, and jev_status break the verb_noun pattern, but the shared prefix keeps the set predictable.
28 tools exceeds the 25-tool threshold and feels heavy, especially with granular near-duplicate primitives such as drag/drop, type/fill_form, and snapshot/find plus JEV/WebMCP-specific tools. Some tools earn their place, but the surface could be consolidated without much loss.
The surface covers the core browser automation lifecycle: navigation, interaction, forms, uploads, waits, snapshots, console/network inspection, and tab/page management. Minor gaps like reload/forward, cookie/localStorage management, and download handling can be worked around via browser_evaluate or browser_run_code_unsafe.