devtools-fleet-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEVTOOLS_FLEET_HOME | No | Moves the whole ~/.devtools-fleet directory to another location. | |
| DEVTOOLS_FLEET_CHANNEL | No | Chrome release channel: stable, beta, dev or canary. Default: stable. | stable |
| DEVTOOLS_FLEET_SESSION | No | Replaces the process-tree session lookup with a fixed label, useful in CI or containers. | |
| DEVTOOLS_FLEET_HEADLESS | No | Whether to launch browsers headless. Default: true. | true |
| DEVTOOLS_FLEET_VIEWPORT | No | Default viewport, e.g. "1280x720". No default. | |
| DEVTOOLS_FLEET_CHROME_PATH | No | Path to a Chromium/Chrome build. Default: detected. | |
| DEVTOOLS_FLEET_MAX_BROWSERS | No | Maximum number of browsers across the machine. Default: 10. | 10 |
| DEVTOOLS_FLEET_LAUNCH_TIMEOUT_SECONDS | No | Launch timeout in seconds. Default: 30. | 30 |
| DEVTOOLS_FLEET_ORPHAN_TIMEOUT_MINUTES | No | How long a dropped connection's browser waits for a reconnect, in minutes. Default: 15. | 15 |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_startA | Start this session's own Chrome (isolated from every other agent). Optional: the first browser tool call starts one with defaults anyway. Call it explicitly to load a saved login ( |
| browser_statusA | Show this session's browser: id, saved state, allowlist, headless, open tabs, uptime. |
| browser_restartA | Relaunch this session's browser keeping cookies, localStorage and open tabs. Pass headless: false to get a visible window (e.g. so the human can watch or solve a captcha), headless: true to hide it again. Pages reload. |
| browser_stopA | Close this session's browser and delete its temporary profile. |
| state_saveA | Save the current browser's login (cookies + localStorage) as a named state, so other sessions can start already logged in. Only cookies for the allowed origins are kept. allowedOrigins defaults to the http(s) origins open in tabs; it can never be wider than this browser's own allowlist. States a person created with |
| state_listA | List saved login states: name, allowed origins, cookie counts, when saved and when the first cookie expires. Never shows cookie values. |
| clickC | Clicks on the provided element |
| close_pageB | Closes the page by its index. The last open page cannot be closed. |
| dragC | Drag an element onto another element |
| emulateA | Emulates various features on the target page. Each call replaces all emulation settings (except extraHttpHeaders), so pass all desired settings in a single call. |
| evaluate_scriptB | Evaluate JavaScript inside the target page. The source can be provided inline or loaded from a local file. Returns the response as JSON, so returned values have to be JSON-serializable. |
| fillB | Type text into an input, text area or select an option from a element. |
| fill_formA | Fill out multiple form elements (inputs, selects, checkboxes, radios) at once. ALWAYS prefer this tool over multiple individual 'fill' or 'click' calls when interacting with forms. It is significantly faster, more reliable, and reduces turn count. Example: Fill username, password, and check "Remember Me" in one call. |
| get_console_messageA | Gets a console message by its ID. You can get all messages by calling list_console_messages. |
| get_css_stylesA | Retrieve matched CSS rules, inline styles (element.style), inherited styles, custom properties, and cascade wrappers (@layer, @media, @container, @scope) for an element identified by its UID. Rules are ordered from highest to lowest cascade precedence and include source line numbers (e.g. index:196). Active (winning) declarations have no prefix tag, while (losing) overridden declarations are prefixed with [overloaded]. Treat the output as authoritative and complete. Results are paginated (10 rules per page by default); use pageIdx to page through the remaining rules. Requires a UID from take_snapshot. |
| get_network_requestA | Gets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel. Useful for inspecting request headers (including 'Cookie') and response headers (including 'Set-Cookie' and directives). |
| handle_dialogC | If a browser dialog was opened, use this command to handle it |
| hoverC | Hover over the provided element |
| lighthouse_auditA | Get Lighthouse scores, failing audits, and the DOM nodes they flag for accessibility, SEO, best practices, and agentic browsing. Full reports are saved to disk. This excludes performance. For performance audits, run performance_start_trace |
| list_console_messagesB | List all console messages for the target page since the last navigation. |
| list_network_requestsA | Lists the most recent requests for the target page since the last navigation. |
| list_pagesB | Get a list of pages open in the browser. |
| navigate_pageB | Go to a URL, or back, forward, or reload. Use project URL if not specified otherwise. |
| new_pageC | Open a new tab and load a URL. Use project URL if not specified otherwise. |
| performance_analyze_insightB | Provides more detailed information on a specific Performance Insight of an insight set that was highlighted in the results of a trace recording. |
| performance_start_traceA | Start a performance trace on the target webpage. Use to find frontend performance issues, Core Web Vitals (LCP, INP, CLS), and improve page load speed. |
| performance_stop_traceB | Stop the active performance trace recording on the target webpage. |
| press_keyA | Press a key or key combination. Use this when other input methods like fill() cannot be used (e.g., keyboard shortcuts, navigation keys, or special key combinations). |
| resize_pageC | Resizes the page's window so that the page has specified dimension |
| screencast_startC | Starts recording a screencast (video) of the target page. |
| screencast_stopB | Stops the active screencast recording on the target page. |
| select_pageA | Select a page as a context for future tool calls. |
| take_heapsnapshotA | Capture a heap snapshot of the target page. Use to analyze the memory distribution of JavaScript objects and debug memory leaks. |
| take_screenshotC | Take a screenshot of the page or element. |
| take_snapshotA | Take a text snapshot of the target page based on the a11y tree. The snapshot lists page elements along with a unique identifier (uid). Always use the latest snapshot. Prefer taking a snapshot over taking a screenshot. The snapshot indicates the element selected in the DevTools Elements panel (if any). |
| type_textA | Type text using keyboard into a previously focused input |
| upload_fileC | Upload a file through a provided element. |
| wait_forA | Wait for the specified text to appear on the selected page. By default, hidden text is also matched. Set visible to true to wait until the matched text is visible. |
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 38 tools
Most tools target clearly distinct browser/devtools actions, and paired tools like list_console_messages vs. get_console_message are distinguishable by their descriptions. There is some overlap among input tools (fill, fill_form, type_text, press_key) and between screenshot/snapshot tools, but the descriptions give enough guidance to choose correctly.
The set uses snake_case throughout, but the ordering and verb style are mixed: some tools are verb_noun (list_pages, take_screenshot), others are noun_verb or domain-prefixed (state_list, browser_start, screencast_start). The pattern is readable but not predictable across the whole surface.
With 38 tools, this is a large surface for a browser automation/devtools server, well above the typical well-scoped range. Many tools earn their place given the breadth of debugging features, but the count is heavy enough to increase selection burden.
The tool surface covers browser lifecycle, page interaction, snapshots, console, network, CSS, performance tracing, Lighthouse, dialogs, file upload, and saved login states. Minor gaps exist around broader cookie/storage management beyond named states, but core workflows are well covered.