一个全面的MCP(模型上下文协议)服务器,用于通过Playwright进行浏览器自动化。此服务器提供了38个强大的工具,用于网络抓取、测试和自动化。
<a href="https://glama.ai/mcp/servers/@jomon003/PlayMCP"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=634790271,3843369470&fm=3081&app=3081&f=PNG?w=760&h=400" alt="PlayBrowser 自动化服务器 MCP服务器" /> </a>navigate, goForward, goBack (通过滚动)click, type, hover, dragAndDrop, selectOptionmoveMouse, mouseMove, mouseClick, mouseDragpressKeywaitForText, waitForSelectorscreenshot, takeScreenshot (增强版)getPageSource, getPageText, getPageTitle, getPageUrlgetElementContent, getElementHierarchygetScripts, getStylesheets, getMetaTagsgetLinks, getImagesgetFormsgetConsoleMessagesgetNetworkRequestsexecuteJavaScript, evaluateWithReturnuploadFileshandleDialogopenBrowser, closeBrowserresizescroll (增强反馈)# 克隆仓库
git clone https://github.com/jomon003/PlayMCP.git
cd PlayMCP
# 安装依赖
npm install
# 构建项目
npm run build
# 测试服务器
npm test
// 启动服务器
node ./dist/server.js
// 通过JSON-RPC发送MCP命令
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
| 工具 | 描述 | 必需参数 |
|---|---|---|
openBrowser | 启动浏览器实例 | headless?: boolean, debug?: boolean |
navigate | 导航到URL | url: string |
click | 点击元素 | selector: string |
type | 在元素中输入文本 | selector: string, text: string |
moveMouse | 将鼠标移动到坐标 | x: number, y: number |
scroll | 滚动页面并提供反馈 | x: number, y: number, smooth?: boolean |
screenshot | 拍摄截图 | path: string, type?: string, selector?: string |
getPageSource | 获取HTML源代码 | 无 |
getPageText | 获取文本内容 | 无 |
getPageTitle | 获取页面标题 | 无 |
getPageUrl | 获取当前URL | 无 |
getScripts | 获取JavaScript代码 | 无 |
getStylesheets | 获取CSS样式表 | 无 |
getMetaTags | 获取meta标签 | 无 |
getLinks | 获取所有链接 | 无 |
getImages | 获取所有图像 | 无 |
getForms | 获取所有表单 | 无 |
getElementContent | 获取元素内容 | selector: string |
getElementHierarchy | 获取DOM层次结构 | selector?: string, maxDepth?: number, includeText?: boolean, includeAttributes?: boolean |
executeJavaScript | 运行JavaScript | script: string |
closeBrowser | 关闭浏览器 | 无 |
前提条件
克隆和设置
git clone <repository-url>
cd PlayMCP
npm install
npm run build
安装Playwright浏览器
npx playwright install
这会下载必要的浏览器二进制文件(Chromium, Firefox, Safari)。
验证安装
npm run start
如果一切正常,你应该看到“Browser Automation MCP Server starting...”。
git clone <repository-url>
cd PlayMCP
npm install && npm run build && npx playwright install
添加到你的MCP配置文件中:
标准MCP配置:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["./dist/server.js"],
"cwd": "/path/to/PlayMCP",
"description": "使用Playwright的浏览器自动化服务器"
}
}
}
替代配置(适用于VS Code GitHub Copilot):
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/PlayMCP/dist/server.js"]
}
}
}
对于Windows用户:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["C:\\path\\to\\PlayMCP\\dist\\server.js"]
}
}
}
此MCP服务器完全兼容VS Code GitHub Copilot。在MCP设置中添加上述配置后,您可以在VS Code中直接使用所有浏览器自动化工具。
Claude Desktop (config.json位置):
%APPDATA%\Claude\config.json~/Library/Application Support/Claude/config.json~/.config/Claude/config.jsonVS Code MCP扩展: 添加到您的VS Code settings.json或MCP配置文件中。
完整配置示例:
{
"mcpServers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/Users/username/PlayMCP/dist/server.js"],
"description": "使用Playwright的浏览器自动化"
}
}
}
基本网页抓取:
// 打开浏览器并导航
await openBrowser({ headless: false, debug: true })
await navigate({ url: "https://example.com" })
// 提取内容
const title = await getPageTitle()
const links = await getLinks()
const forms = await getForms()
表单自动化:
// 填写表单
await click({ selector: "#login-button" })
await type({ selector: "#username", text: "user@example.com" })
await type({ selector: "#password", text: "password123" })
await click({ selector: "#submit" })
页面交互:
// 增强滚动并提供反馈
await scroll({ x: 0, y: 500, smooth: false })
// 返回:{ before: {x: 0, y: 0}, after: {x: 0, y: 500}, scrolled: {x: 0, y: 500} }
// 平滑滚动
await scroll({ x: 0, y: 300, smooth: true })
// 鼠标交互
await moveMouse({ x: 100, y: 200 })
await click({ selector: ".dropdown-menu" })
DOM结构分析:
// 获取页面层次结构(3层深)
await getElementHierarchy({ maxDepth: 3 })
// 获取详细的层次结构,包括文本和属性
await getElementHierarchy({
selector: "#main-content",
maxDepth: -1,
includeText: true,
includeAttributes: true
})
// 获取特定部分的基本结构
await getElementHierarchy({ selector: ".sidebar", maxDepth: 2 })
高级JavaScript执行:
// 运行自定义JavaScript
await executeJavaScript({
script: "document.querySelectorAll('h1').length"
})
// 修改页面内容
await executeJavaScript({
script: "document.body.style.backgroundColor = 'lightblue'"
})
// 提取复杂数据
await executeJavaScript({
script: `
Array.from(document.querySelectorAll('article')).map(article => ({
title: article.querySelector('h2')?.textContent,
summary: article.querySelector('p')?.textContent
}))
`
})
截图和文档:
// 拍摄截图
await screenshot({ path: "./full-page.png", type: "page" })
await screenshot({ path: "./element.png", type: "element", selector: "#main-content" })
安装和设置:
git clone <repo-url> && cd PlayMCP
npm install && npm run build && npx playwright install
添加到您的MCP客户端配置
开始自动化:
await openBrowser({ debug: true })
await navigate({ url: "https://news.ycombinator.com" })
const links = await getLinks()
console.log(`找到 ${links.length} 个链接`)
// 分析页面结构
const hierarchy = await getElementHierarchy({ maxDepth: 2 })
console.log('页面结构:', hierarchy)
npx playwright install下载"浏览器未初始化"错误
openBrowserPlaywright安装失败
# 尝试手动安装浏览器
npx playwright install chromium
# 或安装所有浏览器
npx playwright install
Linux/macOS权限错误
# 确保脚本可执行
chmod +x dist/server.js
MCP配置中的路径问题
C:\\path\\to\\PlayMCP\\dist\\server.jsnode /path/to/PlayMCP/dist/server.js浏览器崩溃或超时
headless: false进行调试# 直接测试服务器
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node ./dist/server.js
你应该看到一个列出所有可用工具的JSON响应。
MIT许可证