mcpField
P
Playwright MCP Server

Playwright MCP Server

本地服务
github.com/ma-pony浏览器自动化1073 周前更新

关于 Playwright MCP Server

Playwright MCP Server 是基于 FastMCP 的浏览器自动化服务,面向需要网页交互和数据提取的 LLM 应用。它支持多种浏览器、隔离会话,并提供页面操作、截图和 JavaScript 执行工具。

主要功能

  1. 01控制 Chromium、Firefox、WebKit
  2. 02管理隔离的浏览器会话
  3. 03导航、点击与填写表单
  4. 04提取文本和元素属性
  5. 05截图及执行 JavaScript

适用场景

  1. 01自动浏览网页并操作页面
  2. 02从网页提取文本或链接属性
  3. 03截图并运行页面 JavaScript

MCP 相关

该 MCP 服务向 MCP 客户端提供浏览器会话、页面交互和数据提取工具,并提供会话状态及浏览器健康检查资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

Playwright MCP Server

GitHub Python Playwright MCP

一个基于 FastMCP 框架的专业级 Playwright 浏览器自动化 MCP 服务器,为 LLM 应用提供强大的网页交互和数据提取能力。

🌟 特性

🎯 核心功能
  • 浏览器自动化: 完整的 Playwright 浏览器控制能力
  • 多引擎支持: 支持 Chromium、Firefox、WebKit
  • 会话管理: 独立的浏览器会话,支持并发操作
  • 资源管理: 智能的生命周期管理和资源清理
  • 错误恢复: 完善的错误处理和超时控制
🏗️ 工程化特性
  • 模块化设计: 清晰的代码架构和职责分离
  • 类型安全: 完整的 TypeScript 风格类型注解
  • 异步安全: 基于 asyncio 的并发安全实现
  • 生命周期管理: 使用 FastMCP 的生命周期机制
  • 日志系统: 结构化的日志记录和监控
🛠️ 工具集合
  • 浏览器控制: 创建/关闭会话、页面导航
  • 页面交互: 点击、输入、等待元素
  • 数据提取: 文本内容、属性值、页面信息
  • 高级功能: 截图、JavaScript 执行
  • 资源接口: 会话状态、健康检查

🚀 快速开始

安装
# 从 PyPI 安装(推荐)
pip install mcp-playwright

# 或使用 uv
uv add mcp-playwright

# 安装 Playwright 浏览器
playwright install

# 开发安装(从源码)
git clone https://github.com/ma-pony/mcp-playwright.git
cd mcp-playwright

# 使用 uv 安装依赖(推荐)
uv sync

# 或使用 pip
pip install -e .

# 安装 Playwright 浏览器
uv run playwright install
# 或
playwright install
运行服务器
# 使用已安装的包
mcp-playwright

# 或从源码运行
python main.py

# 或使用 uv
uv run python main.py

# 使用 MCP 开发工具
uv run mcp dev main.py
Claude Desktop 集成

将以下配置添加到 Claude Desktop 的 MCP 配置文件中:

{
  "mcpServers": {
    "playwright": {
      "command": "mcp-playwright"
    }
  }
}

或者如果从源码运行:

{
  "mcpServers": {
    "playwright": {
      "command": "uv",
      "args": ["run", "python", "/path/to/mcp-playwright/main.py"],
      "env": {}
    }
  }
}

📖 使用指南

基本工作流程
  1. 创建浏览器会话
# 使用 create_browser_session 工具
await create_browser_session(
    browser_type="chromium",
    headless=True,
    viewport_width=1280,
    viewport_height=720
)
  1. 导航到目标网站
await navigate_to_url("https://example.com")
  1. 页面交互
# 点击元素
await click_element("#login-button")

# 填写表单
await fill_input("#username", "your-username")
await fill_input("#password", "your-password")

# 等待元素
await wait_for_selector(".dashboard", state="visible")
  1. 数据提取
# 获取文本内容
title = await get_page_title()
content = await get_text_content(".main-content")

# 获取属性值
href = await get_element_attribute("a.download", "href")
  1. 截图和分析
# 截取页面截图
screenshot = await take_screenshot(full_page=True)

# 执行 JavaScript
result = await execute_javascript("return document.readyState")
  1. 关闭会话
await close_browser_session()
高级用法
错误处理

所有工具都内置了完善的错误处理,会返回详细的错误信息:

# 如果元素不存在或超时,会返回描述性错误信息
result = await click_element("#non-existent", timeout=5000)
# 返回: "点击超时: #non-existent"
会话状态监控
# 检查会话状态
status = await get_resource("session://status")

# 检查浏览器健康状态
health = await get_resource("browser://health")

🏗️ 架构设计

核心组件
┌─────────────────────────────────────────────┐
│        Playwright MCP 服务器                 │
│  ┌─────────────┬─────────────┬─────────────┐ │
│  │   会话管理   │   工具层     │   资源层     │ │
│  └─────────────┴─────────────┴─────────────┘ │
├─────────────────────────────────────────────┤
│           Playwright 管理器                  │
│  ┌─────────────┬─────────────┬─────────────┐ │
│  │ 浏览器池     │  页面管理    │  生命周期    │ │
│  └─────────────┴─────────────┴─────────────┘ │
└─────────────────────────────────────────────┘
设计原则
  • 工程化: 模块化设计、依赖注入、统一配置
  • 稳定性: 资源管理、异步安全、优雅关闭
  • 可扩展性: 插件架构、会话隔离、类型安全

详细架构说明请参阅 TECHNICAL_ARCHITECTURE.md

🛠️ 工具参考

浏览器控制
  • create_browser_session - 创建新的浏览器会话
  • close_browser_session - 关闭当前浏览器会话
  • navigate_to_url - 导航到指定URL
页面交互
  • click_element - 点击页面元素
  • fill_input - 填写输入框
  • wait_for_selector - 等待元素出现
数据提取
  • get_text_content - 获取元素文本内容
  • get_element_attribute - 获取元素属性值
  • get_page_title - 获取页面标题
  • get_page_url - 获取当前页面URL
高级功能
  • take_screenshot - 截取页面截图
  • execute_javascript - 执行JavaScript代码
资源接口
  • session://status - 当前会话状态
  • browser://health - 浏览器健康检查
  • help://tools - 工具使用帮助

🔧 配置选项

浏览器配置
  • browser_type: 浏览器类型(chromium, firefox, webkit)
  • headless: 无头模式(默认: true)
  • max_sessions: 最大会话数(默认: 10)
性能配置
  • default_timeout: 默认超时时间(默认: 30000ms)
  • viewport_width: 视口宽度(默认: 1280)
  • viewport_height: 视口高度(默认: 720)

🧪 测试

# 运行单元测试
uv run pytest tests/

# 运行特定测试
uv run pytest tests/test_browser_manager.py

# 运行集成测试
uv run pytest tests/integration/

📊 性能优化

资源管理
  • 智能会话池化,避免频繁创建/销毁浏览器
  • 弱引用管理,防止内存泄漏
  • 自动资源清理,确保稳定运行
并发控制
  • 异步锁保护关键操作
  • 最大会话数限制,防止资源耗尽
  • 上下文管理器确保资源释放

🔒 安全考虑

访问控制
  • 会话隔离,防止交叉访问
  • 超时控制,避免长时间占用
  • 错误边界,防止异常传播
资源限制
  • 最大会话数限制
  • 内存使用监控
  • CPU 使用优化

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request
开发环境设置
# 克隆你的 fork
git clone https://github.com/your-username/mcp-playwright.git

# 安装开发依赖
uv sync --dev

# 运行代码格式化
uv run black .
uv run isort .

# 运行类型检查
uv run mypy .

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢

📞 支持

如果您有任何问题或需要帮助:


Playwright MCP Server - 为 LLM 应用提供强大的浏览器自动化能力 🚀

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。