
Playwright MCP Server

2025.05.06
0
Python浏览器自动化浏览器自动化
Playwright MCP Server 是一个基于 Playwright 的浏览器自动化服务,通过 Model Context Protocol (MCP) 提供对浏览器实例的全面控制。它允许 AI 模型或其他 MCP 客户端执行跨多个页面/标签的复杂网页浏览任务。
View on GitHub
Overview
产品定位
Playwright MCP Server 是一个浏览器自动化服务,旨在通过 MCP 协议提供对浏览器实例的全面控制,支持多页面管理、导航、内容检索、交互等多种功能。
核心功能
- 多页面管理:支持打开、关闭、切换和列出多个浏览器页面/标签。
- 导航功能:包括跳转到 URL、前进/后退、重新加载等。
- 内容检索:获取 HTML、文本内容、标题和当前 URL。
- 交互功能:点击、填充、键入、按键、勾选/取消勾选、选择选项、悬停、拖放等。
- 等待功能:等待元素、URL、加载状态等。
- 状态和信息:获取元素状态、属性、边界框等。
- 视觉功能:页面和元素的截图。
- JavaScript 执行:执行任意 JavaScript 代码(需谨慎使用)。
适用场景
- 自动化测试
- 网页数据抓取
- 网页内容交互模拟
- 多页面浏览器任务管理
工具列表
页面管理
工具 | 描述 |
---|---|
playwright_open_page |
打开一个新的浏览器页面/标签 |
playwright_close_page |
关闭特定页面或当前页面 |
playwright_switch_page |
使特定页面变为活动页面 |
playwright_list_pages |
列出所有打开的页面 |
导航
工具 | 描述 |
---|---|
playwright_goto |
导航到指定 URL |
playwright_go_back |
在历史记录中后退 |
playwright_go_forward |
在历史记录中前进 |
playwright_reload |
重新加载当前页面 |
内容检索
工具 | 描述 |
---|---|
playwright_get_content |
获取完整的 HTML 内容 |
playwright_get_text_content |
获取页面或元素的文本内容 |
playwright_get_title |
获取页面标题 |
playwright_get_url |
获取当前 URL |
交互
工具 | 描述 |
---|---|
playwright_click |
点击元素 |
playwright_fill |
填充表单字段 |
playwright_type |
模拟键盘输入文本 |
playwright_press |
按下键盘按键 |
playwright_check |
勾选复选框或单选按钮 |
playwright_uncheck |
取消勾选复选框 |
playwright_select_option |
选择下拉选项 |
playwright_hover |
悬停在元素上 |
playwright_scroll_into_view |
将元素滚动到视图中 |
playwright_set_input_files |
上传文件到文件输入框 |
playwright_drag_and_drop |
拖放一个元素到另一个元素 |
等待
工具 | 描述 |
---|---|
playwright_wait_for_selector |
等待元素达到特定状态 |
playwright_wait_for_url |
等待 URL 匹配特定模式 |
playwright_wait_for_load_state |
等待特定加载状态 |
playwright_sleep |
暂停执行 |
状态和信息
工具 | 描述 |
---|---|
playwright_get_element_state |
获取元素的可见性、启用状态等 |
playwright_get_attribute |
获取属性值 |
playwright_get_bounding_box |
获取元素位置和尺寸 |
playwright_get_computed_style |
获取计算后的 CSS 属性 |
视觉
工具 | 描述 |
---|---|
playwright_take_screenshot |
截取页面截图 |
playwright_take_element_screenshot |
截取元素截图 |
JavaScript
工具 | 描述 |
---|---|
playwright_evaluate |
评估 JavaScript 并返回结果 |
playwright_execute_javascript |
执行 JavaScript 无返回值 |
常见问题解答
- 安全性问题:
playwright_evaluate
和playwright_execute_javascript
工具功能强大,但如果服务器公开暴露,可能会带来安全风险。建议谨慎使用或禁用这些功能。
使用教程
使用依赖
安装前置依赖:
pip install "fastmcp>=2.0.0" playwright
安装 Playwright 浏览器:
playwright install chromium
安装教程
运行服务器:
fastmcp run main.py --transport sse --port 8001
运行客户端脚本:
python client_example.py
调试方式
运行客户端脚本后,可以通过调用不同的工具来调试浏览器行为。例如:
import asyncio
from fastmcp import Client
async def main():
async with Client("stdio://python main.py") as client:
# Open a new page and navigate to a website
page_info = await client.call_tool("playwright_open_page", {"url": "https://example.com"})
# Get the page title
title = await client.call_tool("playwright_get_title", {})
print(f"Page title: {title}")
# Click a button
await client.call_tool("playwright_click", {"selector": "button.submit"})
# Take a screenshot
screenshot = await client.call_tool("playwright_take_screenshot", {"full_page": True})
if __name__ == "__main__":
asyncio.run(main())