# python_playwright_mcp1 **Repository Path**: enzoism/python_playwright_mcp1 ## Basic Information - **Project Name**: python_playwright_mcp1 - **Description**: 使用playwright开发一个MCP的测试Demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-08 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Playwright MCP Server 基于 Playwright 的 MCP (Model Context Protocol) 服务器,用于为 LLM 提供浏览器自动化能力。 ## 功能特性 - ✅ 支持多种浏览器:Chromium、Firefox、WebKit - ✅ 页面导航和操作 - ✅ 元素选择和交互 - ✅ 表单填写 - ✅ 截图功能 - ✅ JavaScript 执行 - ✅ 页面内容提取 - ✅ 异步操作 ## 安装 ### 1. 安装 Python 依赖 ```bash uv sync # 或 pip install -e . ``` ### 2. 安装 Playwright 浏览器 ```bash playwright install ``` 如需安装所有浏览器: ```bash playwright install --all-deps ``` ## 使用方法 ### 作为 MCP 服务器运行 ```bash playwright-mcp ``` 或使用 Python 模块: ```bash python -m playwright_mcp.server ``` ### 在 Claude Desktop 中配置 在 Claude Desktop 的配置文件中添加: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "playwright": { "command": "playwright-mcp" } } } ``` ## 可用工具 | 工具名 | 描述 | 参数 | |--------|------|------| | `start_browser` | 启动浏览器 | `headless` (bool), `browser_type` (string) | | `close_browser` | 关闭浏览器 | 无 | | `navigate` | 导航到URL | `url` (string, 必需) | | `screenshot` | 页面截图 | `path` (string, 默认: screenshot.png) | | `click` | 点击元素 | `selector` (string, 必需) | | `fill` | 填写表单 | `selector` (string, 必需), `value` (string, 必需) | | `get_text` | 获取元素文本 | `selector` (string, 必需) | | `evaluate` | 执行JavaScript | `script` (string, 必需) | | `wait_for_selector` | 等待元素出现 | `selector` (string, 必需), `timeout` (number, 默认: 30000) | | `get_page_content` | 获取页面内容 | 无 | ## 使用示例 ### 示例 1: 网页截图 ``` 用户: 请帮我截取百度首页的图 LLM 调用: 1. start_browser({ "headless": true, "browser_type": "chromium" }) 2. navigate({ "url": "https://www.baidu.com" }) 3. screenshot({ "path": "baidu_homepage.png" }) 4. close_browser() ``` ### 示例 2: 自动搜索 ``` 用户: 在 Google 上搜索 "Playwright Python" LLM 调用: 1. start_browser() 2. navigate({ "url": "https://www.google.com" }) 3. fill({ "selector": "textarea[name='q']", "value": "Playwright Python" }) 4. click({ "selector": "input[value='Google 搜索']" }) 5. wait_for_selector({ "selector": "#search" }) 6. screenshot() ``` ### 示例 3: 数据提取 ``` 用户: 获取 GitHub 仓库的 star 数 LLM 调用: 1. start_browser() 2. navigate({ "url": "https://github.com/microsoft/playwright" }) 3. get_text({ "selector": "span[data-repository-hovercards-enabled]" }) ``` ## 开发 ### 项目结构 ``` playwright_mcp/ ├── src/ │ └── playwright_mcp/ │ ├── __init__.py │ ├── server.py # MCP 服务器实现 │ ├── main.py # 入口文件 │ └── utils/ │ └── helpers.py ├── pyproject.toml └── README.md ``` ### 运行测试 ```bash uv run pytest ``` ## 技术栈 - **Playwright**: 浏览器自动化框架 - **MCP SDK**: Model Context Protocol Python SDK - **asyncio**: Python 异步编程 ## 参考资源 - [Playwright 官方文档](https://playwright.dev/python/) - [Playwright 中文教程](https://www.runoob.com/playwright/playwright-tutorial.html) - [MCP 规范](https://modelcontextprotocol.io/) ## 许可证 MIT License ## 作者 enzoism <1397092195@qq.com>