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的AriaNode role 和 name 字段,或者带有选择器的(部分) selector 田野 - start_nth (数字,可选):当有多个匹配项时,源元素的零基索引 - end_element (字符串):人类可读的目标元素描述 - end_locator (ElementLocator): 目标元素定位器 - 可以是带有ARIA的AriaNode role 和 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的AriaNode role 和 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的AriaNode role 和 name 字段,或者带有选择器的(部分) selector 田野 - nth (数字,可选):当有多个元素匹配时,使用从零开始的索引(例如,nth=0 表示第一个,nth=1 表示第二个) - 只读: 真
- 浏览器截图
- 标题:截图 - 描述:对当前页面进行截图 - 参数: - type (字符串,可选):图像格式(png 或 jpeg)。默认为 png。 - element (字符串,可选):人类可读的元素描述 - locator (ElementLocator,可选):元素定位器 - 可以是带有ARIA的AriaNode role 并且 name 字段,或带有选择器的(部分) selector 田野;领域;现场;场地 - nth (数字,可选):当有多个元素匹配时,使用从零开始的索引(例如,nth=0 表示第一个,nth=1 表示第二个) - full_page (布尔值,可选):对整个可滚动页面进行截图 - 只读: 真
- 浏览器类型
- 标题:输入文本 - 描述:在可编辑元素中输入文本 - 参数: - element (字符串):人类可读的元素描述 - text (字符串):要输入到元素中的文本 - locator (元素定位器):元素定位器 - 可以是带有ARIA的AriaNode role 并且 name 字段,或带有选择器的(部分) selector 田野 - nth (数字,可选):当有多个元素匹配时,使用基于零的索引(例如,nth=0 表示第一个,nth=1 表示第二个) - submit (布尔值,可选):是否提交(按回车键后) - slowly (布尔值,可选):是否每次输入一个字符 - 只读: 错误的
- 等待浏览器(完成操作)
- 标题:等待浏览器 - 描述:等待指定的秒数时间。 - 参数: - time (int): 等待时间(秒) - 只读: 真
Tab management
- 浏览器标签页
- 标题:管理标签页 - 描述:列出、创建、关闭或选择浏览器标签页 - 参数: - action (字符串):要执行的操作(列出、创建、关闭、选择) - index (数字,可选):用于关闭/选择操作的标签页索引。如果省略关闭操作,则关闭当前标签页。 - 只读: 错误的
