Mcp Session Bridge

io.github.t3ratech由 GitHub 账号 t3ratech 发布v1.4.1更新于 Nov 7, 2026

通过免费的 T3rnel Browser 扩展,操控你已登录的浏览器。

AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。

原文描述

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

概览

Mcp Session Bridge 的本地 MCP 服务;无需登录;STDIO;22 个工具。

暂无 AI 概览:以下信息来自注册中心条目和服务本身。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mcp Session Bridge,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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.

来源:README.md,提交 b22dc0a

工具

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.

无需输入参数。

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.

无需输入参数。

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.

无需输入参数。

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.

输入参数tabId必填

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.

输入参数url必填tabIdnewTabbackground

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.

输入参数tabId

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.

输入参数tabId

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.

输入参数reftabIdselector

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.

输入参数reftabIdvalue必填selector

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.

输入参数reftext必填tabIdselector

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.

输入参数reftextindextabIdvalueselector

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.

输入参数key必填reftabIdselector

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.

输入参数code必填tabId

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.

输入参数tabIdformatqualitywindowId

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.

输入参数tabIdvaluecondition必填timeoutMs

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.

输入参数tabIddomain必填submitmasterPassword

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.

输入参数domain必填password必填username必填masterPassword

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.

输入参数tabIdmaxEventssessionId

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.

输入参数sessionId

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.

无需输入参数。

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.

输入参数limitoffsetsessionId必填

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.

输入参数speedsessionId必填

版本历史

2
  1. v1.4.1最新Nov 7, 2026
  2. v1.2.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分