Install
$ agentstack add mcp-viromulus-gif-browser-integration-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Browser-Integration MCP
An MCP server for Claude Desktop that gives Claude a controllable browser agent — running in a separate, isolated browser profile (Google Chrome, Microsoft Edge, or Vivaldi) via the Chrome DevTools Protocol. Windows-only. ~29 tools, Russian/English tool titles, Chrome DevTools telemetry disabled.
MCP-сервер для Claude Desktop: даёт Claude управляемый браузер-агент в отдельном изолированном профиле (Chrome / Edge / Vivaldi) через Chrome DevTools Protocol. Только Windows. ~29 инструментов, русские/английские названия, телеметрия Chrome DevTools отключена.
Why this, and not just built-in web access? A plain web fetch returns a page's static text and stops at anything behind a login or rendered by JavaScript. Browser-Integration drives a real browser through the Chrome DevTools Protocol, so Claude can sign in and work on login-gated pages (the agent keeps its own persistent browser session), act on live, JavaScript-rendered pages — click, type, fill forms, handle dialogs — and read the page at the structural level (accessibility tree, DOM, console, network) or run JavaScript in it, instead of guessing from a screenshot.
Зачем это, если есть встроенный доступ к вебу? Обычное получение страницы возвращает её статический текст и останавливается на всём, что за логином или отрисовано через JavaScript. Browser-Integration управляет настоящим браузером через Chrome DevTools Protocol, поэтому Claude может входить в аккаунт и работать со страницами за авторизацией (агент держит собственную постоянную сессию браузера), действовать на живых JS-страницах — кликать, вводить текст, заполнять формы, обрабатывать диалоги — и читать страницу на структурном уровне (дерево доступности, DOM, консоль, сеть) или выполнять в ней JavaScript, а не догадываться по скриншоту.
➡️ [Download the latest installer / Скачать установщик](../../releases/latest) · Windows · MIT License
> ⚠️ Unsigned installer. The installer is not code-signed, so Windows SmartScreen (or your antivirus) may warn on first run. If you downloaded it from this repository's Releases page, you can proceed via More info → Run anyway. The full source of the installer is in this repository — nothing is hidden. > > ⚠️ Установщик без цифровой подписи — при первом запуске Windows SmartScreen может показать предупреждение. Если файл скачан со страницы Releases этого репозитория — «Подробнее → Выполнить в любом случае». Исходный код установщика лежит здесь же, ничего не скрыто.
Build from source / Сборка из исходников
cd payload && npm ci && cd ..
ISCC.exe setup.iss # Inno Setup 6 -> build\BrowserIntegrationMCP-Setup.exe
node_modules/ is not committed — npm ci restores the exact dependency (chrome-devtools-mcp) pinned in package-lock.json.
node_modules/ в репозиторий не коммитится — npm ci восстановит зависимость (chrome-devtools-mcp) точно той версии, что зафиксирована в package-lock.json.
📖 English — full README
Browser-Integration MCP
Legal
Trademarks
Not affiliated with, endorsed by, or sponsored by Vivaldi Technologies AS, Google LLC, Microsoft Corporation, or Anthropic PBC. Vivaldi, Google Chrome, Microsoft Edge, and Claude are trademarks of their respective owners.
Third-party (bundled)
Bundles chrome-devtools-mcp (Copyright Google LLC, licensed under Apache-2.0). Its LICENSE and THIRDPARTYNOTICES ship inside node_modules/chrome-devtools-mcp.
Usage / Intended use
Intended for lawful, personal use. The tool automates a copy of a supported browser (Google Chrome, Microsoft Edge, or Vivaldi) that you installed yourself, via Chromium's built-in remote-debugging (CDP) using public command-line switches; it does not modify, reverse-engineer, redistribute, or bundle any browser or Claude, and runs as an MCP extension inside your own Claude Desktop. You are responsible for complying with applicable law and with the terms of the software it works with (your browser's terms of use or EULA and Anthropic's Usage Policy / Consumer Terms), and for any actions performed through the browser agent.
Disclaimer of Warranty and Limitation of Liability
This software (the "MCP") is provided "AS IS" and "AS AVAILABLE", without warranty of any kind, whether express, implied, or statutory, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, title, and non-infringement.
Installation and use of the MCP are carried out solely at the user's own free will and risk. To the maximum extent permitted by applicable law, in no event shall the author be liable for any claim, damages, or other liability - including, without limitation, any theft, leakage, disclosure, alteration, corruption, deletion, or loss of data, or any direct, indirect, incidental, special, exemplary, punitive, or consequential damages - arising from, out of, or in connection with the MCP, its use or inability to use it, or any actions performed through it, even if the author has been advised of the possibility of such damages.
The user bears full responsibility for operating the MCP and for any consequences thereof.
By installing or using the MCP, the user acknowledges, agrees to, and accepts these terms.
What it is
Browser-Integration is an MCP server for Claude Desktop that gives Claude a controllable browser agent. Under the hood it uses chrome-devtools-mcp (Chrome DevTools Protocol) connected to a separate instance of a supported browser (Google Chrome, Microsoft Edge, or Vivaldi) running a clean, isolated profile. Claude gets ~29 tools: navigation, clicks, typing, page snapshots, network, scripting, and so on. Tool titles are shown in Russian and English, and Chrome DevTools telemetry is disabled.
Why this, and not just built-in web access? A plain web fetch returns a page's static text and stops at anything behind a login or rendered by JavaScript. Browser-Integration drives a real browser through the Chrome DevTools Protocol, so Claude can sign in and work on login-gated pages (the agent keeps its own persistent browser session), act on live, JavaScript-rendered pages — click, type, fill forms, handle dialogs — and read the page at the structural level (accessibility tree, DOM, console, network) or run JavaScript in it, instead of guessing from a screenshot.
Key idea: the agent works not in your everyday browser but in a separate profile launched with the remote-debugging port enabled. This is both safer (your main profile's data is out of reach) and technically required (Chromium 136+ blocks remote debugging on the default profile).
Requirements
- Node.js - any version (located via PATH and standard install paths).
- A supported browser - Google Chrome, Microsoft Edge, or Vivaldi (any version; located via the registry and standard paths).
- Windows + Claude Desktop with unpacked-extension support.
Administrator rights are not required: everything is installed into the user profile, and registry entries go only under HKCU.
How the MCP works
Overview
Claude Desktop
│ (stdio JSON-RPC)
▼
manifest.json ──► node i18n.js (our proxy)
│ (stdio JSON-RPC)
▼
chrome-devtools-mcp (attach mode, v1.4.0)
│ (Chrome DevTools Protocol)
▼
Selected browser (agent profile) on 127.0.0.1:
Claude Desktop launches node i18n.js. i18n.js is a thin proxy that spawns the child chrome-devtools-mcp and forwards JSON-RPC between them while handling three jobs.
The i18n.js proxy - three jobs
- Localization. In the
tools/listresponse every tool gets a Russian
title, and the native annotations (read/write categories) are stripped - in the client the tools appear as one flat list with Russian names, and you control permissions (Allow/Ask/Deny) yourself.
- Telemetry off. The child process starts with
--usageStatistics=false
and the CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS=1 environment variable.
- On-demand browser auto-launch (see below).
Attach mode
chrome-devtools-mcp starts with --browserUrl http://127.0.0.1: and does not launch a browser itself - it connects to an already-running browser on that port. The connection is lazy: the server starts without a browser, the connection is established on the first tool call, and if the browser was closed it reconnects on the next call.
On-demand browser auto-launch
Because of attach mode there is a catch: if the agent browser is closed, there is nothing to connect to. To keep this from breaking work, before every tool call (tools/call) the proxy checks whether CDP answers on the port (GET /json/version). If not, it launches the agent browser with the same flags as the shortcut, waits for the port to become ready (up to ~20 seconds), and only then forwards the call.
Properties:
- Covers both cases: browser closed at startup and closed mid-session.
- Launch is visible; the browser is detached - it survives MCP shutdown
(close Claude Desktop and the browser stays open).
- Single-flight: if several calls arrive at once while the browser is
starting, only one instance comes up.
Agent profile
A separate profile folder (Browser-Agent-for-Integration-). The profile is clean and isolated - it holds none of your data, cookies, or passwords. Why:
- Security. Even under prompt injection the agent cannot reach your main
profile's data.
- Technical. Chromium 136+ forbids remote debugging on the default profile,
so a separate --user-data-dir is required.
The profile is created by the installer (a brief browser launch); if it is missing, it is initialized by the on-demand auto-launch on first use.
Port
The port is chosen by the installer at random from the 49152-65533 range (availability is verified with a test bind) and baked into i18n.js. The same port is used by the proxy, the shortcuts, and the registry entries - they are always consistent.
Tools and security
Threat model - prompt injection: a malicious page tries to make the agent perform an unwanted action. What reduces the risk:
- The browser cannot run
.exefiles - only download files. - The clean profile nullifies access to your logins and purchases.
- You control per-tool permissions (Allow/Ask/Deny) in the client.
Threat levels: Low = read-only / benign; Medium = exposes page content or minor interaction; High = actions with side effects, navigation, or auth-data exposure; Critical = arbitrary code execution. For High/Critical tools, "Ask" or "Deny" is the safer default in the client.
Full tool list (29):
| Threat | Tool | What it does | |--------|------|--------------| | Critical | evaluate_script | Runs arbitrary JavaScript in the page; can read tokens/localStorage and exfiltrate via fetch. | | Critical | get_network_request | Full details of one request, incl. headers (may expose auth tokens/cookies). | | Critical | upload_file | Uploads a file via the page; can exfiltrate local files or upload malicious content. | | High | navigate_page | Navigates the current tab to a URL; can be steered to attacker sites. | | High | new_page | Opens a new tab at a URL; can be steered to attacker sites. | | High | click | Clicks an element; can trigger actions, form submits, purchases. | | High | fill | Fills a single input or `. | | High | fillform | Fills several form fields at once; can enter credentials and submit. | | High | typetext | Types text into the focused input; can enter credentials. | | High | handledialog | Accepts/dismisses a browser dialog; can confirm downloads/permissions. | | Medium | getconsolemessage | Reads one console message (may contain leaked app data). | | Medium | listconsolemessages | Lists the page's console messages. | | Medium | listnetworkrequests | Lists network requests (URLs/metadata) made by the page. | | Medium | takesnapshot | Captures the page's accessibility (text) tree; exposes page content. | | Medium | takescreenshot | Screenshots the page or an element; may capture visible sensitive data. | | Medium | takeheapsnapshot | Captures a JS heap snapshot; may contain in-memory secrets. | | Medium | drag | Drags one element onto another. | | Medium | presskey | Presses a key or combination; can trigger shortcuts or submit. | | Low | listpages | Lists open tabs. | | Low | selectpage | Switches the active tab. | | Low | waitfor | Waits until the specified text appears on the page. | | Low | hover | Hovers over an element. | | Low | closepage | Closes a tab. | | Low | resizepage | Resizes the browser window. | | Low | emulate | Emulates device/feature conditions. | | Low | performancestarttrace | Starts a performance trace recording. | | Low | performancestoptrace | Stops the active performance trace. | | Low | performanceanalyzeinsight | Returns details for a specific performance insight. | | Low | lighthouse_audit` | Runs a Lighthouse audit (a11y / SEO / best practices). |
How the installer works
Philosophy
The installer prepares everything and leaves only the final manual steps to the user. No administrator rights (only HKCU and the user folder, nothing in Program Files/ProgramData). No downloads from the internet. A clean profile - nobody's data is copied.
Steps (in order)
- Precheck. Finds Node.js and a supported browser (Chrome, Edge, or Vivaldi), and lets you choose one. No Node -> abort (code 1); no browser
-> abort (code 2). Paths are resolved via PATH, the registry (App Paths / StartMenuInternet), and standard install locations.
- Deploy. Copies the MCP folder to `Documents\Browser-Integration-mcp\
Core-Browser-Integration-mcp` and creates the profile folder.
- Bake. Substitutes real values into
i18n.jsin place of the
placeholders: __NODE__ (node path), __PORT__ (a free port), __BROWSER__ (selected browser exe path), __PROFILE__ (profile path).
- Profile initialization. Briefly launches the selected browser (off-screen, minimized,
without the debugging port) against the profile folder, waits for the Local State file to appear, then carefully kills only that instance (matched by the profile path on its command line - your normal browser is left untouched).
- Browser registration in
HKCUas "Browser-Integration" (ProgID,
StartMenuInternet, Capabilities with http/https associations, FriendlyAppName, RegisteredApplications). This lets you pick the agent browser in "Default apps".
- Three identical desktop shortcuts:
Browser-Integration (1/2/3)- launch
the agent browser with all the required flags.
- Self-check + report + instructions. Writes a machine-readable result
(port, paths, success flags), shows a "what was done" screen and a screen with the manual steps.
Agent-browser launch flags (in the shortcuts, the registry, and the on-demand auto-launch):
--remote-debugging-port=
--user-data-dir=""
--no-first-run
--no-default-browser-check
--disable-blink-features=AutomationControlled
Folder layout (under Documents)
Browser-Integration-mcp\
├── Core-Browser-Integration-mcp\ ← the MCP itself (point Claude here)
└── Browser-Agent-for-Integration- ← the clean agent browser profile
Manual steps after installation
- Load the MCP into Claude Desktop: Settings -> Extensions (Advanced
Settings) -> "Install Unpacked Extension" -> select the Core-Browser-Integration-mcp folder -> enable the extension.
- Place the shortcuts
Browser-Integration (1/2/3)wherever you like (Start
menu, Startup, taskbar).
- (Optional) In "Default apps" assign "Browser-Integration" to http/https if
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: viRomulus-gif
- Source: viRomulus-gif/browser-integration-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.