返回市场
剧本创作家

剧本创作家

作者:remorses15 星标更新:2025-11-24

项目介绍

<div align='center'> <br/> <br/> <h3>playwriter</h3> <p>仍在开发中。尚未准备好使用。</p> <p>类似于Playwright MCP,但通过扩展实现。上下文窗口减少90%,能力提升10倍(完整的Playwright API)。</p> <br/> <br/> </div>

安装

  1. 安装Chrome扩展

    从Chrome网络商店安装Playwriter MCP扩展(或在开发期间加载未打包版本)。将扩展固定到Chrome工具栏以方便访问。

  2. 连接到标签页

    点击想要控制的任何标签页上的Playwriter MCP扩展图标。成功连接后,图标会变成绿色。

    图标状态:

    • 灰色: 未连接
    • 绿色: 已连接并准备就绪
    • 橙色徽章(...): 正在连接
    • 红色徽章(!): 错误
  3. 添加MCP到您的代理

    将以下配置添加到您的MCP客户端设置中(例如,Claude Desktop的claude_desktop_config.json):

    {
      "mcpServers": {
        "playwriter": {
          "command": "npx",
          "args": [
            "playwriter@latest"
          ]
        }
      }
    }
    

    重启您的MCP客户端,现在就可以开始了!您的AI助手可以通过扩展来控制浏览器。

使用

使用MCP

重要提示: 在使用MCP之前,您必须在至少一个标签页上启用扩展:

  1. 将Playwriter扩展固定到Chrome工具栏(点击拼图图标)
  2. 导航到您想要控制的标签页
  3. 点击扩展图标——连接成功后,它会变成绿色

一旦在一个或多个标签页上启用,您的AI助手可以:

  • 通过execute工具控制所有已启用的标签页
  • 使用Playwright的上下文和页面API在标签页之间切换
  • 编程创建新的标签页
  • 对您的浏览器标签页运行任何Playwright代码

MCP将自动启动一个中继服务器并连接到您已启用的浏览器标签页。

使用Playwright

您可以编程地使用playwriter与playwright-core一起使用:

import { chromium } from 'playwright-core'
import { startPlayWriterCDPRelayServer, getCdpUrl } from 'playwriter'

const server = await startPlayWriterCDPRelayServer()

const browser = await chromium.connectOverCDP(getCdpUrl())

const context = browser.contexts()[0]
const page = context.pages()[0]

await page.goto('https://example.com')
await page.screenshot({ path: 'screenshot.png' })

await browser.close()
server.close()

比较

与Playwright MCP比较

Playwriter使用Chrome扩展而不是启动一个新的Chrome窗口。这种方法有以下几个优点:

  • 与您的代理协作 - 在同一浏览器中与AI一起工作,帮助它解决验证码或其他复杂交互问题
  • 从现有页面开始 - 在您现有的浏览器页面上启动MCP,精确复制错误发生时的情况
  • 重用您的扩展 - 继续使用广告拦截器、密码管理器和其他已经安装的扩展
  • 绕过自动化检测 - 临时断开扩展以绕过Google登录等检测系统,然后重新连接继续自动化。使用Playwright的无头Chrome,自动化总是会被检测到并阻止您的工作流程
  • 较少资源使用 - 不需要生成单独的Chrome实例,节省内存和CPU
  • 单一浏览器工作流 - 所有操作都在您的主Chrome浏览器中进行,无需在窗口之间切换

与BrowserMCP比较

Playwriter可以访问完整的Playwright API,它可以发送任何CDP命令通过Playwright方法。它仅使用一个工具execute来发送Playwright代码片段。这意味着LLM可以重复利用其关于Playwright的知识,并且较少的上下文窗口用于暴露浏览器自动化工具。

Playwriter也更强大,因为它暴露了完整的Playwright API,而不仅仅是几个工具。

为了对比,这里列出了BrowserMCP支持的工具:

导航:

  • browsermcp_browser_navigate - 导航到URL
  • browsermcp_browser_go_back - 返回到前一页
  • browsermcp_browser_go_forward - 前进到下一页 页面检查:
  • browsermcp_browser_snapshot - 捕获当前页面的可访问性快照(使用此功能获取元素引用)
  • browsermcp_browser_screenshot - 拍摄当前页面的截图
  • browserm_浏览器获取控制台日志 - 获取浏览器的控制台日志 互动:
  • browsermcp_browser_click - 单击元素(需要来自快照的元素引用)
  • browsermcp_browser_hover - 鼠标悬停在元素上
  • browsermcp_browser_type - 向可编辑元素中键入文本(可选提交)
  • browsermcp_browser_select_option - 在下拉列表中选择一个选项
  • browsermcp_browser_press_key - 按键盘上的键 实用工具:
  • browsermcp_browser_wait - 等待指定的时间(秒)

与Antigravity(Jetski)比较

Antigravity的浏览器集成存在与BrowserMCP相同的基本问题:它为每个浏览器动作创建了一个单独的工具,而不是使用LLM已经理解的Playwright API。

上下文窗口问题:

Jetski暴露了17个以上的浏览器工具(capture_browser_screenshotbrowser_click_elementbrowser_inputbrowser_scrollwait_5_seconds等)。每个工具定义都会消耗上下文窗口空间,包括参数模式、描述和示例。这种臃肿的模式迫使Antigravity每次使用浏览器时都生成一个子代理,这为每次浏览器交互增加了显著的延迟和间接性。

Playwriter的方法:

  • 1个工具而不是17个以上 - 只需execute工具
  • 不生成子代理 - 浏览器操作直接进行,没有额外层
  • 更低的延迟 - 不需要为每个浏览器任务生成/拆除代理
  • 利用现有知识 - LLM已经了解Playwright API,因为它们的训练数据中包含这些信息
  • 更强大的能力 - 全面的Playwright API访问,而非有限的一组预定义动作

讽刺的是,通过尝试使用专用工具使浏览器控制“更简单”,这些集成使其变得更慢、能力更弱,并浪费了本可用于实际工作的上下文窗口。

安全性

Playwriter设计时考虑到了安全性,确保只有您才能控制您的浏览器。

工作原理

  1. 本地WebSocket服务器:当MCP启动时,它会在localhost:19988启动一个单例WebSocket服务器
  2. 双重连接:Chrome扩展和MCP客户端都连接到这个本地服务器
  3. 用户控制访问:扩展只能控制您明确点击扩展图标(绿色图标表示已连接的标签页)的标签页
  4. 仅限本地主机:WebSocket服务器不会发送CORS头,防止任何网页或远程服务器连接到它——只有运行在您本地机器上的进程可以建立连接
  5. 明确同意:Chrome会在被自动化的标签页上显示一个“自动化横幅”,清楚地表明哪个标签页正在被自动化

可以控制什么

  • 仅启用的标签页:您明确通过点击扩展图标连接的标签页
  • 通过Playwright命令创建的新标签页:编程创建的标签页
  • 其他内容不可控:其他浏览器标签页、您的浏览历史记录或任何您未明确连接的标签页均无法访问

不能发生什么

  • 无远程访问:外部网站或服务器无法连接到WebSocket(仅限本地主机)
  • 无被动监控:扩展不能读取或监控您未连接的标签页
  • 无自动传播:调试器不会自动附加到您手动打开的新标签页

这种架构确保浏览器自动化仅在您明确许可的情况下,在您选择的标签页上进行。