agent-browser-mcp
让 AI Agent 直接操作本机真实 Chrome 的 MCP 服务,保留登录态与 Cookie,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI Agent 直接操作本机真实 Chrome 的 MCP 服务,保留登录态与 Cookie,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你一定遇到过这种情况:AI Agent 想帮你完成某个网站操作,但网站需要登录、验证码、复杂交互——传统的沙盒浏览器自动化方案要么绕不过登录墙,要么丢掉了你的 Cookie,整个流程要从头开始。
agent-browser-mcp 正是为解决这个问题而生的。
大多数现有的浏览器自动化 MCP 工具,本质上都是无状态浏览器——每次启动都是干净的 Chrome 环境,没有任何登录信息。开发者想让 AI 读取小红书推荐流、自动化后台管理系统、抓取知识库内容,首先要面对的就是:如何在自动化环境里保持登录态?
传统的解决方案有:手动注入 Cookie、通过 OAuth 重新授权、或者干脆放弃自动化改用 API。这些方案要么复杂、要么不稳定、要么根本不可行。
agent-browser-mcp 换了一个思路:不去解决「如何保持登录态」的问题,而是直接告诉你——别重开浏览器了,用你正在用的 Chrome。
这个项目并非凭空构造,浏览器自动化底层能力实际上是从 GenericAgent 项目中提取并重新封装为 MCP 服务的(作者 lsdefine,MIT 许可证)。项目包含三个核心组件:
一个 unpacked 类型的 Chrome 扩展,运行在真实 Chrome 内部。它通过 Chrome 内部 API 直接访问 tabs(发现当前打开的所有标签页)、cookies(读取当前域名的 Cookie 信息)、debugger(建立 CDP 连接)、management(扩展自身管理)。这个扩展负责将 Chrome 的原生能力暴露给本地桥接服务,同时处理会话维护和消息转发。
这是整个系统的核心引擎,包含两类服务器:
WebSocket 服务器(默认端口 18765):负责与 Chrome 扩展保持长连接,维护所有活跃标签页的会话信息。每个会话(Session)对象记录了标签页 ID、URL、连接状态、断开时间等关键数据。
HTTP 服务器(默认端口 18766):提供 RESTful 接口,支持更广泛的客户端连接。Session 类型分为 ws(WebSocket 直连)、ext_ws(扩展 WebSocket)和 http(HTTP 轮询)三种模式。
TMWebDriver 还负责管理执行结果的返回队列(results)和确认机制(acks),是一个完整的多会话浏览器控制器。
基于 FastMCP 框架实现,将 TMWebDriver 的所有能力封装为标准 MCP 工具,暴露给 Hermes Agent、Claude Desktop、Cursor 等 MCP 客户端。当前暴露的核心工具包括:
| 工具类别 | 工具名 | 功能 |
|---|---|---|
| 浏览器/标签 | list_tabs | 列出所有已连接的标签页 |
| switch_tab | 切换到指定标签页 | |
| open_url / open_new_tab | 导航到 URL 或新建标签 | |
| 页面读取 | scan_page | 扫描并简化页面 HTML/文本 |
| execute_js | 在页面中执行任意 JavaScript | |
| CDP 控制 | cdp_command / cdp_batch | 单条或批量调用 CDP 命令 |
| get_cookies | 读取当前域名的 Cookies | |
| 截图 | capture_page_screenshot | 页面截图 |
| capture_desktop_screenshot | 桌面截图 | |
| 物理输入 | mouse_move/click/drag | 真实鼠标操作 |
| type_text / hotkey | 键盘输入与热键 |
通过 agent-browser-mcp doctor 命令,可以输出一份完整的本地诊断 JSON,包含扩展路径、端口状态、已连接标签页数量等关键信息。
项目中另一个值得关注的技术细节是 simphtml.py。它通过一段复杂的 JavaScript 函数 optHTML(),对页面 DOM 进行深度精简:
这一系列处理让 AI agent 能拿到干净的页面结构,而不会被大量无意义的 HTML 标签淹没。
项目的 pyproject.toml 中明确定义了以下核心依赖:
这是一个非常聚焦的依赖集,全部是成熟稳定的工具库,没有引入重型 ML 框架或实验性依赖。代码总规模仅 40KB,说明项目定位是小而精的集成工具,而非功能完备的平台。
agent-browser-mcp 最适合以下场景:
局限性需要正视:
与竞品对比来看,该项目与 Vercel 的 agent-browser(Rust 实现,22K stars)定位相似但技术路线不同——前者走 Python + MCP 路线,后者走 Rust CLI 路线。与 Playwright MCP 相比,agent-browser-mcp 的差异化在于「连接真实浏览器」而非「启动新无状态浏览器」。
# 1. 安装 Python 包
pip install -e .
# 2. 加载 Chrome 扩展
extension_path=$(agent-browser-mcp extension-path)
# 在 chrome://extensions 中开启开发者模式,加载上述目录
# 3. 打开任意 HTTP/HTTPS 网页(不能停留在 about:blank)
# 4. 配置 Hermes(~/.hermes/config.yaml)
mcp_servers:
agent_browser:
command: agent-browser-mcp
timeout: 120
# 5. 验证连接
agent-browser-mcp doctor
从代码分析角度来看,agent-browser-mcp 有以下几个值得关注的亮点:
架构清晰,三层解耦:Chrome 扩展负责与浏览器内部通信,TMWebDriver 负责会话管理与协议转换,MCP 层负责 AI 接口。三层各司其职,扩展性和可维护性都很好。
基于真实浏览器,无 Cookie 困境:与所有无状态浏览器自动化方案不同,该项目直接复用用户的浏览器上下文,从根本上绕过了登录态管理的难题。
CDP 能力的完整暴露:不仅能做页面扫描,还能直接调用 CDP 任意命令,这意味着理论上可以访问 Chrome DevTools 的全部能力。
代码质量良好:项目虽然年轻(2026年4月创建),但结构规范、有 CLI 诊断工具、有清晰的错误处理,代码注释和 README 都很完整。
MIT 许可证,完全开源:浏览器自动化核心代码来自 GenericAgent,致谢清晰,许可证合规。
agent-browser-mcp 是一个定位精准的 MCP 工具,填补了「让 AI Agent 操作真实浏览器」这一细分需求。它不适合所有人——如果你需要无状态自动化、容器化部署、跨平台通用方案,这个项目不是答案。但如果你想让 Hermes 或其他 MCP 客户端直接进入你已经登录的浏览器工作流,这是目前市面上为数不多的可行方案之一。
项目体量小、迭代快(2026年4月至今已有多个 commit),作者 zhea 保持了良好的维护节奏,适合持续关注。