Token导航 LogoToken导航

MCP Server · 浏览器工具

Browser MCP Containers

提供基于Docker的浏览器多容器代理服务,支持Playwright和Chrome DevTools,具有反检测、Cookie导入和浏览器签名伪造功能,适用于AI代理的浏览器自动化测试和开发。

未说明官方级别未说明来源级核验工具 0
浏览器自动化JavaScriptClaude

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
kenpodragon
提供方
kenpodragon

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

2

仓库热度

收录来源

1 个

MCP World

选型结论

Browser MCP Containers 属于浏览器工具类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,适配 Claude,没有现成的安装命令;接入前要先准备 会话凭据。

分类

浏览器工具

传输方式

未说明

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

浏览器MCP容器

先决条件

  • 码头工人 Docker Compose
  • 谷歌Chrome或Chromium(用于cookie导出扩展程序)

快速开始

  1. 克隆仓库:
   git clone https://github.com/kenpodragon/browser-mcp-containers.git
   cd browser-mcp-containers
  1. 在Chrome中安装cookie导出器扩展程序:

- 引导到 chrome://extensions - 启用 开发人员模式 (右上角切换) - 点击 装载时未包装 - 选择 docker/extensions/cookie-exporter/ 目录

  1. 导出会话数据:

- 单点:导航到您的应用程序(已登录),单击扩展图标,单击 下载全部 - 多个站点:访问每个网站,单击 抓取数据库 在每个上,然后单击 下载全部 一次

  1. 将导出的文件复制到共享目录中:
   cp ~/Downloads/storageState.json docker/shared/
  1. 启动容器:
   cd docker && docker compose up -d
  1. 复制 .mcp.json.sample 从repo根目录到项目目录 .mcp.json重命名服务器密钥以匹配您的项目(例如。, playwright-webapp, chrome-devtools-extension-dev).
  1. 如果使用克劳德代码,请复制 CLAUDE.md.sample 对于您的项目 CLAUDE.md 用于工具参考和故障排除提示。
  1. 在项目目录中打开Claude Code(或您的MCP客户端)。浏览器工具现在可用。
  1. 验证: curl http://localhost:9100/sse 应返回SSE事件流。在Claude Code中,尝试 browser_navigate 确认工具是否正常工作。

剧作家vs Chrome DevTools

编剧Chrome DevTools
最佳Web应用程序测试、身份验证浏览Chrome扩展程序测试/开发
扩展支持否(扩展程序无法在内部运行)是(完全加载Chrome扩展程序)
Cookie加载原生via storageState.json通过cookie注射器扩展
反侦测--init-script JS注入内容脚本+Chrome标志
基础镜像mcr.microsoft.com/playwright/mcpnode:20-slim +测试用Chrome
内部端口30009222
更简单的设置是更多活动部件

出口管道

为什么是浏览器扩展? 从Chrome v146+开始,Cookie使用应用程序绑定的DPAPI进行加密。外部工具(Python脚本、独立解密器)无法再解密Chrome Cookie。IndexedDB(Firebase和其他框架存储身份验证令牌的地方)也是源范围的,外部无法访问。浏览器扩展是导出两者的唯一可靠方法。

扩展捕获了什么:

  • 所有Cookie 从当前Chrome配置文件
  • 完整浏览器指纹:用户代理、平台、屏幕尺寸、WebGL渲染器、客户端提示、语言、时区、连接信息、硬件规格
  • 索引数据库 从活动选项卡的来源(Firebase身份验证、应用程序状态等)

多站点工作流程: IndexedDB是源范围的-- indexedDB.databases() 仅返回当前页面来源的数据库。要从多个站点捕获身份验证状态,请执行以下操作:

  1. 引导到 现场A (已登录)--单击 抓取数据库
  2. 引导到 现场B (已登录)--单击 抓取数据库
  3. 对所有需要身份验证的站点重复此操作
  4. 点击 下载全部 --一个 storageState.json 与一切

该扩展通过以下方式跨站点累积IndexedDB数据 chrome.storage.local。可折叠面板显示所有收集的来源和数据库,以便在下载前进行查看。这 清除 按钮重置集合。

导出格式: 剧作家兼容 storageState.json 加上 browserSignature 和 indexedDB 领域。这 indexedDB 密钥按来源组织:

{
  "cookies": [...],
  "browserSignature": {...},
  "indexedDB": {
    "http://localhost:5173": [{ "name": "firebaseLocalStorageDb", ... }],
    "https://www.linkedin.com": [{ "name": "beacons", ... }]
  }
}

Playwright和Chrome DevTools容器都从同一个文件读取。注入是源感知的——每个页面只获取与其源匹配的IndexedDB数据,因此多个站点具有相同的数据库名称(例如。 firebaseLocalStorageDb)不要碰撞。

反检测和身份注入

在容器启动时, generate-anti-detect.py 读取 docker/shared/storageState.json 并生成JavaScript补丁,使容器的浏览器与真实浏览器的指纹相匹配,并在页面脚本运行之前注入IndexedDB身份验证数据。

欺骗信号:

  • navigator.platform, navigator.languages, navigator.userAgent
  • screen.width, screen.height, screen.availWidth, screen.availHeight
  • navigator.deviceMemory, navigator.hardwareConcurrency
  • navigator.connection (有效类型、下行链路、rtt)
  • navigator.webdriver (设置为 false)
  • 客户提示(Sec-CH-UA, Sec-CH-UA-Platform等等)
  • colorDepth, pixelDepth, devicePixelRatio, doNotTrack

匹配的Chrome标志: --user-agent, --accept-lang, --window-size 被设置为与捕获的签名相匹配。

索引DB注入: 如果 storageState.json 包含一个 indexedDB 字段,生成的脚本拦截 indexedDB.open() 在页面脚本运行之前调用并注入导出的记录。这是源代码感知的——只有与当前页面的源代码匹配的数据库才会被注入。这使得Firebase Auth、会话令牌和其他IndexedDB存储状态能够转移到容器中。

已知限制: 没有GPU透传,WebGL渲染器就无法被欺骗。容器报告SwiftShader,而不是真实的GPU。这是唯一剩下的可检测信号。

MCP配置

示例 .mcp.json 对于您的项目:

{
  "mcpServers": {
    "playwright-myproject": {
      "type": "sse",
      "url": "http://localhost:9100/sse"
    }
  }
}

要点:

  • 重命名服务器密钥 每个项目(例如。, playwright-webapp, chrome-devtools-extension-dev)
  • 使用 /sse 端点,不 /mcp流式HTTP返回400。
  • 始终设置 "type": "sse" 明确地 当您有其他使用HTTP传输的MCP服务器时 .mcp.json没有它,Claude Code会悄无声息地跳过SSE服务器——没有错误,没有警告,只是缺少工具。
  • 看 .mcp.json.sample 以repo根目录为例。

本地主机转发

当你的应用程序运行时 localhost:3000 在主机上,默认情况下容器内的浏览器无法访问它。这 FORWARD_PORTS 环境变量修复了这个问题。

它是如何工作的: 在容器启动时, socat TCP转发器在容器内启动。每个人都在听 localhost:PORT 并透明地将流量代理到 host.docker.internal:PORT,到达主机。

配置 在 docker-compose.yml:

environment:
  FORWARD_PORTS: "5173,8080,8000"

这将转发三个端口。容器内的浏览器现在可以导航到 localhost:5173, localhost:8080,或 localhost:8000 并联系您的主机服务。

端口冲突警告: 不要将容器的内部MCP端口包含在 FORWARD_PORTS.Playwright内部使用端口3000,Chrome DevTools使用9222。包含这些将导致socat绑定失败(入口点会跳过它们并发出警告)。

当你需要它时: 每当容器中的浏览器需要访问开发服务器、API或主机上运行的任何服务时。

所有端口分配(主机映射、内部MCP端口和转发端口)都在中定义 docker-compose.yml,为您提供了一个查看和管理所有集装箱的完整港口布局的单一位置。

添加更多容器

  1. 在中复制服务块 docker/docker-compose.yml
  2. 更改这些值:

- 服务名称(例如。, playwright-newproject) - 主机端口映射(例如。, 9102:3000 对于剧作家来说, 9103:9222 Chrome DevTools) - PROJECT_NAME 环境变量 - FORWARD_PORTS 根据项目需要

  1. 跑 docker compose up -d 启动新容器。

每个项目一个集装箱。 MCP服务器设计为单客户端(基本协议限制)。连接到同一容器的两个代理会话将发生冲突。

港口惯例: 使用端口 9100-9149 用于浏览器MCP服务。

已知的戈查斯

  • MCP单客户端:每个容器一次服务一个AI代理会话。如果连接似乎卡住,请重新启动: docker compose restart
  • "type": "sse" 必需的:在混合HTTP+SSE传输时 .mcp.json,你 必须 集 "type" 在每个服务器条目上明确显示。否则,Claude Code会自动跳过SSE服务器。
  • 陈旧的项目缓存:如果配置更改后MCP工具未出现,请删除 `~/.claude/projects/

/` 并重新加载IDE。

  • Chrome DevTools屏幕截图:保存在容器内 /app/。使用以下方式检索: docker cp :/app/screenshot.png ./
  • 环境变量变化: docker compose restart 不会重新读取环境变量。使用 docker compose up -d 相反。
  • 剧作家基础形象:官方形象为非根。Dockerfile使用 USER root 之前 apt-get install.
  • 身份验证页面首先显示登录信息:导航到受身份验证保护的页面(例如Firebase)时,初始页面快照可能会显示登录屏幕。身份验证注入是异步的——检查 browser_console_messages 或者在片刻之后拍摄第二张快照。这 Page URL 将显示重定向的URL(例如。 /game 或 /feed)一旦身份验证完成。
  • 约束错误警告A. ConstraintError: An object store with the specified name already exists 控制台中可能会出现警告。这是无害的——IndexedDB拦截器和页面框架都试图创建相同的存储。Auth仍然有效。
  • 导出时IndexedDB为空:确保你在实际的网站页面上(而不是 chrome:// 或 about:blank)并在单击之前登录 抓取数据库IndexedDB是源范围的,只返回当前选项卡源的数据库。
  • Auth停止工作:代币 storageState.json 到期。重新导出:在Chrome浏览器中访问网站(登录),点击 抓取数据库那么 下载全部,保存到 docker/shared/,以及 docker compose up -d --force-recreate.

学分

  • 作者 斯蒂芬·萨拉卡
  • 博客: does-god-exist.org
  • 作为多项目AI代理基础设施的一部分构建
  • 看 FINDINGS.md 了解这是如何建造的以及我们学到了什么
  • 看 Q_and_A.md 用于故障排除和常见问题

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

浏览器自动化JavaScript本地部署Docker容器反检测Cookie管理浏览器签名伪造

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

自动操作网页

打开页面、点击、填表,把浏览器动作交给模型执行。

抓结构化数据

把页面内容整理成表格或 JSON,省掉手工复制粘贴。

走一遍关键流程

按步骤检查页面是否正常,回归时少漏环节。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备会话凭据,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在浏览器工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到会话凭据的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Browser MCP Containers

MCP World · 本页

0未说明未标注1 个2026-05-17
Fetch 9a2682de

MCP.so

1SSE有3 个2026-05-17
Browser 738d52bc

MCP World

0stdio有1 个2026-05-17
Playwright MCP Server

MCP.so

21stdio有4 个2026-05-17
Skyvern MCP

MCP World

0stdio有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Browser MCP Containers 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Browser MCP Containers 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Browser MCP Containers 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Browser MCP Containers 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Browser MCP Containers 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP