mcpField
A
agent-webbridge

agent-webbridge

本地服务
github.com/jeet-dhandha浏览器自动化121 周前更新

关于 agent-webbridge

开源本地桥接工具,让 Agent 通过浏览器工具操作已登录的 Chrome 配置文件。它支持单个配置文件中的并行标签页和多个配置文件,浏览器操作保留在本机。

主要功能

  1. 01控制已登录的 Chrome 会话
  2. 02跨多个标签页并行执行命令
  3. 03选择多个 Chrome 配置文件
  4. 04检查页面并与元素交互
  5. 05截取屏幕、保存 PDF 和捕获网络请求

适用场景

  1. 01读取需要现有登录状态的页面
  2. 02在已登录会话中自动填写表单
  3. 03通过不同配置文件操作多个账户
  4. 04捕获页面截图或网络活动

MCP 相关

其 stdio MCP 服务向 MCP 客户端提供浏览器控制工具,并将命令路由至本地配置文件守护进程和 Chrome 扩展。Agent 可选择配置文件,并按标签页 ID 指定目标。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jeet-dhandha-agent-webbridge": {
"command": "npx",
"args": [
"-y",
"agent-webbridge"
]
}
}
}
启动命令npx -y agent-webbridge

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmagent-webbridge1.3.3

工具

16

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

WebBridge(Agent WebBridge)

文档 npm Chrome Web Store Glama 许可证 node

WebBridge(agent-webbridge):使用 Claude Code、Cursor 和任何 MCP 客户端操控你已登录的真实 Chrome——支持多个 Chrome 配置文件,并实现真正的逐标签页 DevTools 并行处理。100% 开源(MIT),零云端服务,无遥测,全部运行在 127.0.0.1 上。

🌐 交互式网站和演示录屏:jeet-dhandha.github.io/agent-webbridge

将其添加到你的 Agent(30 秒)

npm i -g agent-webbridge && awb setup "Work"     # once: installs the daemon + the Chrome extension

然后将 MCP 服务添加到 Claude Desktop、Claude Code、Cursor 或 Windsurf:

{
  "mcpServers": {
    "chrome": { "command": "npx", "args": ["-y", "agent-webbridge", "mcp"] }
  }
}

Claude Code:claude mcp add chrome -- npx -y agent-webbridge mcp

或者将其安装为 Agent 技能(适用于 Claude Code、Cursor、Codex 等):npx skills add jeet-dhandha/agent-webbridge

现在,你的 Agent 可以使用 browser_navigate、browser_snapshot、browser_click、browser_fill、browser_evaluate、browser_screenshot 等工具——所有操作都在你的 Chrome 中运行,使用你的会话。传入 profile 选择账号,传入 tabId 并行操作多个标签页。如果调用失败,browser_status 会告知 Agent 哪个配置文件尚未连接。

为什么不选 Playwright 或云端浏览器?
云端浏览器(Browserbase、Steel…)无头 Playwright / Puppeteeragent-webbridge
费用按使用量计费免费免费,MIT
你的登录状态、通行密钥、双重身份验证重新验证身份或上传 Cookie重新登录;双重身份验证会失效已登录
浏览器身份云端和数据中心 IP 经常受到挑战无头浏览器经常受到挑战你自己的 Chrome 配置文件(网站仍可能限制自动化操作)
数据去向第三方服务本地仅本地,127.0.0.1
同时使用多个账号需要管理独立会话手动编排每个账号一个配置文件,可并行操作多个标签页

它会自动化操作你已登录的浏览器——仅将其用于你有权自动化操作的账号和网站,并遵守各网站的条款。

agent-webbridge 是一个轻量级 Node 守护进程(仅一个运行时依赖:ws),以及一个全新开发的 MV3 Chrome 扩展。Agent 向本地路由器 POST 一条命令 → 路由器将命令转发给相应配置文件的守护进程 → 扩展按标签页连接 Chrome DevTools 协议。

查看实际效果

真实运行,而非演示模型:脚本向 npx agent-webbridge mcp 发送 MCP 调用,由它操控一个真实且已登录的 Chrome 配置文件。截图来自浏览器本身,耗时也经过实测。仅访问公开页面;不会向任何账号提交内容。

阅读任意页面:在 Hacker News 上执行快照和 evaluate
阅读任意页面
同时操作五个标签页:并行耗时 3.5 秒,逐个操作耗时 9.3 秒
并行操作五个标签页
使用你的真实登录状态:填写已登录的编辑器,在发布前停止
使用你的真实登录状态
填写并提交表单(字段、单选按钮、复选框)
填写并提交表单

耗时数据来自一台使用家庭宽带的 MacBook;你的结果可能有所不同。

概述

  • 操控真实浏览器 — 使用你实际的 Chrome 和登录会话。无需在无头模式下重新登录,也无需绕过身份验证抓取内容。
  • 并行运行多个标签页 — 扩展会为每个标签页附加 chrome.debugger,因此同一配置文件中的 N 个标签页可以并发运行。在我们的基准测试中,5 个标签页并行耗时 3.5 秒,而逐个运行耗时 9.3 秒(测试设备为一台 MacBook;你的结果可能不同)。
  • 跨多个配置文件运行 — 每个配置文件运行一个守护进程。总并发量 = 配置文件数 × 标签页数,全部通过一个端点访问。
  • 保持隐私 — 使用自己的守护进程和 MV3 扩展,无闭源依赖,也无需账号。所有操作都在本地完成。

安装

npm i -g agent-webbridge        # 1. the daemon + the `awb` CLI
awb setup "Work"                # 2. opens the Chrome Web Store; click "Add to Chrome"

awb setup 会在你选择的配置文件中打开 Agent WebBridge 列表页,并在你点击 添加至 Chrome 时持续轮询。一旦检测到安装完成,它就会将该配置文件连接到对应的守护进程,并启动整个集群。

要求: macOS 或 Windows · Google Chrome · Node.js ≥ 18。

快速开始

awb up "Work" "Personal"        # bring profiles up (setup did this on first run)

# Drive any profile by name — using the handy cmd helper function:
cmd(){ curl -s -m 60 -X POST http://127.0.0.1:10086/command -H 'Content-Type: application/json' -d "$1"; echo; }

cmd '{"action":"navigate","args":{"url":"https://news.ycombinator.com"},"session":"scan","profile":"Work"}'

awb down                        # stop the fleet when done

每次调用都会向 127.0.0.1:10086 发送 POST /command 请求。请将负载用单引号('...')括起来,以避免 shell 引号转义问题。"session" 会将某个任务的标签页归入同一个 Chrome 标签组;"profile" 用于选择要操控的 Chrome 配置文件。传入 {"action":"screenshot","args":{"path":"/path/to/img.png"}} 可将屏幕截图直接保存到磁盘。

工具(15 个原生工具 + 状态)

工具功能
navigate在新标签页或现有标签页中打开 URL
find_tab按 URL / 标题查找标签页
evaluate在页面中运行 JavaScript 并返回结果
snapshot获取包含稳定 @e 元素引用的无障碍树
click根据 @e 引用点击元素(合成 DOM 点击)
trusted_click执行真实鼠标点击(CDP,isTrusted),适用于忽略 click 的页面
fill设置原生输入框和 contenteditable 富文本字段
upload以编程方式将文件指定给 <input type="file">
file_chooser_intercept在以编程方式上传文件时,拦截原生操作系统文件选择器对话框(Finder/Explorer)
screenshot将整页或元素截图直接保存到磁盘
save_as_pdf将页面保存为 PDF
network捕获网络请求(start、stop、list、detail)
list_tabs列出打开的标签页及其 ID 和标签组信息
close_tab关闭标签页
close_session关闭会话及其整个标签组

编程 SDK(Node.js 和 Python)

Node.js ESM SDK
import { WebBridgeClient } from "agent-webbridge";

const client = new WebBridgeClient({ profile: "Work", session: "my-task" });
await client.navigate("https://example.com");
const title = await client.evaluate("document.title");
console.log("Title:", title);
Python 3 SDK(零依赖)
from scripts.awb_client import WebBridgeClient

client = WebBridgeClient(profile="Work", session="my-task")
client.navigate("https://example.com")
title = client.evaluate("document.title")
print("Title:", title)

工作原理

  AI agent  ──HTTP POST /command──▶  router (127.0.0.1:10086)   routes by "profile"
                                          │
                       ┌──────────────────┼──────────────────┐
                       ▼                  ▼                  ▼
                  daemon "Work"      daemon "Personal"     daemon …      one per profile
                       │  WebSocket
                       ▼
                  MV3 extension      ──chrome.debugger (a Map: one attach PER TAB)──▶
                       │
                       ▼
                  Chrome DevTools Protocol      tab 1 ║ tab 2 ║ tab 3   (concurrent)

路由器会将每条命令代理到对应配置文件的守护进程,该守护进程使用确定性哈希端口;守护进程通过 WebSocket 将命令中继到该配置文件的扩展;扩展会维护一个 Map,记录 chrome.debugger 附加状态,每个标签页对应一条,并发出 CDP 调用。每个标签页各自维护映射正是关键所在:将所有操作都导向单个“当前标签页”的桥接程序,每个配置文件只能操控一个标签页;而这种方式可以操控 N 个标签页。

CLI

命令作用
awb setup <profile…>一次性安装:引导完成“加载已解压的扩展程序”、连接并启动整个集群
awb up <profile…>启动指定配置的守护进程和路由器,打开窗口并连接
awb down停止路由器和整个集群
awb connect <profile…> [--no-restart]将各配置的扩展指向其守护进程。如果扩展已是最新版本,Chrome 会保持打开;--no-restart 绝不会关闭 Chrome(否则会失败)
awb check [profile…] [--json]只读就绪探测(目录是否存在?是否启用开发者模式?是否已加载?是否已连接?)——Agent 在安装期间会轮询此命令
awb status查看各配置的守护进程和扩展连接状态
awb doctor诊断环境(Chrome、配置、守护进程、扩展)
awb mcp运行 stdio MCP 服务(上述配置启动的内容)
awb profiles列出 Chrome 配置、其哈希端口以及扩展是否存在

<profile> 可以是任何能唯一解析的值——配置的名称("Work")、电子邮件地址或 Chrome 目录("Profile 2")。

在 AI Agent 中使用

将其作为 Claude Code 技能 / 插件提供——捆绑的 agent-webbridge 技能会教 Agent 完整流程(通过 awb check --json 安装,然后通过 POST /command 操作)。要改进扩展本身,可运行 awb install-dev,从仓库内的构建加载已解压的扩展程序(chrome://extensions → 开发者模式 → 加载已解压的扩展程序 → agent-webbridge-extension/);它自带密钥,因此开发版 ID 在重新加载后保持不变。

社区配方(awb-recipes)

网站会不断更新标记语言并部署反机器人陷阱。与其让 Agent 猜测选择器或在边缘情况下失败,不如浏览社区维护并验证过的操作手册:awb-recipes。

  • github-gist-create:通过浏览器界面和当前会话创建私密或公开的 GitHub Gist。
  • google-search-results:从你已登录的浏览器中提取自然搜索结果。
  • hn-reply-box:使用真实用户 Cookie 与 Hacker News 讨论串交互。
  • linkedin-feed-posts:提取真实动态内容,不劫持会话。
  • npm-most-depended:提取软件包下载指标和依赖层级。

将配方交给 Agent:“用我的 Work 配置执行 awb-recipes 中的 github-gist-create 配方。” 要参与贡献,请认领一个带有 good first recipe 标签的未解决问题并提交 PR!

生态与收录

平台

macOSWindows
配置文件发现~/Library/Application Support/Google/Chrome%LOCALAPPDATA%\Google\Chrome\User Data
Chrome 二进制文件/Applications/Google Chrome.appProgram Files\Google\Chrome\Application\chrome.exe(自动检测)
守护进程、路由器、MCP、所有工具✅✅
安装流程(awb setup)通过 AppleScript 打开配置文件窗口启动带有该配置文件的 Chrome 来打开
标签页/窗口整理(聚焦、整理空白窗口)✅跳过——仅影响外观

如果 Chrome 或其数据目录位于非标准位置(例如 Chrome Beta、便携版安装),请设置 AWB_CHROME_BIN / AWB_CHROME_DIR。Linux 路径已配置,但未经测试。

在 Windows 上,请从 PowerShell 或 cmd 运行命令(下方的 curl 示例使用 bash 引号;在 PowerShell 中请使用 curl.exe 和 here-string,或者直接使用 MCP 服务)。守护进程和 Windows 代码路径已由 windows-latest 上的 CI 覆盖;启动 Chrome 的步骤(awb setup / awb up)测试最少——如果出现异常,请提交 issue。

安全

  • 所有服务仅监听 127.0.0.1。从 1.3.1 版起,路由器和守护进程也会拒绝携带 Web Origin 或非环回 Host 的请求,因此你访问的网站无法操控该桥接服务(请参阅更新日志)。请从早期版本升级,并通过 awb down && awb up 重启所有服务。
  • 它会以你的身份在已登录的浏览器中操作。任何能够访问 127.0.0.1:10086 的本地程序都能执行相同操作,因此请仅在你信任的机器和账户上运行,并在 Agent 中为不可逆操作(发帖、付款、删除)设置人工确认。
  • 请通过 GitHub 的 Security 选项卡中的“Report a vulnerability”私下报告漏洞。

许可证

MIT © jeet-dhandha

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。