# BRYG [Health: Active]

**Category:** 📂 Browser Automation  
**Repository:** https://github.com/flexiblepackage/bryg  
**GitHub Stars:** 0  
**npm Downloads (last month):** 350  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/bryg

## Description
Drives a real Chromium browser: navigate, click, type, read pages, OCR, QR, network capture

## Tools
Capabilities this server exposes over MCP:

- **browser_tabs** — List tabs across all browsers (chrome / edge) with ids, grouped by browser and window.
- **browser_new_tab** — Open 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_tab** — Close the given tab.
- **browser_activate_tab** — Bring the given tab to the foreground.
- **browser_navigate** — Navigate to a URL.
- **browser_reload** — Reload the page.
- **browser_go_back** — Go back in history.
- **browser_go_forward** — Go forward in history.
- **browser_page_info** — Return url/title/viewport/scroll.
- **browser_snapshot** — Accessibility-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_text** — Click 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_fill** — Fill 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_read** — Read page text (mode=text) or links (mode=links).
- **browser_screenshot** — Take a screenshot (fullPage=true for the whole page); returns JPEG. With save_path, saves to a file and returns the path instead (.png saves PNG, otherwise JPEG).
- **browser_click** — Click (pass ref or x,y).
- **browser_double_click** — Double-click (pass ref or x,y).
- **browser_right_click** — Right-click (pass ref or x,y).
- **browser_long_press** — Long-press (pass ref or x,y; duration_ms defaults to 800).
- **browser_hover** — Move the mouse over a point (pass ref or x,y).
- **browser_drag** — Drag from → to (each as ref or x,y).
- **browser_scroll** — Scroll by delta_x/delta_y (optionally anchored at x,y).
- **browser_scroll_to** — Scroll the ref element into view.
- **browser_type** — Type text into the focused element.
- **browser_press_key** — Press a key or combo (e.g. Enter, Tab, Control+A, Control+Shift+T).
- **browser_fill** — Fill the ref input with text (clears it and fires input/change).
- **browser_replace** — Select-all-and-replace the text of the input at ref or (x,y) using native editing commands (reliable on React controlled/formatted inputs such as currency fields; use this when fill fails). Empty text clears the field; omit ref and x,y to act on the focused element.
- **browser_select_option** — Select a value in the ref <select>.
- **browser_focus** — Focus the ref element.
- **browser_upload** — Set local file paths on the ref file input.
- **browser_evaluate** — Run JavaScript in the page; returns the result as JSON.
- **browser_wait** — Wait ms milliseconds, or until selector appears (timeout_ms defaults to 10000).
- **browser_set_viewport** — Set viewport size / device emulation (mobile layout). Settings persist until reset=true or the tab closes. mobile=true also enables touch emulation and a matching mobile user agent (override with user_agent); after a UA change, reload or navigate so the site re-detects the device.
- **browser_pdf** — Print the page to a PDF file; returns the path.
- **browser_ocr** — OCR on-screen text (system tesseract): whole page, or a ref element / region; lang defaults to eng (configurable via bryg setup or BRYG_OCR_LANG). Useful for text inside canvas/images.
- **browser_qr** — Decode a QR code on screen: whole page, or a ref element / region.
- **browser_clipboard_read** — Read text from the OS clipboard. Typical flow: select and copy in the source tab (press_key), then call this to retrieve it.
- **browser_clipboard_write** — Write text to the OS clipboard; paste it in any tab afterwards (press_key). Useful for moving prepared data across tabs.
- **network_start** — Start recording background network traffic (API/XHR/fetch/WebSocket). Three combinable modes: (1) record everything (omit filter); (2) filter keyword (only URLs containing it, e.g. api); (3) add failure conditions. Written to ~/.bryg/logs/network_<time>.log. By default sensitive content is MASKED (Authorization/Cookie/Set-Cookie headers, password/token-like fields); pass raw=true only when the user explicitly asks for unredacted capture. Off by default; confirm the mode with the user before starting. fail_only=true records failures only (default = transport error or status>=400); success_contains/fail_contains are body-based business rules (off by default; pass only when instructed).
- **network_stop** — Stop network recording; returns log path and entry count.
- **network_status** — Get network recording status (recording or not, filter, entry count, log path).
- **xpath_by_text** — Find elements by visible text/attributes; returns up to 5 ranked, optimized XPath candidates. Narrow with tag (e.g. button).
- **xpath_at** — Return an optimized XPath for the element at (x,y) (image mode: locate the target on a screenshot first, then pass its coordinates).
- **xpath_for_ref** — Convert a snapshot [ref=N] into a reusable, optimized XPath.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "bryg": {
    "command": "npx",
    "args": ["-y","bryg-mcp"]
  }
}
```

## Documentation

## What BRYG does

BRYG exposes browser automation through MCP, allowing an AI client to control a dedicated Chromium browser running on the local machine. Its tools cover browser and window management, page navigation, accessibility inspection, reading, screenshots, mouse actions, keyboard input, form controls, file uploads, and page-side JavaScript evaluation.

The server is suited to interactive web workflows rather than API-only access. An agent can inspect a page, identify interactive elements from an accessibility-tree snapshot, act on stable references, and verify the resulting page state. Coordinate-based actions are also available when element references are not suitable.

BRYG includes OCR for text rendered in images, canvas elements, or games, plus QR-code decoding. Network observation can record browser traffic, apply keyword filters, or focus on failures. Captured sensitive headers and password- or token-like fields are masked by default.

## How it works

BRYG runs as a plain stdio MCP server. The client starts the `bryg` executable, then sends tool calls over MCP. Browser actions are routed to the selected page, and a page opened in a new browser or window can be addressed by its page identifier.

The browser is designed to run headful so a person can watch and take over the session. On Linux without a display, it switches to headless operation. Separate isolated windows can maintain different cookies and login states, which allows multiple accounts to be used at once until the browser closes.

Credentials can be supplied through a credentials file or directly to the login-fill tool. BRYG fills detected username and password fields but does not submit the form; a separate click action is used for submission. This keeps secrets out of the assistant conversation.

## Setup and configuration

Install with the macOS/Linux shell installer or the Windows PowerShell installer. The installer places the platform-specific binary under `~/.bryg/bin/` or `%USERPROFILE%\\.bryg\\bin\\`, verifies its SHA-256 checksum, and guides client registration, optional OCR installation, and license activation.

A direct MCP configuration can use the `bryg-mcp` npm launcher, which requires Node.js 18 or newer:

```json
{
  "mcpServers": {
    "bryg": { "command": "npx", "args": ["-y", "bryg-mcp"] }
  }
}
```

The launcher downloads the matching engine on first use and stores it under `~/.bryg/bin/`. Activation uses `npx bryg-mcp activate <key>`, or the installed CLI can run `bryg activate <key>`. A license key is required; the product offers a 14-day trial and paid per-device licensing.

The guided setup registers BRYG with Claude Code and Claude Desktop. Other MCP clients can start the binary directly as a stdio server. On Linux, Google Chrome is used; Chrome for Testing can be unpacked into `~/.bryg/chrome-linux64/` when a system installation is unavailable.

## Tools and capabilities

- List, open, activate, and close browser tabs across Chrome and Edge.
- Create normal, new-window, or isolated browser sessions.
- Navigate, reload, and traverse browser history.
- Inspect URL, title, viewport, scroll position, accessibility structure, text, and links.
- Click by visible text, element reference, or coordinates; also double-click, right-click, hover, drag, and long-press.
- Type, replace, fill, focus, select options, upload files, scroll, and press key combinations.
- Capture screenshots, including full-page images, and optionally save them to disk.
- Run JavaScript in the page and return JSON results.
- Perform credential filling, OCR, QR decoding, and network capture.

## Limitations and notes

BRYG is commercial software distributed under an End User License Agreement; its binary is not open source. The server runs locally, but it makes network calls for license validation and an anonymous update check. A dedicated browser session can be watched and controlled manually, while isolated login state lasts only until the browser closes. Linux operation requires Chrome or a compatible unpacked Chrome for Testing installation, and automatically uses headless mode when no display is available.

_Full upstream README: https://allmcps.com/mcp/bryg/readme_

