Mcp Session Bridge

io.github.t3ratechPublished by GitHub account t3ratechv1.4.1Updated Nov 7, 2026

Drive a browser you are already signed into, through the free T3rnel Browser extension.

Overview

AI-generated overview

Free MCP server that lets an assistant drive a browser session — either your own logged-in Chrome via the T3rnel extension or a dedicated standalone browser.

What you can do
  • Run session_* tools against live, authenticated browser tabs through the T3rnel Browser extension, or against a separate automation browser in standalone mode.
  • Read page context, form values, snapshots and screenshots from the current page.
  • Use the extension's browser tool set (up to 100 tools) through the bridge, including page inspection and interaction verbs.
  • Install or uninstall the native messaging host registration for Chrome, Chromium, Brave and Edge via the session_install setup tool.
When to use it
Useful when an assistant needs to work inside a browser you are already signed into — filling forms, reading pages behind a login, or capturing screenshots — without exporting cookies to a cloud browser service. Standalone mode suits automation that should stay separate from your everyday profile.
Requirements
Runs locally over stdio as the npm package @t3ratech/mcp-session-bridge, so Node.js is needed. Extension mode requires the T3rnel Browser extension plus native host registration; standalone mode launches its own CDP browser. Optional environment variables: T3RNEL_SESSION_MODE, T3RNEL_SESSION_HEADLESS and T3RNEL_SESSION_TIMEOUT_MS. Desktop only.
Before you install
Extension mode acts inside your real logged-in browser session, so the assistant can read and change data on sites you are signed into; an approval gate and Pro gating apply to extension tools. Some extension tools require the extension's paid Pro tier (a one-time purchase), while the bridge and standalone mode are free. The bridge registers a native messaging host with your browsers.

Installation

In SourceWeft

  1. Open Mcp Session Bridge in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

MCP Session Bridge

[Listed on mcpservers.org] [Glama score]

A free MCP (Model Context Protocol) server that exposes authenticated browser-session automation: session_* tools that run in the user's own Chrome profile and real logged-in session, which cloud browser APIs cannot do. A free standalone mode is also available; it launches a dedicated automation browser so the same session_* tools work without the extension or a license.

What it does

  • Serves MCP over stdio (newline-delimited JSON-RPC) to any client that speaks the Model Context Protocol. The setup guide covers the common ones.
  • Uses a dual-transport design:
    • Extension mode (free; Pro tools gated by the extension) — forwards calls over a local, owner-only relay socket to a native messaging host that Chrome spawns, and from there to the T3rnel Browser extension, which executes them against the live authenticated tabs.
    • Standalone mode (free) — launches its own headful or headless CDP browser on a persistent profile and drives it directly. No license, no extension, and no access to the user's everyday browser.
  • Returns structured page context, form values, snapshots, and screenshots without shipping session cookies to a remote browser.

Price

The bridge itself is free, and this package enforces no licence of its own.

Extension mode reaches the buyer's real authenticated session through the T3rnel Browser extension, and the Pro tools it exposes are gated by that extension's own Pro tier — $29.99 once, three devices. Standalone mode is free and needs neither the extension nor a licence. There is no separate subscription for this package, and nothing here checks for one; earlier drafts of this file advertised $9/mo and $39/mo tiers that were never implemented, never enforced and never purchasable.

Project layout

  • src/server.js — MCP stdio server: tool surface, schema validation, dual-transport routing, relay client with reconnect and timeouts, and standalone CDP launcher.
  • src/cdp.js — standalone CDP browser management and WebSocket client.
  • src/native-host.js — native messaging host spawned by Chrome; owns the relay socket and multiplexes concurrent MCP servers.
  • src/framing.js — the 4-byte length-prefixed JSON framing shared by native messaging and the relay socket.
  • src/tools.js — the session_* tool definitions, validation, and mapping to the extension's browser_* tools.
  • src/license.js — offline Ed25519 license verification helpers used by the extension and tests.
  • src/install.js — --install / --uninstall native host registration for Chrome, Chromium, Brave and Edge.
  • docs/setup-guide.md — installing on the common MCP clients, plus verification and troubleshooting.
  • docs/chrome-validation-checklist.md — end-to-end validation steps for Chrome with the T3rnel Browser extension.
  • ads/ — ad-copy.md, the shared headline and description copy used when submitting to MCPize, Smithery, mcp.so and PulseMCP.
  • tests/ — node --test suite, including end-to-end tests through a real relay socket and native-messaging framing, plus standalone-mode coverage.

Browser support

Extension mode needs the T3rnel Browser extension, which is packaged for Chrome, Brave, Edge, Opera, Chromium and Firefox and ships from each browser's own extension store. Brave and Chromium install from the Chrome Web Store; Edge, Opera and Firefox each have a separate package. Opera implements no side-panel API and Firefox no debugger API, so both are partly supported; the extension's manifest generator states which capabilities are absent on each. Standalone mode has no browser requirement at all — it launches its own CDP browser.

The extension exposes up to 100 browser tools, plus the bridge's own session_install setup tool. If the merged list would exceed 100 tools — which Google Antigravity refuses to install — the bridge drops the two lowest-value verbs (session_md_diff, session_check_spelling) so the published list stays at or under the ceiling for every extension build. Dropped tools still execute when called by name; all tools remain subject to the extension's Pro gating and approval gate.

Supported clients

  • Claude Code / Claude Cowork
  • Cursor
  • VS Code
  • Windsurf / Devin Desktop
  • Google Antigravity
  • IntelliJ
  • Codex
  • Grok Build
  • Kimi Code / Kimi Desktop
  • JCode
  • Cline
  • OpenCode
  • Continue.dev
  • KiloCode
  • Roo Code
  • Aider
  • OpenClaw
  • Hermes
  • OpenFang
  • Any client that speaks MCP stdio

Install the T3rnel Browser extension

The bridge works best with the T3rnel Browser extension, which lets your AI drive the browser you are already signed into:

https://browser.t3ratech.co.zw/

Where this is listed

Licence

Licensed under the Apache License, Version 2.0. See LICENSE for the full text.

The published npm package is free to use for any purpose, commercial or otherwise. You may read and modify this source; redistribution is governed by the Apache-2.0 terms.

Source: README.md at commit b22dc0a

Tools

22

session_install

Installation instructions

Return setup instructions for the T3rnel Browser extension and for the free standalone automation browser. Needs no browser and no licence, so it is the one tool that always answers — call it when another tool reports the extension is missing. Returns installation steps as text.

Takes no parameters.

session_health

Session health check

Report which transport is live and what it can do. Call this first when another tool fails unexpectedly: it separates 'the extension is not running' from 'this browser does not implement that API', which produce very different fixes. Returns {ok, mode, browser, profileDir} in standalone mode, and the connection state plus the available browser APIs when the extension is attached.

Takes no parameters.

session_list_tabs

List open tabs

List every open tab. Returns an array of {id, title, url}. The ids are what every other tool's optional tabId argument accepts; omit tabId and a tool acts on the active tab, which is rarely what you want once you have opened tabs of your own.

Takes no parameters.

session_close_tab

Close a tab

Close a tab, named explicitly by its id from session_list_tabs. Returns {closed, tabId}. Unlike every other tool here, tabId is required and there is no active-tab default: closing a tab is not undoable, and the active tab is the one the user is looking at. Requires the T3rnel Browser extension; the standalone browser refuses it by name.

ParameterstabIdrequired

session_navigate

Navigate a tab

Navigate a tab to a URL inside the user's authenticated session, so pages behind a login load as themselves rather than as a signed-out visitor. Reuses the active tab unless newTab is true. Returns {navigated} with the requested URL, and newTab when a tab was created. It returns once navigation is dispatched, not once the page has settled — follow it with session_wait before reading.

ParametersurlrequiredtabIdnewTabbackground

session_snapshot

Snapshot interactive elements

Capture a semantic map of a page for deciding what to act on. Returns {url, title, elements}, where each element is {ref, tag, text} — ref being an @eN handle that session_click, session_fill, session_type, session_select and session_press all accept in place of a CSS selector. Prefer this over session_read_page when the goal is to interact rather than to read: it lists only elements a user could actually operate. Skips zero-size and hidden elements, caps each label at 120 characters, and stops at 200 elements.

ParameterstabId

session_read_page

Read page text

Read a page's visible text, as rendered in the user's authenticated session. Returns {url, title, text, truncated}; text is the body's rendered innerText capped at 50,000 characters, and truncated is true when the page was longer. Prefer this over session_snapshot when the goal is to read or summarise; prefer session_snapshot when the goal is to interact.

ParameterstabId

session_click

Click an element

Click an element, by CSS selector or by an @eN ref from session_snapshot. Scrolls the element into view and dispatches a real mouse press and release at its centre, so handlers that ignore synthetic events still fire. Returns {clicked} naming what was targeted. Fails with 'Element not found' rather than clicking something else when nothing matches.

ParametersreftabIdselector

session_fill

Fill a form field

Set a form field's value in one step — input, textarea, or a rich-text editor such as ProseMirror, Lexical or Slate. Writes through the native value setter and then fires input and change, which is what React and Vue listen for. Returns {filled} naming the field. Use session_type instead when a field only reacts to real keystrokes, and session_select for a dropdown.

ParametersreftabIdvaluerequiredselector

session_type

Type text

Type text one character at a time, firing the key events a real keyboard would. Use this instead of session_fill when a field only reacts to keystrokes — search boxes with live suggestions, autocompletes, and inputs with per-character validation. Returns {typed} with the number of characters sent. Slower than session_fill, so reach for it only when session_fill leaves the page unchanged.

ParametersreftextrequiredtabIdselector

session_select

Choose a dropdown option

Choose an option in a <select> dropdown, by value, by visible text, or by index. Filling a select as though it were a text field does nothing — the native value setter belongs to HTMLInputElement and has no effect here — which is the silent failure this tool exists to prevent. Matches value first, then exact visible text, then a substring, then index. Returns {selected, value, text} for the chosen option, and on no match fails with the available options listed.

ParametersreftextindextabIdvalueselector

session_press

Press a key

Press a single keyboard key on the focused element, or on a named element after focusing it. Use it to submit a form with Enter, dismiss a dialog with Escape, or walk a suggestion list with ArrowDown. Returns {pressed} naming the key. Supported keys are Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown and Space; anything else fails with the supported list rather than doing nothing.

ParameterskeyrequiredreftabIdselector

session_evaluate

Evaluate JavaScript

Run JavaScript in the page's own context and return its completion value. Use it for what the other tools do not cover — reading computed styles, walking a data structure the page holds, or checking a condition too specific for session_wait. Objects come back as formatted JSON, strings as themselves, and an expression with no value as "undefined". End the code with the expression you want back; a trailing statement returns nothing useful.

ParameterscoderequiredtabId

session_screenshot

Capture the viewport

Capture what is currently on screen in a tab. Returns a data: URL holding a base64 PNG or JPEG. This is the visible viewport only — it does not scroll or stitch, so a long page needs the extension's full-page capture instead.

ParameterstabIdformatqualitywindowId

session_wait

Wait for a condition

Block until a page reaches a known state, so the next tool acts on a settled page rather than a half-loaded one. Waits for the load event, for the URL to contain a string, or for a selector to appear. Returns as soon as the condition holds — {condition, waited} for load, {condition, url} for url, {condition, found} for selector — and fails at the timeout with a named error rather than hanging the client. Polls every 200ms; the default timeout is 10000ms.

ParameterstabIdvalueconditionrequiredtimeoutMs

session_login

Fill stored credentials

Decrypt stored credentials for a domain and fill them into the page's sign-in form. Requires the T3rnel Browser extension with Pro, because the encrypted vault lives in the extension; the refusal comes from the extension rather than from this bridge, so there is one gate rather than two that can disagree. The standalone browser has no vault — sign in once by hand in its profile instead, and the session persists.

ParameterstabIddomainrequiredsubmitmasterPassword

session_store_login

Store credentials

Encrypt credentials for a domain and store them in the extension's vault, for session_login to use later. Requires the T3rnel Browser extension with Pro. The password is never returned by this or any other tool, and never appears in a listing or an error.

ParametersdomainrequiredpasswordrequiredusernamerequiredmasterPassword

session_record_start

Start recording

Begin recording what happens in a tab: clicks, scrolls, keystrokes, form fills, selections and navigations, each with a timestamp. Returns {recording, sessionId, tabId} — keep the sessionId, since every other recording tool needs it. Requires the T3rnel Browser extension. Recording stops on its own if the tab closes or after four hours.

ParameterstabIdmaxEventssessionId

session_record_stop

Stop recording

Stop a recording and return {recording, sessionId, eventCount, durationMs}. The events themselves are read separately with session_record_events, so this is cheap to call on a long recording. Requires the T3rnel Browser extension. With several recordings active, sessionId is required and the error names how many are running.

ParameterssessionId

session_record_list

List recordings

List every recording, running or finished, so a caller can find the id that session_record_events and session_record_replay need. Returns {sessions}, each entry being {id, tabId, active, startedAt, stoppedAt, stoppedReason, eventCount, durationMs}. Requires the T3rnel Browser extension.

Takes no parameters.

session_record_events

Read recorded events

Fetch the captured events of a recording, in the order they happened. Returns {events, count}, where count is the total held for the session and events is one page of {type, timestamp, tabId, data}; type is one of click, scroll, keypress, input, navigation, focus, select or resize. Page through long recordings with limit and offset rather than reading them whole, since a session can hold tens of thousands of events. Requires the T3rnel Browser extension.

ParameterslimitoffsetsessionIdrequired

session_record_replay

Replay a recording

Replay a stopped recording in its original tab, reproducing the recorded interactions in order. Returns {sessionId, totalEvents, replayedEvents, failedEvents, errors}, so a partial replay reports which steps failed instead of appearing to succeed. The tab must still be open. This acts on the live page and its effects are real — it will re-send messages, re-submit forms and re-spend money — so the extension classifies it high risk and gates it behind an approval prompt. Requires the T3rnel Browser extension.

ParametersspeedsessionIdrequired

Version history

1
  1. v1.2.0Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts