使用说明
Playwright MCP 服务器
一个模型上下文协议(MCP)服务器,通过使用(相关技术/方法)提供浏览器自动化功能 剧作家这个服务器使大型语言模型(LLMs)能够通过(某种方式)与网页进行交互 结构化无障碍快照 和 基于角色的定位器,从而绕过了需要截图或视觉调优模型的需求。
✨ 主要特点
- 🎯(瞄准靶心) 基于角色的定位器使用可访问性树中的语义角色和名称,而非易变的CSS选择器
- 📸(相机图标,通常表示拍照或照片) 自动快照每个操作都会自动返回更新后的页面状态
- ♿ 代表无障碍设施的标志。 无障碍优先与屏幕阅读器以相同的方式与页面进行交互
- 🚀 表情符号“🚀”在中文中通常被翻译为“火箭”或直接用其形象描述为“飞速上升”、“急速前进”等,具体翻译可能根据上下文有所不同。在这里,为了简洁明了,可以翻译为“火箭”或保持原样使用该表情符号。 由Playwright驱动利用Playwright强大的浏览器自动化功能
🚀 设置
先决条件
- Python 3.13或更高版本
- 紫外线 包管理器
安装
- 使用 Python 3.13 创建一个虚拟环境:
uv venv --python 3.13
- 安装依赖项:
uv sync
- 安装 Playwright 浏览器二进制文件:
playwright install chromium
🏃 运行服务器
开发模式(带检查器)
对于使用FastMCP检查器进行的本地开发和测试:
fastmcp dev src/server.py
这将启动一个交互式检查器,您可以在其中测试工具并实时查看浏览器交互情况。
对于单客户端模式:
python src/server.py
工具
Core automation
-
浏览器点击
- 标题:点击
- 描述:在网页上执行点击操作
- 参数:
element(字符串):人类可读的元素描述locator(元素定位器):元素定位器 - 使用ARIA的AriaNode或(其他方式,此处根据上下文可能指非ARIA的定位方法,但原文未明确,故保留泛指)role和name字段,或带有选择器的(功能/组件)selector田野nth(数字,可选):当多个元素匹配时,使用基于零的索引来指定(例如,nth=0 表示第一个,nth=1 表示第二个)double_click(布尔值,可选):是否执行双击而不是单击button(字符串,可选):要点击的按钮(左、右、中),默认为左键modifiers(数组,可选):要按下的修饰键(Alt、Control、Meta、Shift)
- 只读: 错误的
-
浏览器关闭
- 标题:关闭浏览器
- 描述:关闭浏览器并清理所有资源
- 参数:无
- 只读: 错误的
-
浏览器拖拽
- 标题:拖动鼠标
- 描述:在两个元素之间执行拖放操作
- 参数:
start_element(字符串):人类可读的源元素描述start_locator(ElementLocator): 源元素定位器 - 可以是带有ARIA的AriaNoderole和name字段,或者带有选择器的(部分)selector田野start_nth(数字,可选):当有多个匹配项时,源元素的零基索引end_element(字符串):人类可读的目标元素描述end_locator(ElementLocator): 目标元素定位器 - 可以是带有ARIA的AriaNoderole和name字段,或带有选择器的(部分)selector田野;领域;场地end_nth(数字,可选):当有多个匹配项时,目标元素的基于零的索引
- 只读: 错误的
-
浏览器文件上传
- 标题:上传文件
- 描述:上传一个或多个文件
- 参数:
paths(数组,可选):要上传的文件的绝对路径。如果省略,则取消文件选择器。
- 只读: 错误的
-
浏览器填写表单
- 标题:填写表格
- 描述:填写多个表单字段
- 参数:
fields(array): 一个FormField对象的列表,每个对象都包含element(字符串),value(字符串),locator(ElementLocator),以及可选参数nth(数字)
- 只读: 错误的
-
获取浏览器HTML内容
- 标题:获取HTML内容
- 描述:当定位器失败时,获取HTML内容以进行调试
- 参数:
selector(字符串,可选):用于从HTML中获取内容的CSS选择器(默认为body)max_length(数字,可选):要返回的最大字符数(默认50000)filter_tags(数组,可选):要移除的标签名称列表(例如,['script', 'style'])。默认值为 ['script']
- 只读: 真
-
获取浏览器文本内容
- 标题:获取页面的文本内容
- 描述:以Markdown格式获取页面的文本内容。在提取干净的文章文本时非常有用。
- 参数:无
- 只读: 真
-
浏览器悬停
- 标题:鼠标悬停
- 描述:将鼠标悬停在页面上的元素上
- 参数:
element(字符串):可读的人类元素描述locator(ElementLocator): 元素定位器 - 可以是带有ARIA的AriaNoderole和name字段,或者带有选择器的(部分)selector田野nth(数字,可选):当有多个元素匹配时,使用基于零的索引来指定(例如,nth=0 表示第一个,nth=1 表示第二个)
- 只读: 错误的
-
浏览器导航
- 标题:导航至URL
- 描述:导航到一个URL
- 参数:
url(字符串):要导航到的URL
- 只读: 错误的
-
浏览器返回上一页
- 标题:回去
- 描述:返回上一页
- 参数:无
- 只读: 错误的
-
打开浏览器
- 标题:打开浏览器
- 描述:打开一个新的浏览器实例
- 参数:无
- 只读: 错误的
-
按下浏览器按键
- 标题:按下一个键
- 描述:按下键盘上的一个键
- 参数:
key(字符串):要按下的键名或要生成的字符,例如ArrowLeft或者a
- 只读: 错误的
-
浏览器调整大小
- 标题:调整浏览器窗口大小
- 描述:调整浏览器窗口大小
- 参数:
width(数字):浏览器窗口的宽度height(数字):浏览器窗口的高度
- 只读: 错误的
-
浏览器搜索
- 标题:在谷歌上搜索
- 描述:使用谷歌搜索查找某个主题
- 参数:
query(字符串):要搜索的查询或主题
- 只读: 错误的
-
选择浏览器选项
- 标题:选择选项
- 描述:在下拉菜单中选择一个选项
- 参数:
element(字符串):人类可读的元素描述values(array): 下拉列表中要选择的值的数组locator(元素定位器):元素定位器 - 可以是带有ARIA属性的ARIA节点role并且name字段,或者带有选择器的(部分)selector田野(或领域,根据上下文可灵活翻译)nth(数字,可选):当多个元素匹配时,使用从零开始的索引(例如,nth=0 表示第一个,nth=1 表示第二个)
- 只读: 错误的
-
浏览器快照
- 标题:页面快照
- 描述:捕获当前页面的无障碍性快照
- 参数:
locator(ElementLocator,可选):元素定位器 - 可以是带有ARIA的AriaNoderole和name字段,或者带有选择器的(部分)selector田野nth(数字,可选):当有多个元素匹配时,使用从零开始的索引(例如,nth=0 表示第一个,nth=1 表示第二个)
- 只读: 真
-
浏览器截图
- 标题:截图
- 描述:对当前页面进行截图
- 参数:
type(字符串,可选):图像格式(png 或 jpeg)。默认为 png。element(字符串,可选):人类可读的元素描述locator(ElementLocator,可选):元素定位器 - 可以是带有ARIA的AriaNoderole并且name字段,或带有选择器的(部分)selector田野;领域;现场;场地nth(数字,可选):当有多个元素匹配时,使用从零开始的索引(例如,nth=0 表示第一个,nth=1 表示第二个)full_page(布尔值,可选):对整个可滚动页面进行截图
- 只读: 真
-
浏览器类型
- 标题:输入文本
- 描述:在可编辑元素中输入文本
- 参数:
element(字符串):人类可读的元素描述text(字符串):要输入到元素中的文本locator(元素定位器):元素定位器 - 可以是带有ARIA的AriaNoderole并且name字段,或带有选择器的(部分)selector田野nth(数字,可选):当有多个元素匹配时,使用基于零的索引(例如,nth=0 表示第一个,nth=1 表示第二个)submit(布尔值,可选):是否提交(按回车键后)slowly(布尔值,可选):是否每次输入一个字符
- 只读: 错误的
-
等待浏览器(完成操作)
- 标题:等待浏览器
- 描述:等待指定的秒数时间。
- 参数:
time(int): 等待时间(秒)
- 只读: 真
Tab management
- 浏览器标签页
- 标题:管理标签页
- 描述:列出、创建、关闭或选择浏览器标签页
- 参数:
action(字符串):要执行的操作(列出、创建、关闭、选择)index(数字,可选):用于关闭/选择操作的标签页索引。如果省略关闭操作,则关闭当前标签页。
- 只读: 错误的