
Bruster
io.github.aliilyasPublished by GitHub account aliilyasv0.3.2Updated Oct 29, 2026
Native-webview browser automation: navigate, fill forms, inspect pages, and capture screenshots.
Overview
Bruster is a local MCP server that drives native webviews so an assistant can navigate pages, fill forms, inspect the DOM and take screenshots.
- What you can do
- Navigate pages and manage tabs and persistent sessions
- Inspect the DOM and capture page snapshots as text
- Fill forms and click elements
- Take screenshots and save them to a file
- Run .bru UI test files with the built-in runner and get JSON reports
- When to use it
- Useful for agent-driven web workflows, focused smoke tests and repeatable UI checks against a local or staging site, especially when you want a native webview instead of a bundled Chromium and no Node.js runtime.
- Requirements
- Runs as a local process on macOS, Linux or Windows with a desktop display; Linux needs WebKitGTK 4.1 and, without a display, xvfb and xauth; Windows needs the WebView2 runtime. Installed via a shell script, a release archive, or a Docker image that starts the server over stdio. No environment variables or credentials are declared.
Installation
In SourceWeft
- Open Bruster in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[bruster]
[CI] [Dependency audit] [Cargo deny] [OSV-Scanner] [Trivy] [Release] [Docker Hub] [MIT License] [macOS] [Linux] [Windows] [Documentation]
Bruster is an open-source Rust browser automation tool and Model Context Protocol (MCP) server. Control native webviews from AI agents, Python scripts, or your own test runner through MCP or a JSON-lines API. No Node.js required.
Documentation · UI testing · MCP setup · Compare with Playwright · Benchmarks · Releases
Navigate pages, inspect the DOM, fill forms, take screenshots, and manage tabs
and persistent sessions on macOS (WKWebView), Linux (WebKitGTK), and Windows
(WebView2). Bruster fits native-webview scripts, focused smoke tests, and
agent-driven workflows. Run .bru tests with the built-in runner or use your own.
For AI tools: documentation index · full CLI and API reference.
Demo
[Bruster filling a form and taking a screenshot through MCP]
Scripted MCP session with real WebKitGTK captures. Try the demo.
Install
On macOS and Linux:
Linux also needs WebKitGTK 4.1. On Ubuntu or Debian:
Without a desktop display, also install xvfb and xauth.
Other Linux distributions.
On Windows, download an archive from Releases and install the WebView2 runtime.
Docker Hub
The Docker image includes the Linux browser runtime and virtual display for amd64 and arm64:
Starts an MCP server over stdio. Docker client setup.
MCP
Add this server to Claude Desktop's claude_desktop_config.json or Cursor's .cursor/mcp.json:
Use the executable's absolute path if your client cannot find bruster.
Add --visible to watch the browser or --profile ./profile to save cookies and storage.
Setup for other clients and troubleshooting.
JSON lines
Run bruster, then send requests on stdin, waiting for each response before the next request:
Responses carry the matching id; page events also arrive on stdout.
Protocol and API reference.
UI tests with the .bru DSL
Bruster includes a compact, line-oriented DSL for repeatable UI checks. It handles
browser startup, waits, assertions, and failure evidence so you can focus on the
flow being tested. Write a login.bru file:
Run bruster test login.bru. Assertions retry until their deadline; each test
gets a fresh browser and profile. Failures include source lines, screenshots,
and page diagnostics. The runner writes a JSON report and returns a nonzero exit
code on failure. No Node.js or Python is needed to run tests.
Use before_each for shared setup and --base-url to run the same tests against
another environment. The time savings are in authoring and debugging tests.
The runner is available in source builds from main; older release binaries may
not include bruster test yet.
UI testing guide · Beginner course: 20 lessons · DSL reference · Runnable local example · Website and demo example tests · Web automation testing tutorial
Limitations
Bruster uses WKWebView on macOS, WebKitGTK on Linux, and WebView2 on Windows. Input events are synthetic; cross-origin iframes and OS-level controls aren't supported. See the full limitations when choosing a browser backend.
Development
Build with cargo build --release --locked.
See Contributing for dependencies, tests, and documentation changes.
Dependency security checks: daily RustSec, cargo-deny, OSV-Scanner, and Trivy scans, plus Dependabot and Socket setup.
License
Source: README.md at commit 681f63e
Tools
0Version history
1- v0.3.2LatestOct 29, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts