A side-by-side look at the BRYG and CDPM MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose BRYG for browser automation work as a local process; choose CDPM for browser automation as a local process. You can also run both side by side in one mcpServers block.
browser_tabs, browser_new_tab, browser_close_tab.browser_status, browser_launch, browser_close.Rows where the two servers differ are marked.
| Spec | C CDPM | |
|---|---|---|
| Category | Browser Automation | Browser Automation |
| Quality signal | 60/100 · Good | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | No auth required |
| Pricing | Not declared | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 2 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 43 | 28 |
| Full listing | View BRYG | View CDPM |
browser_tabsList tabs across all browsers (chrome / edge) with ids, grouped by browser and window.browser_new_tabOpen a new tab (optionally at url); it becomes the current tab. browser: chrome / edge (default: the current browser; launched automatically if not running). window: "current" (default: the window of the current tab), "new" (a new window), or a window id from browser_tabs. isolated=true opens a new window with its own cookies / login state, so different accounts can be signed in at once (gone when the browser closes). Afterwards any tool given that page id is routed to its browser automatically.browser_close_tabClose the given tab.browser_activate_tabBring the given tab to the foreground.browser_navigateNavigate to a URL.browser_reloadReload the page.browser_go_backGo back in history.browser_go_forwardGo forward in history.browser_page_infoReturn url/title/viewport/scroll.browser_snapshotAccessibility-tree snapshot; interactive elements are tagged [ref=N]. On large pages use interactive_only=true (interactive elements only) or query (only lines containing the string) to save tokens; ref numbers stay stable under filtering.browser_click_textClick the element with the given visible text (text-based targeting is more reliable than coordinates; great for cookie banners, popups and buttons, e.g. 'OK').browser_login_fillFill login credentials without exposing them to the conversation. Pass credsFile (path to a credentials file: JSON / key=value / two lines / one line) or user+pass directly; visible username/password fields are auto-detected (override with *Selector). Fills only, never submits - press the login button with click_text afterwards.browser_statusLive slots, tabs, openers, last actions, summaries, dialogsbrowser_launchStart a slot — only when the user asks; no `slot` = lowest free; `slots` (list) or `count` start several at once, lowest first; `url` / `urls` open a start page right away. Window or headless is the user's choice: if they didn't say, Claude asks first (without `headless`, a closed slot is not start…browser_closeClose gracefully (profile kept)browser_tabsList / open in background (returns ID) / close / bring to front (only when the user wants)browser_snapshotAccessibility text with refs; `page`, `find`, `refbrowser_textReadable text (main/article first, or one `ref`), paginatedbrowser_screenshotVisible area as PNG, background tabs included; no full-page capturebrowser_navigateWaits for load; slow servers are reported as "still loading", not as errorsbrowser_clickReal mouse click; reports covering elements, new tabs, form-validation failuresbrowser_typeReal key events per character (`clear`, `submit`, `fast`); verifies the value and does not press Enter for `submit` if the value differs (the site rejected or reformatted the input); date/time inputs are set after format validationbrowser_fillFill several inputs on one page in order, then optionally `submit` ("Enter" or a button ref); stops at the first failure, page change, dialog or a field whose value differs from what was typed (nothing is submitted then)browser_dialogAccept or dismiss an open alert/confirm/prompt/beforeunload (`text` for prompt). Claude decides from the messagePaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"bryg": {
"command": "npx",
"args": [
"-y",
"bryg-mcp"
]
}
}
}
{
"mcpServers": {
"igelharine-cdpm": {
"command": "npx",
"args": [
"-y",
"cdpm-mcp"
]
}
}
}