Browser MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_navigateB | Navigate to a URL |
| browser_go_backA | Go back to the previous page |
| browser_go_forwardA | Go forward to the next page |
| browser_snapshotA | Capture accessibility snapshot. Returns refs like 'e42' — use these in click/type/hover calls. |
| browser_clickC | Click an element. Use the exact ref from the latest snapshot. |
| browser_hoverC | Hover over an element |
| browser_typeA | Type text into an element. Use Control+a to select all first if replacing text. |
| browser_select_optionB | Select an option in a dropdown |
| browser_dragB | Drag from one element to another |
| browser_press_keyC | Press a key on the keyboard |
| browser_waitB | Wait for a specified time in seconds |
| browser_get_console_logsB | Get browser console logs |
| browser_screenshotC | Take a screenshot of the current page |
| browser_scrollC | Scroll the page |
| browser_new_tabC | Open a new tab |
| browser_reloadA | Reload the current page |
| browser_list_tabsA | List all open tabs |
| browser_close_tabB | Close a tab by ID |
| browser_switch_tabA | Switch to a tab by ID |
| browser_find_textC | Search for text on the page |
| browser_execute_jsB | Execute JavaScript on the page |
| browser_get_linksA | Extract all links from the page |
| browser_get_elementsB | Query elements by CSS selector |
| browser_extract_tableB | Extract a table as structured JSON |
| browser_extract_metaB | Extract meta tags, OpenGraph, Twitter Cards |
| browser_extract_imagesB | Get all images with src, alt, dimensions |
| browser_get_cookiesA | Read cookies for a URL |
| browser_set_cookiesC | Set a cookie |
| browser_get_storageB | Read localStorage or sessionStorage |
| browser_set_storageB | Write to localStorage or sessionStorage |
| browser_wait_forC | Wait for a CSS selector to appear on page |
| browser_highlightB | Highlight elements with colored outline |
| browser_readabilityA | Extract main article content (Reader Mode) |
| browser_right_clickC | Right-click an element |
| browser_double_clickB | Double-click an element |
| browser_inject_cssB | Inject custom CSS into the page |
| browser_network_logC | Monitor fetch/XHR network requests |
| browser_console_logC | Monitor console.log/warn/error |
| browser_get_computed_styleA | Read computed CSS properties of an element |
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 39 tools
Most tools are clearly distinct, but browser_console_log and browser_get_console_logs are easily confused, and browser_wait/browser_wait_for could be ambiguous without reading descriptions. Overall, the purposes are well differentiated.
All tools use a consistent browser_ prefix and snake_case naming. However, there is a mix of verb-first (navigate, click) and noun-like (console_log, network_log) patterns, and some tools use 'get_' while others don't, creating minor inconsistency.
With 39 tools, the server exceeds the 25+ threshold for 'too many'. While the breadth reflects a comprehensive browser automation scope, the sheer number makes tool selection heavier and suggests possible consolidation.
The tool set covers navigation, interaction, waiting, extraction, cookies/storage, console/network monitoring, and tab management—nearly all core browser automation needs. Minor gaps exist (e.g., no explicit alert/dialog handling or dedicated URL/page title getter), but most can be worked around via execute_js or snapshot.