项目简介
'playwright-mcp-server' 是一个利用 Playwright 库构建的 Model Context Protocol (MCP) 服务器,旨在通过标准化的 JSON-RPC 协议,为大型语言模型 (LLM) 客户端提供丰富的浏览器自动化功能。它允许 LLM 执行网页导航、DOM 交互、内容抓取、网络监控等操作,将网页作为其上下文的一部分。
主要功能点
- 浏览器管理: 支持多标签/多窗口管理,切换页面,关闭页面。
- 网页导航: 访问 URL、刷新、前进、后退,并等待特定 URL 或加载状态。
- DOM 交互: 点击、输入文本、填充表单、选择选项、悬停、滚动、按下键盘按键等操作。
- 表单处理: 检查/取消检查复选框,上传文件。
- 元素查找与验证: 通过 CSS、XPath、角色、文本等选择器查询元素、检查元素的可见性和可用性,获取元素位置尺寸、属性和计算样式。
- 内容与快照: 获取网页 HTML、辅助功能树、截屏(页面或元素)、生成网页 PDF。
- JavaScript 执行: 在页面上下文中运行任意 JavaScript 代码,获取页面错误和控制台日志。
- 网络监控与拦截: 捕获请求/响应、清除日志、拦截和修改网络请求,等待特定响应,获取响应体。
- 数据管理: 管理浏览器 Cookie、本地存储 (localStorage) 和会话存储 (sessionStorage),并支持清空。
- 身份定制: 设置自定义 HTTP 请求头和用户代理 (User-Agent)。
- 页面状态: 设置视口大小,等待网络空闲。
安装步骤
- 从 GitHub 快速安装:
打开终端或命令行,执行以下命令安装服务器。
pip install git+https://github.com/alexrwilliam/playwright-mcp-server.git - 安装 Playwright 浏览器依赖:
安装完成后,执行以下命令安装 Playwright 所需的浏览器(Chromium, Firefox, WebKit)。
playwright install
服务器配置
MCP 客户端需要配置服务器的启动命令和参数以建立连接。以下是推荐的配置信息,通常保存为 'claude_desktop_config.json' 或类似文件中的一个条目:
{ "mcpServers": { "playwright": { "command": "playwright-mcp", "args": ["stdio", "--browser", "chromium", "--headless", "--timeout", "30000"], "comment": { "command": "执行 Playwright MCP 服务器的命令,确保 'playwright-mcp' 已在系统的 PATH 中。", "args": [ "第一个参数 'stdio' 指定使用标准输入/输出作为通信协议,这是多数 MCP 客户端的默认和推荐方式。", "第二个参数 '--browser chromium' 指定使用 Chromium 浏览器引擎。您也可以选择 'firefox' 或 'webkit'。", "第三个参数 '--headless' 表示浏览器将在后台无头模式运行,不会显示图形用户界面。如果您需要看到浏览器窗口,请改为使用 '--headed'。", "第四个参数 '--timeout 30000' 设置所有操作的默认超时时间为 30000 毫秒 (30 秒)。您可以根据需要调整。", "可选参数包括:", " '--channel <browser_channel>':使用已安装的真实浏览器,例如 'chrome' (Google Chrome)、'msedge' (Microsoft Edge) 等,而非 Playwright 自带的浏览器。", " '--user-data-dir <path>':指定浏览器用户数据目录的路径,启用持久化上下文。这意味着浏览器会保留您的登录状态、Cookie、扩展程序和浏览历史等数据,在服务器重启后仍可访问。例如,在 macOS 上可以是 '/Users/yourusername/Library/Application Support/Google/Chrome'。", " '--port <port>':如果服务器将通过 HTTP 协议提供服务(而非 stdio),则需要指定端口,例如将 'stdio' 替换为 'http',并添加 '--port 8000'。" ] } } } }
基本使用方法
安装并配置完成后,MCP 客户端(如 Claude Desktop 或其他支持 MCP 的 LLM 应用)将能够自动启动并连接到 Playwright MCP 服务器。LLM 可以通过调用服务器提供的工具来执行浏览器操作,获取网页信息,从而实现高级的网页交互和数据提取任务。
例如:
- LLM 可能会通过调用 'navigate("https://www.example.com")' 来打开网页。
- 然后使用 'get_html()' 来获取页面的完整 HTML 内容。
- 或者使用 'click("#submitButton")' 来点击页面上的一个按钮。
- 通过 'query_selector_all(".product-item")' 来获取所有产品列表项的信息。
- 使用 'screenshot(full_page=True)' 截取整个页面的图片。
这些工具调用将由 LLM 客户端根据其任务和策略自动生成和执行,实现与网页的智能交互。
信息
分类
网页与API