该项目利用Playwright进行自动化浏览器测试,并与Cloudflare Workers、Browser Rendering 和 @cloudflare/playwright 集成以实现部署。
按照以下步骤设置并部署项目:
npm ci
cd cloudflare
npm run build
cd cloudflare/example
npm ci
npx wrangler deploy

Cloudflare playground AI 是一个很好的方式来使用Workers AI中的LLM模型测试MCP服务器。
llama-3.3-70b-instruct-fp8-fasthttps://[my-mcp-url].workers.dev/sse现在你可以开始与模型互动,它会运行必要的工具来完成请求的任务。
[!TIP] 为了获得最佳效果,请给出由单一动作组成的简单指令,例如,“创建一个新的待办事项条目”,“前往cloudflare网站”,“截屏”
对话示例:
| 角色 | 消息 |
|---|---|
| 用户 | 前往 demo.playwright.dev/todomvc |
| 助手 | 运行 browser_navigate 工具<br> 页面已导航至 https://demo.playwright.dev/todomvc/。页面标题是 "React • TodoMVC"。页面快照显示了页面内容,包括一个标题、一个文本框和几个链接。 |
| 用户 | 创建一些待办事项条目 |
| 助手 | 运行 browser_type 工具<br> 新的待办事项条目 "购买杂货" 已创建。页面快照显示了页面的更新内容,包括新的待办事项条目。 |
| 用户 | 很好。现在用鹦鹉风格创建一个待办事项 |
| 助手 | 运行 browser_type 工具<br> 新的待办事项条目 "波莉想要一块饼干" 已用鹦鹉风格创建。页面快照显示了页面的更新内容,包括新的待办事项条目。 |
| 用户 | 再用尤达风格创建一个待办事项 |
| 助手 | 运行 browser_type 工具<br> 新的待办事项条目 "我必须去散步" 已用尤达风格创建。页面快照显示了页面的更新内容,包括新的待办事项条目。 |
| 用户 | 截屏 |
| 助手 | 运行 browser_take_screenshot 工具<br> 当前页面的截图已被拍摄。截图是PNG格式,大小为56KB。 |
| 用户 | 现在点击鹦鹉待办事项条目的复选框 |
| 助手 | 运行 browser_click 工具<br> 鹦鹉待办事项条目 "波莉想要一块饼干" 的复选框已被点击。页面快照显示了页面的更新内容,复选框现在被选中。 |
| 用户 | 截屏 |
| 助手 | 运行 browser_take_screenshot 工具<br> 当前页面的截图已被拍摄。截图是PNG格式,大小为58KB。 |
| 用户 | 删除已完成的待办事项条目 |
| 助手 | 运行 browser_click 工具<br> "清除已完成"按钮已被点击。页面快照显示了页面的更新内容,已完成的待办事项条目 "波莉想要一块饼干" 已被删除。 |
| 用户 | 最后一次截屏 |
| 助手 | 运行 browser_take_screenshot 工具<br> 当前页面的最后一次截图已被拍摄。截图是PNG格式,大小为50KB。 |
目前,Claude Desktop 仅支持本地MCP服务器。要使用 playground-mcp 与Claude Desktop,我们使用 mcp-remote,这是一个代理远程MCP服务器并在本地暴露它们的工具。使用以下配置:
mcpServers 部分下添加以下JSON片段:{
"mcpServers": {
"cloudflare-playwright-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://[my-mcp-url].workers.dev/sse"
]
}
}
}
此设置确保Claude Desktop可以与Cloudflare Playwright MCP服务器通信。
以下是打开TODO演示应用、添加“买柠檬”并截图的会话示例,利用playwright-mcp工具和Browser Rendering:

你可以通过 VS Code CLI 安装Playwright MCP服务器:
# 对于VS Code
code --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'
# 对于VS Code Insiders
code-insiders --add-mcp '{"name":"cloudflare-playwright","type":"sse","url":"https://[my-mcp-url].workers.dev/sse"}'
安装后,Playwright MCP服务器将在VS Code中与你的GitHub Copilot代理一起使用。
工具有两种模式:
视觉模式最适合能够使用提供的截图通过XY坐标空间与元素进行交互的计算机使用模型。
<details> <summary><b>交互</b></summary>browser_snapshot
browser_click
element (字符串):用于获取与元素交互权限的人类可读元素描述ref (字符串):从页面快照中获取的确切目标元素引用doubleClick (布尔值,可选):是否执行双击而不是单击browser_drag
startElement (字符串):用于获取与元素交互权限的人类可读源元素描述startRef (字符串):从页面快照中获取的确切源元素引用endElement (字符串):用于获取与元素交互权限的人类可读目标元素描述endRef (字符串):从页面快照中获取的确切目标元素引用browser_hover
element (字符串):用于获取与元素交互权限的人类可读元素描述ref (字符串):从页面快照中获取的确切目标元素引用browser_type
element (字符串):用于获取与元素交互权限的人类可读元素描述ref (字符串):从页面快照中获取的确切目标元素引用text (字符串):要输入到元素中的文本submit (布尔值,可选):是否提交输入的文本(之后按Enter键)slowly (布尔值,可选):是否逐字符输入。对于触发页面中的键处理程序很有用,默认情况下整个文本一次性填充。browser_select_option
element (字符串):用于获取与元素交互权限的人类可读元素描述ref (字符串):从页面快照中获取的确切目标元素引用values (数组):要在下拉菜单中选择的值数组。这可以是一个值或多个值。browser_press_key
key (字符串):要按下的按键名称或要生成的字符,如 ArrowLeft 或 abrowser_wait_for
time (数字,可选):等待的时间(秒)text (字符串,可选):要等待的文本textGone (字符串,可选):要等待消失的文本browser_file_upload
paths (数组):要上传文件的绝对路径。可以是一个文件或多个文件。browser_handle_dialog
accept (布尔值):是否接受对话框。promptText (字符串,可选):提示对话框时的提示文本。browser_navigate
url (字符串):要导航到的URLbrowser_navigate_back
browser_navigate_forward
browser_take_screenshot
raw (布尔值,可选):是否不压缩返回(PNG格式)。默认为false,返回JPEG图像。filename (字符串,可选):保存屏幕截图的文件名。如果未指定,默认为 page-{timestamp}.{png|jpeg}。element (字符串,可选):用于获取截图元素权限的人类可读元素描述。如果没有提供,截图将针对视口。如果提供了元素,则必须提供引用。ref (字符串,可选):从页面快照中获取的确切目标元素引用。如果没有提供,截图将针对视口。如果提供了引用,则必须提供元素。browser_pdf_save
filename (字符串,可选):保存PDF的文件名。如果未指定,默认为 page-{timestamp}.pdf。browser_network_requests
browser_console_messages
browser_install
browser_close
browser_resize
width (数字):浏览器窗口宽度height (数字):浏览器窗口高度browser_tab_list
browser_tab_new
url (字符串,可选):新标签页中要导航到的URL。如果没有提供,新标签页将是空白的。browser_tab_select
index (数字):要选择的标签页索引browser_tab_close
index (数字,可选):要关闭的标签页索引。如果不提供,将关闭当前标签页。name (字符串):测试的名称description (字符串):测试的描述steps (数组):测试的步骤browser_screen_capture
browser_screen_move_mouse
element (字符串):用于获取与元素交互权限的人类可读元素描述x (数字):X坐标y (数字):Y坐标browser_screen_click
element (字符串):用于获取与元素交互权限的人类可读元素描述x (数字):X坐标y (数字):Y坐标browser_screen_drag
element (字符串):用于获取与元素交互权限的人类可读元素描述startX (数字):起始X坐标startY (数字):起始Y坐标endX (数字):结束X坐标endY (数字):结束Y坐标browser_screen_type
text (字符串):要输入到元素中的文本submit (布尔值,可选):是否提交输入的文本(之后按Enter键)browser_press_key
key (字符串):要按下的按键名称或要生成的字符,如 ArrowLeft 或 abrowser_wait_for
time (数字,可选):等待的时间(秒)text (字符串,可选):要等待的文本textGone (字符串,可选):要