chat-overdrive-bridge
Enables querying a signed-in Perplexity web chat through the user's Chrome via CDP, sending prompts and returning text and sources, with stop and cancel support.
Click on "Deploy 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., "@chat-overdrive-bridgeAsk Perplexity for the latest Node.js LTS version and include sources."
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.
chat-overdrive-bridge
EN: A local MCP (Model Context Protocol) stdio server that lets an AI client query web chats you are already signed in to (Perplexity, Gemini, ChatGPT, Claude, DeepSeek), through your own Chrome via the DevTools Protocol on 127.0.0.1:9222. No HTTP server, no tunnel, no browser extension.
PT-BR: Servidor MCP (Model Context Protocol) local via stdio que permite a um cliente de IA consultar chats web nos quais você já está logado (Perplexity, Gemini, ChatGPT, Claude, DeepSeek), usando o seu próprio Chrome pelo Chrome DevTools Protocol em 127.0.0.1:9222. Sem servidor HTTP, sem túnel, sem extensão de navegador.
Status / Estado
EN: version 0.1.0, experimental. Validated live on Windows 10, Node.js 24, Chrome 157 with all five providers (short and long answers, sources, stop, cancel). The macOS and Linux Chrome commands and registration in a graphical MCP client are documented but not yet tested by the author. The Windows installer was tested end to end on Windows PowerShell 5.1 (install, repeat run, uninstall, config merge against a copy of a Claude Desktop config); the winget Node.js path and registration in a real Claude Desktop or Claude Code were not exercised. Provider websites change often; if a selector breaks, run chat_bridge_status with doctor: true and open an issue.
PT-BR: versão 0.1.0, experimental. Validada ao vivo no Windows 10, Node.js 24, Chrome 157 com os cinco provedores (respostas curtas e longas, fontes, parar, cancelar). Os comandos do Chrome para macOS e Linux e o registro em um cliente MCP gráfico estão documentados, mas ainda não foram testados pelo autor. O instalador do Windows foi testado de ponta a ponta no Windows PowerShell 5.1 (instalação, repetição, desinstalação, mesclagem contra uma cópia de configuração do Claude Desktop); o caminho do Node.js via winget e o registro em um Claude Desktop ou Claude Code reais não foram exercitados. Os sites dos provedores mudam com frequência; se um seletor quebrar, rode chat_bridge_status com doctor: true e abra uma issue.
Related MCP server: Antigravity Browser Operator
Install / Instalação
Language | Guide |
English | |
Português (Brasil) |
Windows, automatic / automático: download or clone the repository and double-click Instalar.bat (PowerShell, no admin rights needed). It checks Node.js 20+ (offers winget if missing), runs npm ci, npm run check and npm test, creates a desktop shortcut for the debug Chrome and, only if you agree, registers the server in Claude Desktop and/or Claude Code (backing up the config first). To undo: Desinstalar.bat. Details in the guides below.
Windows, automático: baixe ou clone o repositório e dê dois cliques em Instalar.bat (PowerShell, sem precisar de administrador). Ele verifica o Node.js 20+ (oferece o winget se faltar), roda npm ci, npm run check e npm test, cria um atalho na área de trabalho para o Chrome de debug e, somente se você concordar, registra o servidor no Claude Desktop e/ou no Claude Code (com backup da configuração). Para desfazer: Desinstalar.bat. Detalhes nos guias abaixo.
Manual quick start / Início rápido manual:
git clone https://github.com/samucamg/chat-overdrive-bridge.git
cd chat-overdrive-bridge
npm install
npm testThen start Chrome in debug mode and register the server in your MCP client (see the guides above). Depois inicie o Chrome em modo debug e registre o servidor no seu cliente MCP (veja os guias acima).
Tools / Ferramentas
Tool | EN | PT-BR |
| Send a prompt to a web chat and return text and sources | Envia um prompt a um chat web e devolve texto e fontes |
| List active sessions, busy tabs and leases | Lista sessões ativas, abas ocupadas e leases |
| Stop a running generation | Interrompe uma geração em andamento |
| CDP status, queues and optional selector diagnosis | Status do CDP, filas e diagnóstico opcional de seletores |
| Dry run: check a prompt for secrets, PII and blocked files | Dry run: inspeciona segredos, PII e arquivos proibidos |
Safety by design / Segurança por desenho
EN: every prompt goes through a sanitizer (secrets, credentials, PII, deny-list of files) before touching the browser. Violations return
BLOCKED_BY_POLICY.PT-BR: todo prompt passa por um sanitizador (segredos, credenciais, PII, lista de arquivos proibidos) antes de tocar no navegador. Violações retornam
BLOCKED_BY_POLICY.EN: CDP is accepted only on
127.0.0.1, with a dedicated Chrome profile.Runtime.evaluateis internal to the drivers and never exposed as a tool.PT-BR: o CDP só é aceito em
127.0.0.1, com perfil dedicado do Chrome.Runtime.evaluateé interno aos drivers e nunca exposto como tool.EN: logs hold operational metadata only (provider, session, duration, sizes). Never prompts or answers.
PT-BR: logs guardam apenas metadados operacionais (provedor, sessão, duração, tamanhos). Nunca prompts nem respostas.
EN: same provider runs serially (one tab lease at a time); different providers run in parallel.
PT-BR: o mesmo provedor roda em série (um lease de aba por vez); provedores diferentes rodam em paralelo.
Responsible use / Uso responsável
EN: automating a web chat can conflict with a provider's terms of service. Use only your own accounts, keep volumes low, and review each provider's terms. The bridge stops on CAPTCHA, Cloudflare challenges or expired logins instead of retrying.
PT-BR: automatizar um chat web pode conflitar com os termos de uso do provedor. Use apenas suas próprias contas, mantenha volumes baixos e revise os termos de cada provedor. O bridge para diante de CAPTCHA, desafio Cloudflare ou login expirado, sem tentar de novo.
More docs / Mais documentação
Architecture / Arquitetura: docs/ARCHITECTURE.en.md | docs/ARQUITETURA.md
Selectors / Seletores: docs/SELECTORS.en.md | docs/SELETORES.md
Security policy / Política de segurança: SECURITY.md
License / Licença
EN: GNU General Public License v3.0 or later (GPL-3.0-or-later). See LICENSE.
PT-BR: GNU General Public License v3.0 ou posterior (GPL-3.0-or-later). Veja LICENSE.
Available Tools
5 toolsask_web_chatB
Envia consulta para um chat web autenticado via Chrome CDP local (127.0.0.1:9222) com sanitizacao previa e fila por provedor.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Modo operacional do provedor (ex: search, deep-research) | |
| model | No | Modelo especifico a ser selecionado no provedor | |
| prompt | Yes | Texto do prompt a ser enviado ao chat web | |
| session | No | Chave identificadora da sessao/aba para continuidade de contexto (opcional) | |
| new_chat | No | Se true, inicia uma nova conversa limpando o contexto da aba (padrao: true sem session) | |
| provider | Yes | Identificador do provedor de chat web (perplexity, gemini, chatgpt, claude, deepseek) | |
| filePaths | No | Alias para context_files | |
| timeout_s | No | Tempo limite maximo de espera pela resposta em segundos (padrao: 120) | |
| attachments | No | Lista de arquivos para anexo via input[type=file] / DOM.setFileInputFiles | |
| context_files | No | Lista de arquivos de contexto para injecao com envio delta inteligente por hash SHA-256 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavior: local CDP endpoint, pre-send sanitization, and per-provider queueing. It omits critical traits such as blocking/wait behavior, that data is sent to a third-party provider, and what happens on timeout or failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, putting the action first and the mechanism second. It is efficiently sized, though the parenthetical endpoint detail is of marginal use to an agent selecting the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 10 parameters, no annotations, and no output schema, yet the description never explains how the response is obtained or returned (blocking wait, polling, session retrieval). It also leaves out the prerequisite that a Chrome instance must be running with CDP enabled on port 9222.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters, including session, new_chat, timeout_s and the two file-list variants. The description adds nothing parameter-specific beyond the vague phrases 'sanitizacao previa' and 'fila por provedor', so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('envia consulta para um chat web autenticado') plus the transport mechanism (Chrome CDP on 127.0.0.1:9222), which clearly separates it from siblings like list_chat_sessions or cancel_chat. It does not explicitly name an alternative, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the action itself; there is no explicit when-to-use or when-not-to-use guidance. The sibling preview_payload and chat_bridge_status suggest useful preconditions (payload preview, bridge readiness) that the description never connects to this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_chatA
Interrompe a execucao ou streaming de resposta de uma sessao em andamento.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Identificador da sessao a cancelar | |
| session_id | No | Alias de session para compatibilidade |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the tool interrupts execution or streaming of an ongoing session, but it omits important behavior such as idempotency, permissions, what happens to partial output, and post-cancellation state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every phrase contributes to stating the action and its target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity cancellation tool with only two optional string parameters and no output schema, the description gives the core action. However, because there are no annotations and the tool is a mutating operation, it is only minimally complete and leaves behavioral details unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both 'session' and 'session_id' as an alias. The description adds no parameter-level meaning beyond what the schema provides, which fits the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: interrupt the execution or response streaming of an ongoing session. It is clearly a cancellation tool and distinguishable from sibling tools such as list_chat_sessions and chat_bridge_status, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'sessao em andamento': call it to cancel an active session. There is no explicit when-to-use guidance, no when-not-to-use guidance, and no mention of which sibling tool to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_bridge_statusB
Retorna informacoes de status da conexao CDP 127.0.0.1:9222, estado das filas e auto-diagnostico doctor opcional.
| Name | Required | Description | Default |
|---|---|---|---|
| doctor | No | Se true e conectado ao CDP, executa verificacao de integridade e seletores dos provedores |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the tool reports CDP connection status and queue state and can optionally run a doctor check, implying a read-oriented diagnostic operation, but it does not state safety, side effects, failure behavior when CDP is unavailable, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is dense but efficient, though 'informacoes de status' remains slightly vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, one-optional-parameter status tool, the description names the main status areas. However, with no output schema and no annotations, it omits return-value detail, the meaning of queue state, and behavior when the CDP connection is unavailable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the doctor parameter is already fully documented in the schema. The description only adds that doctor is optional and tied to self-diagnosis, which is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, 'Retorna', and specific resources: CDP connection status at 127.0.0.1:9222, queue state, and optional doctor diagnostics. It implicitly distinguishes itself from the chat-action siblings, but it does not explicitly name or compare against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus ask_web_chat, list_chat_sessions, cancel_chat, or preview_payload. The optional doctor parameter implies a diagnostic use case, but the description gives no exclusions, prerequisites, or alternative-selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chat_sessionsB
Lista todas as sessoes ativas, abas ocupadas e leases em andamento.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. "Lista" clearly implies a side-effect-free read and the description discloses what categories of state are returned (sessions, busy tabs, leases), which is useful context. However, it says nothing about result ordering, staleness/freshness, volume, or whether any auth/scope is required, which matters for a state-introspection tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, no restatement of the tool name, and nothing extraneous. The scoping qualifier ("ativas", "ocupadas", "em andamento") is presented immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description does give an agent the broad shape of the response (active sessions, busy tabs, in-progress leases), which is the minimum needed to decide whether to call it. But without an output schema the description would need to say more about what a session record contains and how "lease" should be interpreted, and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already conveys. Baseline 4 applies; no parameter meaning is added or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Lista") and resource ("sessoes ativas"), then extends scope to busy tabs and in-progress leases, which makes the tool's output domain clear. It does not name or contrast with the sibling chat_bridge_status, which plausibly overlaps with a session/bridge status read, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no named alternative. An agent reading this cannot tell whether to call it instead of chat_bridge_status for status information. The listing semantics imply a read use case, but the description states nothing explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_payloadA
Modo dry-run para inspecao de segredos, PII, arquivos proibidos e tamanho antes do envio.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Texto a ser inspecionado pelo sanitizador de segredos | |
| provider | No | Identificador do provedor (opcional) | |
| filePaths | No | Lista opcional de caminhos de arquivos para validacao contra a deny-list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden. 'Modo dry-run' usefully signals that nothing is sent and the operation is a non-destructive preview, which is the most important behavioral trait. It does not say what happens when a secret or forbidden file is detected (block, warn, or just report), nor what the preview returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is dense and readable, though it packs four inspection targets into one clause rather than structuring them, and it is written in Portuguese while sibling tool names are English.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description would ideally say what the preview returns (a pass/fail report, findings list, size estimate). That gap is real, but for a simple three-parameter read-only preview tool the stated scope plus the fully-documented schema covers enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains prompt, provider, and filePaths. The description only adds that inspection covers secrets, PII, forbidden files, and size, which loosely maps to prompt/filePaths but adds no format or constraint detail beyond the schema, leaving the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific function: a dry-run inspection of a prompt for secrets, PII, forbidden files, and size before sending. That is concrete and distinct from the send-side sibling ask_web_chat, though the description never names the sibling to make the split explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'antes do envio' (before sending) implies the natural usage point: run this prior to dispatching a request. However, no alternative tool is named, no when-not condition is given, and it is left to the agent to infer that ask_web_chat is the actual send operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
ask_web_chat - First observed
cancel_chat - First observed
chat_bridge_status - First observed
list_chat_sessions - First observed
preview_payload
TDQS
Scored across 5 tools
Each tool targets a distinct operation: sending queries, listing sessions, cancelling work, checking bridge status, and dry-run preview. The main possible confusion is between list_chat_sessions and chat_bridge_status, since both expose queue/session state, but descriptions clarify their different focus.
Most tools follow a verb_noun pattern (ask_web_chat, list_chat_sessions, cancel_chat, preview_payload). chat_bridge_status is a noun phrase and breaks the pattern slightly, but the overall convention remains predictable.
Five tools is well-scoped for a chat bridge server. Each tool covers a meaningful lifecycle action without redundant surface area.
The surface covers sending, listing, cancelling, status, and dry-run inspection, which are the core operations for an authenticated web chat bridge. Minor gaps exist around explicit session cleanup or history retrieval, but agents can likely work around them.
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Control your Chrome from chat: open websites, read what's on the page, click buttons, and fill in f…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables token-efficient browser automation for AI chats like ChatGPT, Gemini, and Claude, allowing reading responses, sending messages, waiting for streaming replies, and bridging conversations between tabs via Chrome DevTools Protocol.5MIT
- AlicenseBqualityAmaintenanceEnables AI agents to drive the user's already-running Google Chrome through a WebSocket bridge, listing and switching tabs, navigating, clicking, typing, scrolling, extracting DOM, taking screenshots, and evaluating JavaScript. It works without restarting Chrome and preserves all existing logins, cookies, and 2FA sessions.256 npmMIT
- AlicenseNot gradedqualityCmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceLets AI coding tools drive the real, already-logged-in Chrome browser over local stdio—snapshotting and reading pages, clicking, typing, managing tabs, capturing screenshots, and inspecting network, console, storage, and cookies—without opening a remote-debugging port. It installs as a Chrome extension plus native-messaging bridge, so agents work in the user's authenticated sessions while passing bot detection.1 npmISC