chrome-control-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHROME_BRIDGE_PORT | No | WebSocket port between the extension and the server. | 8765 |
| CHROME_BRIDGE_TOKEN | No | Override the token. | saved in ~/.chrome-control-mcp/token |
| CHROME_BRIDGE_HTTP_PORT | No | Port for `serve`. | 8766 |
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 |
|---|---|
| statusA | Is the Chrome extension connected? Also shows if this MCP instance owns the port or shares it as a peer. |
| cdpC | Send any raw Chrome DevTools Protocol command to a page. |
| reload_bridge_extensionA | Reload the Chrome Control extension (use after updating its files). |
| list_pagesB | Get a list of pages open in the browser. |
| select_pageC | Select a page as a context for future tool calls. |
| new_pageB | Open a page. It first looks for an already open tab: same URL is reused as is, same site is reused and navigated. A new background tab is opened only if none exists. |
| close_pageA | Closes a page by its ID. Only tabs opened by this MCP can be closed unless force is true. |
| navigate_pageC | Go to a URL, or back, forward, or reload. |
| wait_forC | Wait for the specified text to appear on the selected page. |
| take_snapshotA | Take a text snapshot of the page based on the a11y tree. Lists elements with a unique uid. Always use the latest snapshot. Prefer this over a screenshot. |
| take_screenshotC | Take a screenshot of the page or element. |
| evaluate_scriptC | Evaluate a JavaScript function inside the page. Returns the result as JSON. |
| clickC | Clicks on the provided element |
| click_atC | Clicks at the provided coordinates (CSS pixels in the viewport). |
| hoverC | Hover over the provided element |
| dragC | Drag an element onto another element |
| fillC | 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. Prefer this over many fill calls. |
| type_textA | Type text using the keyboard into a previously focused input |
| press_keyB | Press a key or key combination, e.g. "Enter", "Control+A", "Control+Shift+R". Modifiers: Control, Shift, Alt, Meta. |
| upload_fileC | Upload a file through a file input, or an element that opens a file chooser. |
| handle_dialogC | If a browser dialog was opened, use this to handle it |
| list_console_messagesC | List console messages for the page since the last navigation. |
| get_console_messageC | Gets a console message by its ID. |
| list_network_requestsC | Lists the most recent requests for the page since the last navigation. |
| get_network_requestB | Gets a network request by reqid (the latest request if omitted). Includes headers and bodies. |
| emulateC | Emulates various features on the page. Settings last until the debugger detaches. |
| resize_pageC | Resizes the page's window so that the page has the specified dimension |
| performance_start_traceC | Start a performance trace on the page. Use to find frontend performance issues and Core Web Vitals. |
| performance_stop_traceC | Stop the active performance trace on the page. |
| performance_analyze_insightC | More detail on a specific insight from the last trace. |
| take_heapsnapshotC | Capture a heap snapshot of the page to a .heapsnapshot file. |
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 32 tools
Most tools have clearly distinct purposes (element click vs coordinate click, page snapshots vs screenshots, console vs network listings). A few pairs overlap enough to risk misselection: fill vs type_text vs fill_form, and the three performance_* tools share a narrow domain. Descriptions do clarify these boundaries, so misselection is unlikely but possible.
The set mostly follows a consistent snake_case verb_noun convention (navigate_page, take_snapshot, click_at, list_pages). Deviations like 'status' (noun without verb), 'cdp' (bare acronym), and 'emulate' (verb without object) are minor and still readable. No mixed camelCase/snake_case confusion.
At 32 tools this server is well above the typical well-scoped range and feels heavy for browser control. Several capabilities could be consolidated (performance_start/stop/analyze_insight, take_heapsnapshot, cdp) or are only occasionally needed. The count increases selection burden without proportional unique value.
The surface covers the core browser-automation lifecycle well: navigation, element interaction, page management, and diagnostics (console, network, performance, heap). Minor gaps exist around cookie/local-storage management and download handling, but these can be worked around via evaluate_script or cdp. No dead ends for common workflows.