MCP Browser Bridge
Provides a launcher script (hermes-mcp.sh) to integrate with Hermes Agent, ensuring clean execution environment for the MCP server.
Integrates with Ollama as a supported LLM provider, enabling the agent to use locally hosted models for autonomous browsing tasks.
Integrates with OpenAI as a supported LLM provider, enabling the agent to use OpenAI models for autonomous browsing tasks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Browser Bridgenavigate to google.com and search for MCP Browser Bridge"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Browser Bridge
Ponte entre Model Context Protocol (MCP) e automação de navegador. 39 ferramentas. 3 modos de operação. Chrome real ou headless.
✨ Funcionalidades
39 ferramentas MCP registradas em
src/browser_mcp/tools.pyvia@app.tool(...)e expostas pelo servidor MCP emsrc/browser_mcp/server.py:18esrc/browser_mcp/server.py:24.3 modos de operação: Playwright/headless por padrão (
src/browser_mcp/browser_manager.py:126), CDP para Chrome existente (src/browser_mcp/browser_manager.py:211) e Chrome Extension via WebSocket (src/browser_mcp/browser_manager.py:252).Network monitoring com captura de request/response, filtros e exportação HAR no Playwright (
src/browser_mcp/network.py:11,src/browser_mcp/network.py:178) e no modo extensão (src/browser_mcp/extension_bridge.py:196,src/browser_mcp/extension_bridge.py:360).Indicadores visuais por injeção JavaScript em 5 componentes/fases documentáveis no código: overlay, highlight, status, ripple e segurança por cor (
src/browser_mcp/visual_indicator.py:8,src/browser_mcp/visual_indicator.py:69,src/browser_mcp/visual_indicator.py:86,src/browser_mcp/visual_indicator.py:113,src/browser_mcp/browser_manager.py:1097).Captura de erros e warnings de console no modo extensão (
extension/injected.js:96,extension/background.js:703,src/browser_mcp/tools.py:1129).Agente autônomo com loop
OBSERVE -> THINK -> CHECK -> ACT -> RECORD(src/browser_mcp/agent.py:107) exposto pela ferramentabrowser_agent_task(src/browser_mcp/tools.py:990).Accessibility tree com refs
@e1,@e2, etc. geradas pelo BrowserManager (src/browser_mcp/browser_manager.py:312) e usadas por clique, digitação e hover (src/browser_mcp/tools.py:271,src/browser_mcp/tools.py:317,src/browser_mcp/tools.py:407).Suporte multi-provedor de LLM: DeepSeek, OpenAI, Anthropic, Ollama e endpoints customizados via
LLM_BASE_URL(src/browser_mcp/llm_client.py:18,src/browser_mcp/llm_client.py:25,src/browser_mcp/llm_client.py:34,src/browser_mcp/llm_client.py:48).Stealth mode ativado por padrão com launch args, user-agent realista,
navigator.webdriverremovido e CSP bypass no contexto Playwright (src/browser_mcp/browser_manager.py:40,src/browser_mcp/browser_manager.py:49,src/browser_mcp/browser_manager.py:136,src/browser_mcp/browser_manager.py:151).Integração Hermes Agent por launcher dedicado que limpa variáveis conflitantes e executa
browser_mcp.serverno.venv(hermes-mcp.sh:5,hermes-mcp.sh:9,hermes-mcp.sh:14).
Related MCP server: Chrome MCP Server
📦 Instalação
O pacote é definido em pyproject.toml: Python >=3.11, dependências mcp, playwright, httpx, python-dotenv e websockets, extras de desenvolvimento e script browser-mcp-server (pyproject.toml:5, pyproject.toml:39, pyproject.toml:47, pyproject.toml:61).
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
playwright install chromiumExecução direta:
python -m browser_mcp.server
# ou, após instalar o pacote:
browser-mcp-serverVariáveis úteis:
Variável | Padrão | Uso |
|
| Define se o Chromium Playwright abre sem UI ( |
|
| Viewport inicial ( |
|
| Timeout padrão em ms ( |
|
| URL do bridge WebSocket ( |
|
| Injeta overlay após navegação Playwright ( |
|
| Ativa ajustes anti-detecção ( |
|
| Provedor do agente ( |
| vazio | Chave enviada ao provedor LLM ( |
| por provedor | Modelo usado no chat ( |
| por provedor | Endpoint OpenAI-compatible customizado ( |
🚀 Uso
1. Playwright, modo padrão
O servidor inicializa BrowserManager, LLMClient e o WebSocket server opcional antes de abrir o stdio MCP (src/browser_mcp/server.py:68, src/browser_mcp/server.py:77). Em uma chamada MCP:
{
"name": "browser_navigate",
"arguments": { "url": "https://example.com" }
}{
"name": "browser_screenshot",
"arguments": { "path": "./example.png", "full_page": true }
}2. CDP, Chrome existente
Inicie o Chrome com remote debugging e conecte a ferramenta MCP:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/mcp-chrome-cdp{
"name": "browser_connect_to_existing",
"arguments": { "cdp_url": "http://localhost:9222" }
}Esse modo usa chromium.connect_over_cdp(...), aproveita contextos/páginas já existentes quando disponíveis e passa a marcar _mode = "cdp" (src/browser_mcp/browser_manager.py:226, src/browser_mcp/browser_manager.py:228, src/browser_mcp/browser_manager.py:245).
3. Chrome Extension, navegador real do usuário
Instale a extensão em
chrome://extensionscarregando a pastaextension/.Inicie o WebSocket standalone ou o servidor MCP:
python websocket_server_standalone.py
# ou
python manage_mcp_browser.py startConfigure na extensão o token de
~/.mcp_browser_tokene conecte:
{
"name": "browser_connect_to_extension",
"arguments": { "ws_url": "ws://localhost:8765" }
}O modo extensão usa a sessão real do Chrome via ExtensionBridge, fecha Playwright se necessário e alterna _mode = "extension" (src/browser_mcp/browser_manager.py:258, src/browser_mcp/browser_manager.py:278, src/browser_mcp/browser_manager.py:280).
🛠️ Ferramentas
Os nomes abaixo são os nomes reais registrados em src/browser_mcp/tools.py. A contagem verificada é 39.
Categoria | Ferramenta | Implementação |
Navegação |
|
|
Navegação |
|
|
Navegação |
|
|
Navegação |
|
|
Navegação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Interação |
|
|
Leitura |
|
|
Leitura |
|
|
Leitura |
|
|
Leitura |
|
|
Leitura |
|
|
Screenshot & Visual |
|
|
Screenshot & Visual |
|
|
Screenshot & Visual |
|
|
Screenshot & Visual |
|
|
Screenshot & Visual |
|
|
Network |
|
|
Network |
|
|
Network |
|
|
Network |
|
|
Network |
|
|
Network |
|
|
Network |
|
|
Console |
|
|
Sessão |
|
|
Sessão |
|
|
Sessão |
|
|
Sessão |
|
|
Agente |
|
|
Agente |
|
|
Accessibility |
|
|
JavaScript |
|
|
Observações verificáveis:
browser_scroll(src/browser_mcp/tools.py:271) ebrowser_download(src/browser_mcp/tools.py:1292) foram adicionadas depois da primeira versão do README; ambas são ferramentas MCP públicas registradas emtools.py.browser_get_visible_textebrowser_get_interactive_elementsexistem como métodos auxiliares do BrowserManager, mas não como ferramentas MCP públicas.browser_get_console_errorsrequer modo extensão, porque chamaextension_get_console_errors(src/browser_mcp/browser_manager.py:1067).
🔌 Integração com Hermes Agent
Use o launcher do projeto:
./hermes-mcp.shEle entra no diretório do projeto, limpa PYTHONPATH, PYTHONSTARTUP e VIRTUAL_ENV, e executa .venv/bin/python -s -m browser_mcp.server (hermes-mcp.sh:5, hermes-mcp.sh:9, hermes-mcp.sh:14). Isso evita misturar pacotes do ambiente Hermes com o Python do .venv.
Para usar no Hermes Agent, configure o engine de browser para MCP no lado do Hermes (browser.engine=mcp) e aponte o comando do MCP server para hermes-mcp.sh. Este repositório fornece o servidor e o launcher; a leitura de browser.engine=mcp é responsabilidade do Hermes, não deste pacote.
🏗️ Arquitetura
Fluxo principal:
MCP Client
-> MCP Server stdio (src/browser_mcp/server.py)
-> ToolRegistry (src/browser_mcp/tools.py)
-> BrowserManager
-> Playwright Chromium
-> Chrome via CDP
-> ExtensionBridge -> WebSocketServer -> Chrome Extension MV3 -> Chrome realO servidor MCP usa mcp.server.Server, registra handlers list_tools e call_tool, inicia componentes opcionais e roda via stdio (src/browser_mcp/server.py:15, src/browser_mcp/server.py:18, src/browser_mcp/server.py:24, src/browser_mcp/server.py:77).
O WebSocket server escuta em localhost:8765, usa implementação built-in em asyncio por padrão, implementa handshake/frame WebSocket compatível com RFC 6455, valida Origin, exige token e encaminha comandos/respostas entre servidor e extensão (src/browser_mcp/websocket_server.py:71, src/browser_mcp/websocket_server.py:97, src/browser_mcp/websocket_server.py:174, src/browser_mcp/websocket_server.py:180, src/browser_mcp/websocket_server.py:202, src/browser_mcp/websocket_server.py:228, src/browser_mcp/websocket_server.py:516).
A extensão Chrome é Manifest V3, usa service worker, content script em <all_urls>, permissões activeTab, tabs, storage, scripting, alarms e debugger, e expõe injected.js como recurso acessível (extension/manifest.json:4, extension/manifest.json:6, extension/manifest.json:17, extension/manifest.json:20, extension/manifest.json:42).
O switch de comandos da extensão tem 21 comandos no código atual, não 20: navigate, new_tab, click, type, screenshot, get_content, execute_javascript, get_dom_snapshot, press_key, get_url, get_title, go_back, go_forward, reload, get_visible_text, get_interactive_elements, get_attributes, wait, list_tabs, activate_tab, manage_session (extension/background.js:200 a extension/background.js:572).
🔐 Segurança
Token auth no WebSocket: token em
~/.mcp_browser_token, criado comsecrets.token_urlsafe(32)e permissões0600(src/browser_mcp/websocket_server.py:48,src/browser_mcp/websocket_server.py:51,src/browser_mcp/websocket_server.py:61,src/browser_mcp/websocket_server.py:63).Validação de Origin: conexões com
Origindiferente dechrome-extension://...recebem403 Forbidden(src/browser_mcp/websocket_server.py:202).Formas de autenticação aceitas: bearer token, subprotocolo
mcp-token.*ou query string?token=...(src/browser_mcp/websocket_server.py:210,src/browser_mcp/websocket_server.py:215,src/browser_mcp/websocket_server.py:221).Comparação constante: token validado com
hmac.compare_digest(...)(src/browser_mcp/websocket_server.py:228).Limite de payload: frames maiores que 64 MiB são rejeitados (
src/browser_mcp/websocket_server.py:46,src/browser_mcp/websocket_server.py:331).CSP bypass no modo extensão:
execute_javascripttentachrome.scripting.executeScript; se CSP bloqueareval, usachrome.debuggercomRuntime.evaluate(extension/background.js:300,extension/background.js:321,extension/background.js:635).
📊 Métricas
Estado verificado neste checkout:
39 ferramentas MCP em
src/browser_mcp/tools.py.43 testes coletáveis em
tests/comenv -u PYTHONPATH -u PYTHONSTARTUP -u VIRTUAL_ENV .venv/bin/pytest --collect-only -q.mypy configurado em
pyproject.tomlcomdisallow_untyped_defs = true, mas a execução atual deenv -u PYTHONPATH -u PYTHONSTARTUP -u VIRTUAL_ENV .venv/bin/mypy srcreporta 43 erros. Portanto, não é correto afirmar “mypy strict: 0 errors” neste estado.ruff configurado em
pyproject.toml, masenv -u PYTHONPATH -u PYTHONSTARTUP -u VIRTUAL_ENV .venv/bin/ruff check src testsreporta 12 erros. Portanto, não é correto afirmar “ruff: 0 errors” neste estado.Metadados de pacote presentes para wheel/sdist via Hatchling e script
browser-mcp-server(pyproject.toml:1,pyproject.toml:61,pyproject.toml:64,pyproject.toml:67).
📄 Licença
MIT (LICENSE).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceAn MCP server that enables AI agents to control a real Google Chrome instance using specific user profiles, cookies, and extensions. It provides 18 tools for browser navigation, element interaction, and page inspection via the Chrome DevTools Protocol.Last updated
- Alicense-quality-maintenanceAn extension-based MCP server that enables AI assistants to control your existing Chrome browser, leveraging your active login states and settings for automation. It provides over 20 tools for tasks like semantic tab search, screen capture, network monitoring, and direct element interaction.Last updated
- -license-quality-maintenanceMCP server that connects AI agents to a real Chrome browser via a WebSocket extension bridge, enabling over 40 browser control tools without debug mode or profile isolation.Last updated
- FlicenseBqualityDmaintenanceAn MCP server that enables AI agents to control a real Chrome browser with full login state through 37 structured automation tools, connecting via the Playwriter extension without needing a remote debugging port.Last updated30106
Related MCP Connectors
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/flpccabral/mcp-browser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server