Playwright Browser Automation
STDIOMCP server providing browser automation capabilities using Playwright.
MCP server providing browser automation capabilities using Playwright.
一个基于Playwright的MCP服务器,提供浏览器自动化能力
服务器实现了简单的笔记存储系统:
服务器提供单个提示功能:
服务器实现以下Playwright相关工具:
playwright_new_session
: 创建新的浏览器会话并打开浏览器窗口
url
参数(字符串),指定初始访问网址,不填则只打开浏览器playwright_navigate
: 导航到指定网址
url
参数(字符串),如不包含http或https前缀将自动添加https://playwright_screenshot
: 对当前页面或特定元素进行截图
name
参数(字符串),截图文件名称,不需要包含扩展名selector
参数(字符串),CSS选择器用于指定要截图的页面元素,不填则截取整个页面playwright_evaluate
: 在浏览器控制台中执行JavaScript代码
script
参数(字符串),需要在浏览器中执行的JavaScript代码playwright_get_text_content
: 获取当前页面中所有可见元素的文本内容
playwright_get_html_content
: 获取页面中指定元素的HTML内容
selector
参数(字符串),CSS选择器用于定位需要获取HTML内容的页面元素playwright_action
: 支持丰富的元素选择与交互方式
by
: 选择元素方式,支持get_by_text、get_by_placeholder、get_by_label、get_by_role等by_value
: 选择元素的值action
: 操作类型,如fill、click、dblclick、hover、check等value
: 操作的值force
: 是否强制执行动作delay
: 按键之间的延迟(毫秒)MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
"mcpServers": { "playwright-server": { "command": "uv", "args": [ "--directory", "C:\\Users\\xxxxx\\Documents\\project\\python\\mcp\\playwright-server", "run", "playwright-server" ] } }
"mcpServers": { "playwright-server": { "command": "uvx", "args": [ "playwright-server" ] } }
准备发布包:
uv sync
uv build
这将在dist/
目录中创建源代码和wheel分发。
uv publish
注意: 您需要通过环境变量或命令参数设置PyPI凭据:
--token
或UV_PUBLISH_TOKEN
--username
/UV_PUBLISH_USERNAME
和--password
/UV_PUBLISH_PASSWORD
由于MCP服务器通过stdio运行,调试可能具有挑战性。为获得最佳调试体验,我们强烈推荐使用MCP Inspector。
您可以通过npm
使用以下命令启动MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory C:\Users\xxxxx\Documents\project\python\mcp\playwright-server run playwright-server
启动后,Inspector将显示一个URL,您可以在浏览器中访问该URL开始调试。
# 创建会话并导航到指定网址 await playwright_navigate(url="example.com") # 截取整个页面 await playwright_screenshot(name="fullpage") # 截取特定元素 await playwright_screenshot(name="logo", selector=".logo")
# 点击文本匹配的按钮 await playwright_action(by="get_by_text", by_value="登录", action="click") # 填充表单字段 await playwright_action(by="get_by_placeholder", by_value="用户名", action="fill", value="[email protected]") # 检查元素是否可见 await playwright_action(by="get_by_test_id", by_value="submit-button", action="is_visible")