微软开源浏览器自动化功MCP服务playwright-mcp
项目简介
使用 Playwright 提供浏览器自动化能力的模型上下文协议 (MCP) 服务器。该服务器允许 LLMs 通过结构化可访问性快照与网页交互,无需截图或视觉调整模型。
关键特性
- 快速轻量:使用 Playwright 的无障碍树,而非基于像素的输入。
- LLM-友好:无需视觉模型,纯基于结构化数据运行。
- 确定性工具应用:避免截图方法常见的歧义。
用例
网页导航和表单填写
- 结构化内容的数据提取
- 由LLMs驱动的自动化测试
- 通用浏览器交互代理
示例配置
{ "mcpServers": { "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest" ] } } }
VS Code 中的安装
您可以使用以下按钮之一在 VS Code 中安装 Playwright MCP 服务器:
或者,您可以使用 VS Code CLI 安装 Playwright MCP 服务器:
# For VS Code code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
# For VS Code Insiders code-insiders --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
安装后,Playwright MCP 服务器将可用于与您的 GitHub Copilot 代理在 VS Code 中使用。
User data directory 用户数据目录
Playwright MCP 将使用新配置文件启动 Chrome 浏览器,配置文件位于
- `%USERPROFILE%\AppData\Local\ms-playwright\mcp-chrome-profile` on Windows - `~/Library/Caches/ms-playwright/mcp-chrome-profile` on macOS - `~/.cache/ms-playwright/mcp-chrome-profile` on Linux
所有登录信息都将存储在该配置文件中,您可以在会话之间删除它以清除离线状态。
运行无 GUI 的浏览器(无头浏览器)
此模式适用于后台或批量操作。
{ "mcpServers": { "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest", "--headless" ] } } }
在 Linux 上运行无 DISPLAY 的浏览器
当在无显示器的系统上或在 IDE 的工作进程上运行带头的浏览器时,从具有 DISPLAY 的环境运行 MCP 服务器,并通过传递 --port 标志来启用 SSE 传输。
npx @playwright/mcp@latest --port 8931
然后在 MCP 客户端配置中,将 url 设置为 SSE 端点:
{ "mcpServers": { "playwright": { "url": "http://localhost:8931/sse" } } }
工具模式
工具提供两种模式:
- Snapshot Mode (default): 使用无障碍快照以获得更好的性能和可靠性
- Vision Mode: 使用截图进行基于视觉的交互
要使用视觉模式,在启动服务器时添加 --vision 标志:
{ "mcpServers": { "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest", "--vision" ] } } }
视觉模式最适合与能够使用 X Y 坐标空间与元素交互的计算机使用模型配合使用,基于提供的截图。
使用自定义传输的编程使用
import { createServer } from '@playwright/mcp'; // ... const server = createServer({ launchOptions: { headless: true } }); transport = new SSEServerTransport("/messages", res); server.connect(transport);
快照模式
Playwright MCP 提供了一套用于浏览器自动化的工具。以下是所有可用的工具:
- browser_navigate
url (string): 要导航到的 URL- Description: Navigate to a URL
描述:导航到 URL - 参数:
- browser_go_back
- 描述:返回上一页
- 参数:无
- browser_go_forward
- 描述:前进到下一页
- 参数:无
- browser_click
element (string): 用于获取与元素交互权限的易读元素描述ref (string): 来自页面快照的精确目标元素引用- 描述:在网页上执行点击操作
- 参数:
- browser_hover
element (string): 用于获取与元素交互权限的元素可读描述ref (string): 来自页面快照的精确目标元素引用- 描述:在页面元素上悬停
- 参数:
- browser_drag
startElement (string): 用于获取与元素交互权限的、可读的源元素描述startRef (string): 页面快照中精确的源元素引用endElement (string): 用于获取与元素交互权限的易读目标元素描述endRef (string): 从页面快照中获取的精确目标元素引用- 描述:在两个元素之间执行拖放操作
- 参数:
- browser_type
element (string): 用于获取与元素交互权限的易读元素描述ref (string): 从页面快照中获取的精确目标元素引用text (string):submit (boolean): 提交输入文本(按下 Enter 键后)- 描述:在可编辑元素中输入文本
- 参数:
- browser_select_option
element (string): 用于获取与元素交互权限的易读元素描述ref (string): 从页面快照中获取的精确目标元素引用values (array): 选中下拉列表中的值数组。- 描述:在下拉列表中选择选项
- 参数:
- browser_choose_file
paths (array): 要上传的文件的绝对路径。可以是单个文件或多个文件。- 描述:选择一个或多个文件进行上传
- 参数:
- browser_press_key
key (string):要按下的键的名称或要生成的字符,例如 `ArrowLeft` 或 `a`- 描述:按键盘上的键
- 参数:
- browser_snapshot
- 描述:捕获当前页面的无障碍快照(比截图更好)
- Parameters: None 参数:无
- browser_save_as_pdf
- 描述:保存页面为 PDF
- 参数:无
- browser_take_screenshot
raw (字符串): 可选返回无损 PNG 屏幕截图。默认为 JPEG。- 描述:捕获页面截图
- 参数:
- browser_wait
time (number): 等待时间(秒,上限为 10 秒)- 描述:等待指定时间(秒)
- 参数:
- browser_close 浏览器关闭
- 描述:关闭页面
- 参数:无
视觉模式
视觉模式提供使用截图进行视觉交互的工具。以下是所有可用工具:
- browser_navigate
url (string): 要导航到的 URL- 描述:导航到 URL
- 参数:
- browser_go_back
- 描述:返回上一页
- 参数:无
- browser_go_forward
- 描述:前进到下一页
- 参数:无
- browser_screenshot
- 描述:捕获当前页面的截图
- 参数:无
- browser_move_mouse
X 坐标Y 坐标- 描述:将鼠标移动到指定坐标
- 参数:
- browser_click
- x (数字):点击的 X 坐标
- y (数字):点击的 Y 坐标
- 描述:在指定坐标处点击
- 参数:
- browser_drag
- startX (数字):起始 X 坐标
- startY (数字):起始 Y 坐标
- endX (数字):结束 X 坐标
- endY (数字):结束 Y 坐标
- 描述:执行拖放操作
- 参数:
- browser_type 浏览器类型
- 输入文本(字符串)
- 提交输入文本(按下 Enter 键后)
- 描述:在指定坐标处输入文本
- 参数:
- browser_press_key
按键名称或生成字符(字符串),例如 `ArrowLeft` 或 `a`- 描述:按键盘上的键
- 参数:
- browser_choose_file
- 输入文本(数组):上传文件的绝对路径。可以是单个文件或多个文件。
- 描述:选择一个或多个文件上传
- 参数:
- browser_save_as_pdf
- 描述:保存页面为 PDF
- 参数:无
- browser_wait
- time (数字):等待时间(秒,上限为 10 秒)
- 描述:等待指定时间(秒)
- 参数:
- browser_close
- 描述:关闭页面
- 参数:无
项目链接
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)