What Riffle does
Riffle MCP server gives an AI agent an interactive Chrome or Chromium browser without requiring screenshots, raw HTML, mouse movement, or keyboard coordinates. The browser executes the page’s JavaScript and represents visible content as concise text. Views describe controls, labels, disabled or hidden content, overlays, covered elements, and other state that affects whether an action can proceed.
The Riffle MCP server returns incremental updates after the first view, so later responses contain changed or removed content rather than repeating the entire page. Agents can use this model to navigate sites, dismiss dialogs, fill forms, sign in, inspect tables, and verify URL or page conditions.
How it works
The MCP interface provides two tools. browser_run accepts a line-based program containing browser steps, while browser_view reads the current page in a selected format. A single run can combine navigation, interaction, assertions, and a final view. Supported step types include goto, back, forward, click, dblclick, fill, select, check, press, hover, scroll, upload, wait, expect, dialog, try, view, and eval.
Agents identify targets using visible wording or references from a view, such as clicking a button by its label or by an element reference. Riffle waits for the page to settle after each step and stops at the first failure, reporting the step and the reason. Available views include interactive, outline, read, table, find, expand, network, and unseen modes. Table views return rows as TSV, and network views list fetch and XHR requests.
Each editor normally receives its own browser session. Sessions can be named and shared when multiple entries use the same name. Riffle limits concurrent browsers to four by default, supports changing that limit, and ends inactive sessions after 15 minutes.
Setup and configuration
Riffle MCP server requires Chrome or Chromium on the host machine. Install the command-line package with npx @noetive/riffle init, optionally specifying a client such as claude-code or cursor. The generated MCP entry runs npx -y @noetive/riffle mcp; on native Windows, the command must be invoked through cmd /c. A Go installation is also available through go install, and release binaries can be used instead.
Run riffle doctor to check the browser installation. Riffle starts a separate, temporary browser and does not use saved passwords or the system keychain. The --dry-run option previews configuration changes. Use --keep-state NAME to preserve cookies and site storage between runs, allowing a named session to remain signed in. Stored state should be protected because anyone who can read it may use those sign-ins.
Local or private addresses require starting the MCP server with -allow-private. Named sessions can also be restricted by allowed origins. Shell commands include riffle run, riffle view, riffle close, and riffle stop.
Tools and capabilities
The Riffle MCP server supports:
- Multi-step browser programs in one MCP call.
- Text representations of interactive pages and only the changes after the initial view.
- Form entry, selection, clicking, keyboard presses, scrolling, hovering, uploads, and dialogs.
- URL assertions and error reporting when an element is blocked or unavailable.
- Table extraction as TSV.
- Inspection of fetch and XHR activity.
- Persistent named sessions with saved cookies and site storage.
- Testing local web applications with page JavaScript enabled.
Riffle fits the Browser Automation category when an agent needs repeatable interaction with a live site rather than a static page fetch.
Limitations and notes
A compatible Chrome or Chromium installation is required. Browser sessions are isolated by default, while entries using the same session name share a browser and sign-in state. Persistent storage covers up to 50 sites and may report an unrestored event if storage cannot be recovered. Storage is associated with the site active when a call ends, not every site visited during the call.
The default browser concurrency limit is four, and unused sessions expire. Private-address access is disabled unless explicitly enabled. Riffle’s interaction model is text- and reference-based; it does not provide screenshot-driven or coordinate-based control.