browser-buddy

io.github.hahahahahahahahah6由 GitHub 帳號 hahahahahahahahah6 發布v0.1.1更新於 Oct 24, 2026

Let AI coding agents read pages through your real, logged-in Chrome browser.

概覽

AI 產生的概覽

一個本機 MCP 橋接工具,讓程式設計助理透過你自己已登入的 Chrome 讀取網頁文字,僅提供兩個唯讀工具。

可以做什麼
讀取目前分頁:從你已開啟的 Chrome 分頁擷取網址、標題與清理後的正文,使用你真實的設定與登入狀態。開啟並讀取網址:用你的 Cookie 與登入狀態在背景分頁開啟連結,擷取文字後自動關閉該分頁。頁面文字會以工具內容回傳給助理,過長頁面在 6 萬字元處截斷。
適用情境
當助理一般的網頁抓取被 403、登入牆、單一登入或機器人偵測阻擋,而你需要它依照你所見讀取文件、論壇討論或私有 issue 時適用。它為唯讀,不能點擊、輸入或填寫表單。
執行需求
僅限桌面版 Chrome 或 Chromium,需在開發人員模式下以未封裝方式載入擴充功能,並用安裝指令碼註冊原生訊息主機。MCP 伺服器需要 Python 3.9 以上,從本機路徑或 browser-buddy-mcp 套件執行;不需 API 金鑰或雲端帳號。
安裝前請注意
助理透過你真實的瀏覽器設定檔讀取,因此能看到你所有已登入工作階段可見的內容,請僅在信任該助理工作階段時使用。open_and_read_url 可能被提示注入的頁面引導,應在設定檔中設定 allowed_domains 清單;清單為空時允許任意網址。頁面文字會進入助理的上下文。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 browser-buddy,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Browser Buddy

[License: MIT] [Chrome MV3] [No dependencies]

Let your coding agent read pages through YOUR real, logged-in browser.

Claude Code's WebFetch gets 403'd on most sites. Ask it to pull up a doc, check a Reddit thread, or look at a GitHub issue, and it comes back with a 403 — because server-side fetchers don't have your cookies, your logins, or your sessions.

Browser Buddy is a small local MCP bridge: a Chrome extension (Manifest V3) talks to a Python native-messaging host, which exposes two MCP tools. Your agent reads pages exactly as you see them — logged in, past bot checks — and the page never leaves your machine except into the agent's context.

Stdlib only. No dependencies, no cloud, no API keys.

Tools

ToolWhat it does
read_active_tabExtract readable text (URL, title, cleaned body) from your active Chrome tab
open_and_read_urlOpen a URL in a background tab with your real profile (cookies/logins), extract its text, close the tab

Architecture

┌─────────────┐   MCP (JSON-RPC 2.0     ┌──────────────────┐  Unix socket   ┌───────────────────┐  Native Messaging  ┌────────────────┐│ Claude Code │ ── over stdio, NDJSON ──▶ │ browser_buddy_mcp  │ ── NDJSON ──▶ │ browser_buddy_host │ ── 4-byte LE ──▶ │ Chrome extension ││             │ ◀────────────────────── │      .py           │ ◀──────────── │       .py          │ ◀── JSON ─────── │ (your profile) │└─────────────┘                          └──────────────────┘                └───────────────────┘                  └────────────────┘         ▲                                        │                                                                     │         │                                        │  one request per socket connection;                                 │  chrome.tabs +         └──────── page text lands here ──────────┘  host routes replies by request id                                  │  chrome.scripting                                                                                                                        ▼                                                                                                              real logged-in page
  • Extension (extension/): MV3 service worker. Holds a persistent chrome.runtime.connectNative port to the host (auto-reconnects). Executes read_active_tab / open_and_read_url against your real tabs and posts extracted text back.
  • Host (host/browser_buddy_host.py): launched by Chrome. Bridges the extension (length-prefixed stdio) and the MCP server (Unix socket at $TMPDIR/browser-buddy/browser-buddy.sock). Correlates requests by id, with a 90 s timeout.
  • MCP server (pypi/browser_buddy_mcp.py): hand-rolled JSON-RPC 2.0 over stdio (no mcp package). Forwards tool calls to the host; returns page text as MCP content.

Installation

1. Load the extension

  1. Open chrome://extensions, enable Developer mode.
  2. Load unpacked → select the extension/ folder.
  3. Copy the extension ID shown under "Browser Buddy".

2. Register the native host

bash
cd host./install.sh <paste-extension-id-here>

This writes com.browserbuddy.host.json into Chrome's NativeMessagingHosts directory (Linux/macOS) pointing at browser_buddy_host.py. Restart Chrome, then open the extension's service worker console — you should see [browser-buddy] native host connected.

3. Add the MCP server to Claude Code

bash
claude mcp add browser-buddy -- python3 /absolute/path/to/pypi/browser_buddy_mcp.py

Or in ~/.claude.json / project .mcp.json:

json
{  "mcpServers": {    "browser-buddy": {      "command": "python3",      "args": ["/absolute/path/to/browser-buddy/pypi/browser_buddy_mcp.py"]    }  }}

Requires Python 3.9+. No pip install needed — or install the published package: pip install browser-buddy-mcp (built from pypi/; the browser-buddy-mcp command is the entry point).

Demo

  1. Log in to a site WebFetch can't reach in your normal Chrome (e.g. a private GitHub issue, a login-walled doc).
  2. In Claude Code: "Use browser-buddy to read my active tab."
  3. Or: "Use browser-buddy's open_and_read_url to read ." — a background tab opens, the text is extracted, the tab closes itself.

Why not just use a scraping API? (Firecrawl et al.)

Vendor scrapers (Firecrawl, etc.) fetch pages server-side: they never have your cookies, can't get past SSO/2FA/login walls, can't see what you see behind an account, and they charge per page. The official Claude in Chrome goes the other way — full autonomous browser control — but ships a permission dialog per tool call (dozens per session) and sits at 2.7 stars on the Chrome Web Store.

Browser Buddy picks the middle: read-only access through the browser you already logged into. No credentials leave your machine, nothing to pay per page, no dialog spam — just "let the agent see what I see."

Limitations (honest)

  • Chrome/Chromium only. The extension is the whole trick; no Chrome, no tool.
  • Read-only by design. It extracts text; it doesn't click, type, or fill forms. That's a feature for trust, but it means CAPTCHAs / interactive gates still stop it.
  • Text extraction is heuristic, not a full readability engine. Heavy SPAs usually work (we wait for load + a settle beat), but exotic layouts may extract noise.
  • Your real profile = real risk surface. The agent sees everything your browser can see. Only install this if you trust the agent session reading your tabs.
  • MV3 service workers are ephemeral. The extension auto-reconnects its native port, but a cold start can add ~1 s to the first call.
  • One request at a time per socket connection is fine for an agent; this is not built for concurrent scraping fleets.
  • Long pages are truncated at 60k characters (flagged with (truncated)).

Security: domain allowlist

open_and_read_url opens URLs in your real, logged-in browser. A prompt-injected page could otherwise steer the agent toward your email or other sensitive sites. Restrict which domains the agent may open:

jsonc
// ~/.config/browser-buddy/config.json{  "allowed_domains": ["github.com", "stackoverflow.com"]}

Entries match the domain and its subdomains (docs.github.com is covered by github.com). When the list is empty (default), any URL is allowed but the server logs a warning recommending you set it. URLs outside the list are refused before anything is opened. read_active_tab is unaffected — it only reads the tab you already opened.

Development

bash
python3 tests/test_smoke.py   # 25 tests: framing, bridge routing, MCP handlers,                              # socket dir, domain allowlistnode --check extension/background.js

License

MIT — see LICENSE.

來源:README.md,提交 01f6142

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 30, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分