Playwright MCP Server
Based on Playwright's Model Context Protocol (MCP) server, it provides browser automation functionality.
- session managementCreate and manage multiple independent browser sessions
- Concurrent supportSupport multiple concurrent browser sessions and automatically clear expired sessions
- browser operationCommon operations such as navigation, clicking, and input
- flexible configuration: Supports different browsers (Chromium, Firefox, WebKit) and modes (with/without headers)
- Auto CleanupAutomatically clear resources after session timeout
npm 地址: https://www.npmjs.com/package/ @leviathangk/playwright-mcp
GitHub address: https://github.com/Leviathangk/PlaywrightMCPForCrawler
install
npm i @leviathangk/playwright-mcpMCP configuration
Add:
{
"mcpServers": {
"playwright": {
"command": "node",
"args": [
"@leviathangk/playwright-mcp@latest",
"--browser", "chromium",
"--headless", "false",
"--session-timeout", "300000",
"--max-sessions", "10"
]
}
}
}configuration parameters
| Parameters | Default Values | Description |
|---|---|---|
--browser | chromium | Browser types: Chromium, Firefox, Webkit |
--headless | false | Headless mode |
--session-timeout | 300000 | Session timeout (milliseconds) |
--max-sessions | 10 | Maximum concurrent sessions |
--executable-path | None | Browser executable path (optional) |
Core Tools
Browser installation
browser_install-Install Playwright browser (Chrome, Firefox, Webkit)
session management
browser_create_session-Create a sessionbrowser_close_session-Close session
Page management (multi tab)
browser_get_pages-Get a list of all open pagesbrowser_new_page-Create a new page (tab)browser_switch_page-Switch to the specified pagebrowser_close_page-Close the specified page
Page operation
browser_navigate-Navigate to URLbrowser_click-Click on the elementbrowser_type-Enter Textbrowser_scroll-Scroll Pagebrowser_wait_for_element-Waiting for the element to appearbrowser_execute_script-Execute custom JavaScript
Page Analysis
browser_get_page_structure-Get page structurebrowser_find_element_by_text-Search for elements based on textbrowser_query_selector-Using CSS selectors to query elementsbrowser_get_page_content-Retrieve page content (HTML/text/Markdown)browser_get_text_content-Retrieve element text contentbrowser_screenshot-Screenshot
Network request capture
browser_search_requests-Search request (supporting regularization)browser_get_requests-Get all requestsbrowser_get_request_detail-Get request details (including curl)browser_clear_requests-Clear request history
Usage example
Basic usage
// 1. 创建会话
const session = await callTool('browser_create_session');
// 2. 导航到页面
await callTool('browser_navigate', {
sessionId: session.sessionId,
url: 'https://example.com'
});
// 3. 搜索 API 请求
const results = await callTool('browser_search_requests', {
sessionId: session.sessionId,
keyword: 'api/data',
searchIn: ['url']
});
// 4. 获取请求详情
const detail = await callTool('browser_get_request_detail', {
sessionId: session.sessionId,
requestId: results.matches[0].id
});
// 5. 关闭会话
await callTool('browser_close_session', {
sessionId: session.sessionId
});Multi tab management
// 获取所有页面
const pages = await callTool('browser_get_pages', {
sessionId: sessionId
});
console.log(`总共 ${pages.totalPages} 个页面`);
pages.pages.forEach(page => {
console.log(`${page.index}: ${page.title} ${page.isActive ? '(当前)' : ''}`);
});
// 创建新页面
await callTool('browser_new_page', {
sessionId: sessionId,
url: 'https://www.example.com'
});
// 切换到指定页面
await callTool('browser_switch_page', {
sessionId: sessionId,
pageIndex: 1
});
// 关闭页面
await callTool('browser_close_page', {
sessionId: sessionId,
pageIndex: 2
});Page Analysis
// 获取页面结构
const structure = await callTool('browser_get_page_structure', {
sessionId: sessionId,
maxElements: 50
});
// 查找元素
const element = await callTool('browser_find_element_by_text', {
sessionId: sessionId,
text: '登录'
});
// 点击元素
await callTool('browser_click', {
sessionId: sessionId,
selector: element.selector
});
// 获取页面内容
const content = await callTool('browser_get_page_content', {
sessionId: sessionId,
format: 'html'
});
// 执行自定义脚本
const result = await callTool('browser_execute_script', {
sessionId: sessionId,
script: 'return document.title;'
});Common browser paths
Windows:
- Chrome:
C:\Program Files\Google\Chrome\Application\chrome.exe - Edge:
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
macOS:
- Chrome:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Edge:
/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge
Linux:
- Chrome:
/usr/bin/google-chrome - Chromium:
/usr/bin/chromium-browser
