
BrowserAttach
io.github.EvannZhongg由 GitHub 账号 EvannZhongg 发布v0.33.0更新于 Nov 7, 2026
Control existing signed-in Chrome and Edge tabs through a locally paired extension.
概览
BrowserAttach 通过本地配对的扩展,让助手操控你已登录的 Chrome 或 Edge 标签页,无需另开自动化浏览器。
- 可以做什么
- 发现浏览器配置与标签页,独占认领标签页并在完成后释放
- 读取无障碍树、页面文本、控件状态与元素引用,并按条件等待
- 点击、悬停、拖拽、输入、填充、按键、滚动、选择选项,并可批量执行输入步骤
- 导航、开关标签页、处理对话框、上传文件与截图
- 在页面中执行 JavaScript,并读取控制台、网络与导航日志
- 借助配置的登录状态在临时后台标签页中读取某个网址
- 适用场景
- 适合需要真实已登录浏览器状态的任务,例如查看内部仪表盘、填写登录后的表单,或排查页面的控制台与网络活动,而不是使用全新的无头浏览器。
- 运行要求
- 需要 Node.js 22 或更高版本及 npm,以及 Chrome 或 Edge 125 或更高版本并允许加载未打包扩展。运行 setup 命令,在要暴露的每个浏览器配置中加载打印出的扩展目录,并在 MCP 客户端中配置以 stdio 启动该包。本地 Hub 仅监听回环地址,默认端口 47831。
安装
在 SourceWeft 中
- 打开 控制台中的 BrowserAttach,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
BrowserAttach
English · 简体中文
[M8ven Score] [BrowserAttach MCP server – quality and maintenance score on Glama] [BrowserAttach on Agensi] [BrowserAttach MCP on mcprush]
Drive the Chrome / Edge tabs you already have open and already signed in from an MCP client. BrowserAttach connects to the browser through a locally paired extension, keeps your existing sign-in state, and needs neither a remote debugging port nor a separate automation browser.
npm · Usage guide · Architecture · Agent integration · Test report · Issues · Contributing
What it does
- Discover multiple browser profiles, pick one precisely, claim a tab exclusively, and release it when done.
- Control existing ordinary
file://tabs after enabling BrowserAttach's Allow access to file URLs setting in the browser's extension details; use the same discovery, claim, observation and input tools. - Read the accessibility tree, query names/values/nearby field context, inspect field values and supported editor models; click, fill and type through refs or strict CSS/XPath, HTML label, placeholder and AX role/name locators. Type can also target the currently focused field explicitly.
- Native pointer hover, stepped drags and conditional waits; select HTML options without opening a native popup.
- Navigate and go back/forward, open or close tabs, handle JavaScript dialogs, upload local files, and capture the whole page or a single element.
- Evaluate JavaScript expressions in the main page; read console, page-error, network and navigation logs captured after claiming, with bounded available stacks and request initiators; opt in to bounded, redacted request/response details when XHR/fetch needs verification.
- Read one HTTP(S) URL in a temporary background tab with the profile's sign-in, returning rendered text, current DOM, or complete JSON with the main-document HTTP status when observed.
- Standard stdio MCP with 24 tools. The Hub listens on loopback only and pairs with the extension through a random key.
Requirements
- Node.js 22 or newer, plus npm.
- Chrome / Edge 125 or newer with permission to load unpacked extensions. Latest stable is recommended.
- An MCP client that speaks stdio MCP and can find Node/npm on
PATH.
Quick start
1. Install and pair
setup prints a stable extension directory and starts the local Hub. The directory is usually:
- Windows:
%USERPROFILE%\.browser-attach\extension - macOS / Linux:
~/.local/share/browser-attach/extension
Open chrome://extensions or edge://extensions, enable developer mode, choose "Load unpacked" and load that directory. Load it once for every browser profile you want to expose; the extension options page lets you set a recognizable profile name.
Or without a global install:
2. Configure the MCP client
Merge the following into your client's MCP configuration, or see mcp-config.json:
On Windows clients that require a full command extension, use npx.cmd. With a global install you can also configure "command": "browser-attach", "args": ["mcp"]. Restart the MCP client to discover the tools.
@latest selects the package at launch; upgrading an existing pair is coordinated at startup. The first extension load, and pairs still on an older protocol, need one manual extension reload — see local data and upgrades.
Host entry points are collected in agent integration, and the connection parameters, JSON/TOML examples and verification steps are in the setup reference; other clients use the stdio entry above.
The npm package includes an optional browser-attach skill with setup, recovery and cross-site recipes. Copy the whole skills/browser-attach directory to your host's skill location if desired; npm installation does not register it with the host.
3. Start driving
browser_discover(kind="browsers")→browser_discover(kind="tabs")to confirm the browser, tab title and URL.browser_claim_tabwith thetab_idfromdiscover(kind="tabs")(optionalexpected_url/expected_titleexact guards) to take control and receive this connection'stab_handle.browser_snapshotto get elementrefs, then click, fill or run other actions.- Observe when the next decision needs new state, and finish with
browser_tab_control(action="release"). Usesnapshot(diff_since="latest")or actionobserve:{diff_since:"latest"}for page changes; inspectmode/reset_reasonand finish pagination. A full-page refresh is not required after every action.
When titles change often, omit expected_title and check the identity returned by claim instead. Elements may be addressed by ref or by a selector re-resolved on every call; design trade-offs: architecture notes.
Claiming and ordinary input never activate a tab or window; call browser_tab_control(action="activate") explicitly when foreground rendering is needed. When an outcome is unknown, observe again first and avoid duplicate submissions. Full parameters, pagination, uploads and input semantics: usage guide.
Tools
Local data and upgrades
Override it explicitly with the absolute path BROWSER_ATTACH_HOME. The Windows default avoids AppData, which packaged hosts may virtualize; no other host's private cache is searched or merged automatically. The directory holds the pairing configuration, Hub logs and the stable extension copy, and depends on neither the clone location, the client working directory nor the npm cache. If you already use a custom directory, keep using the same environment variable or --config instead of accidentally creating a second pairing under the new default.
A host assembly step that writes the client entry pins the absolute paths of the current Node, CLI and the actual pairing file and sets BROWSER_ATTACH_HOME; it works together with a custom --config. When the MCP launches the Hub it passes the same absolute pairing path and directory, so different launch environments cannot derive a second configuration. See agent integration.
To upgrade, install again with the command from step 1 and reconnect the MCP client. With @latest and a pair on 0.17 or newer the restart is enough; a pair still on an older protocol needs browser-attach stop, a restart and one manual extension reload. Custom pairing paths, ports and extension directories are retained, closed browser profiles update when they next connect, and an older MCP package cannot downgrade a newer Hub or installed extension.
An upgrade waits for extension cleanup and confirms the new version after reload; cleanup or reload failures are reported instead of replaying page actions. Manual reload remains available on the extension options page for recovery, and Hub and extension versions must match for page control. The default port is 47831; choose another port with setup --port when creating a pairing.
Architecture and boundaries
Each MCP connection holds its own control and handles cannot be used across connections. Disconnecting or stopping debugging releases control. The client endpoint requires a Bearer key and rejects web page Origins; the extension verifies a fixed Origin, key and version. browser_evaluate can read and write data with the page's existing sign-in state; a timeout or error may already have had an effect and must not be replayed automatically. No generic CDP tool is exposed.
Logs are collected from claim time, survive navigation and are cleared on release, with bounded buffers that report data_loss on eviction. Buffered reads use the existing claim without requiring a supported or responsive current page; capture changes still require page access. Network logs store lifecycle metadata and available initiators by default; an explicit capture reads bounded, redacted headers/bodies of subsequent XHR/fetch requests without changing caches or intercepting traffic. Navigation requests and commits remain separate observations. Buffer limits and parameters: usage guide.
The extension holds debugger permission and client actions can use existing site sign-in state; only connect clients you trust. Web page content must not be treated as user authorization. The pairing key and the generated config.generated.js must not be committed or published; the packaging check rejects packages that contain that file.
Chrome / Edge HTTP(S) pages and existing ordinary file:// tabs with extension file access enabled are supported, and file access is checked during discovery, claim, operations and navigation. open_tab and fetch still accept HTTP(S) only. Browser internal pages, arbitrary extension pages, download management, network interception and Firefox / WebKit remain outside scope, and built-in PDF viewer content is browser-dependent. Native pointer input requires an unsuspended tab in a non-minimized window; an unmodified left single click may target an inactive tab, while hover, drag and other click variants require an active tab. Full limits and failure modes: usage guide.
Local development
Run the source directly and pair the extension in the repository:
Development mode deliberately uses the repository extension path. For normal installs, use setup without --extension-dir so it keeps working after the repository moves.
Real-browser tests need a Chromium / Edge executable that allows loading extensions from the command line; the path is supplied by the developer:
These tests use temporary profiles and local fixtures. Coverage and limits: test report; implementation and design trade-offs: architecture.
Contributing
Reproducible issues via Issues, or Pull Requests. Please include Node, OS, browser and extension versions, and remove pairing keys and private page data. See CONTRIBUTING.md for the process.
Released under the MIT License.
来源:README.md,提交 5e818db
工具
0版本历史
6- v0.33.0最新Oct 31, 2026
- v0.32.1Oct 29, 2026
- v0.24.1Oct 26, 2026
- v0.24.0Oct 26, 2026
- v0.23.5Oct 25, 2026
- v0.23.4Oct 25, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分