MCP server that drives the real Chrome you already use, through an extension and CDP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
English | δΈζζζ‘£
Usage guide Β· Troubleshooting Β· Security Β· Contributing Β· Changelog
A Model Context Protocol (MCP) server that drives the real Chrome you are already using, through a Chrome extension and the Chrome DevTools Protocol. Your agent works inside your existing browser session, so logins, cookies, and open tabs are all already there β no separate sandbox browser to authenticate again.
Current release: unified Python package, bridge, and unpacked Chrome extension 0.4.12.
It also reaches past the page: five direct tools provide real mouse and keyboard input at the OS level when page-level input is not enough. resolve_leave_dialog is one additional, narrowly scoped path that can send Enter after two protocol attempts fail. safe asks before physical input, while the default lab profile runs without elicitation and still enforces the cross-process lock, quiet-input gate, target activation, and on-screen confirmation.
Three steps. Each one is spelled out in full under Getting started below, with the Windows PowerShell paths and the config for every supported client.
On Windows the same three commands use .\.venv\Scripts\python.exe and
.\.venv\Scripts\browsertap.exe.
Step 2 is manual, and it is the slow one. There is no Chrome Web Store
listing yet, so the extension is loaded by hand: open chrome://extensions, turn
on Developer mode, click Load unpacked, and pick the directory
extension-path printed. Then open an ordinary http:// or https:// page --
about:blank runs no content script, so no session is established.
Then ask your agent what tabs do I have open? If the list comes back empty, run
browsertap doctor: it names one cause and the one matching advice.
switch_tab retargets without raising anything, and page work runs in the tab you named while you keep using the screen.#r1 refs and the real URLs come back alongside, so a results page stays both small and navigable.page_click, page_type, page_press, and page_drag dispatch trusted CDP input events at viewport coordinates inside one named tab, without moving your cursor or changing which tab is visible.scan_page reports how much it left outside the viewport instead of dropping it silently.alert, confirm, prompt, and beforeunload each get a per-call dismiss/accept/manual policy and are reported truthfully; handle_dialog resolves one that is left open.scan_page, page APIs, or OCR to inspect content.lab can run without elicitation; safe prompts per call. Both profiles keep the lock, quiet-input gate, ownership checks, target activation, and on-screen confirmation.Clone the repository, create a virtual environment, and install the recommended desktop feature set:
Windows PowerShell
Linux or macOS
The core install (pip install -e .) omits OS-level mouse/keyboard and desktop
capture dependencies. Use it only when those tools are intentionally disabled.
After the first PyPI release, pip install "browsertap-mcp[desktop]" will be
the non-editable install path; until then, the source install above is the
supported path.
This project ships an unpacked extension that has to be loaded once by hand.
Open chrome://extensions, turn on Developer mode, click Load unpacked, and pick the directory that command printed.
The loaded extension is listed as BrowserTap Bridge.
If you also use Edge or Opera, repeat the same steps at edge://extensions or opera://extensions with the same directory. The bridge tells the browsers apart automatically.
Then open a normal http:// or https:// page. A blank tab is not enough β content scripts cannot run on about:blank, so no session is established.
The extension may show a small BTAP: checking, BTAP: connected, or
BTAP: disconnected badge on pages. The badge is presentation-only: it reports
the bridge connection state and does not display page content, cookies, tokens,
or URLs. Open the extension popup and clear Show connection status on pages
to hide it. Hiding the badge does not stop the bridge, keepalive, or automatic
reconnect behavior.
Standard config works in most tools:
If you installed into a virtualenv, point command at the executable's absolute path instead β relying on PATH is the most common reason a client fails to start the server.
Add --scope user to make it available across all projects. For a virtualenv install:
On Windows PowerShell, use the absolute path to
.venv\Scripts\browsertap.exe instead.
Verify with /mcp.
Follow the MCP install guide and use the standard config above. An example file is included at examples/claude-desktop-config.json.
Put the standard config in .cursor/mcp.json for one project, or ~/.cursor/mcp.json globally. An example file is included at examples/cursor-mcp.json.
Or write it into .vscode/mcp.json by hand β note that VS Code's key is servers, not mcpServers.
Add to ~/.hermes/config.yaml:
browsertap print-hermes-config prints this snippet. An example file is included at examples/hermes-config.yaml. Verify with hermes mcp list.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/browsertap-mcp)<a href="https://allmcps.com/mcp/browsertap-mcp"><img src="https://allmcps.com/api/badge/browsertap-mcp?style=directory" alt="BrowserTap MCP on AllMCPs" /></a>