Back to MCP directory
publicPublicdnsLocal runtime

twolven_mcp-server-puppeteer-py

一个基于Python的浏览器自动化MCP服务器,使用Playwright实现网页交互、截图和脚本执行功能

article

README

🚀 使用 Playwright 的 Puppeteer MCP 服务器(Python 实现)

这是一个基于 Model Context Protocol 的服务器,借助 Playwright(Python 中的 Puppeteer 等价工具),为大语言模型赋予浏览器自动化能力。它能让 LLM 在真实浏览器环境中与网页交互、截取屏幕并执行 JavaScript 代码。

🚀 快速开始

此 Python 实现提供了稳定且可靠的替代方案,与 TypeScript 版本功能相同,但错误处理和日志记录更加完善。它使用 Playwright,这是 Python 的 Puppeteer 等价物,提供强大的浏览器自动化能力。

✨ 主要特性

  • 浏览器完全自动化
  • 页面导航
  • 截图捕获(整页或元素)
  • 表单交互(点击和填写)
  • JavaScript 执行
  • 控制台日志监控
  • 可配置的超时
  • 详细的错误处理
  • 全面的日志记录

📦 安装指南

先决条件

  • Python 3.8+
  • pip(Python 包安装程序)

安装步骤

  1. 安装所需的包:
pip install -r requirements.txt
  1. 安装 Playwright 浏览器:
playwright install

💻 使用示例

启动服务器

直接运行服务器:

python puppeteer_server.py

Claude 桌面配置

将以下内容添加到 Claude 配置文件中:

{
  "mcpServers": {
    "puppeteer": {
      "command": "python",
      "args": ["path/to/puppeteer.py"]
    }
  }
}

可用工具

基础用法

以下是各个工具的基础使用示例:

  • puppeteer_navigate:在浏览器中导航到任意 URL。
{
  "name": "puppeteer_navigate",
  "arguments": {
    "url": "https://example.com",
    "timeout": 60000  // 可选,默认为 60000ms
  }
}
  • puppeteer_screenshot:捕获整页或特定元素的截图。
{
  "name": "puppeteer_screenshot",
  "arguments": {
    "name": "my_screenshot",
    "selector": "#specific-element",  // 可选
    "width": 1280,  // 可选,默认:1280
    "height": 720,  // 可选,默认:720
    "timeout": 30000  // 可选,默认为 30000ms
  }
}
  • puppeteer_click:点击页面上的元素。
{
  "name": "puppeteer_click",
  "arguments": {
    "selector": ".button-class",
    "timeout": 30000  // 可选,默认为 30000ms
  }
}
  • puppeteer_fill:填写输入字段。
{
  "name": "puppeteer_fill",
  "arguments": {
    "selector": "#input-id",
    "value": "要填充的文本",
    "timeout": 30000  // 可选,默认为 30000ms
  }
}
  • puppeteer_evaluate:在浏览器控制台中执行 JavaScript。
{
  "name": "puppeteer_evaluate",
  "arguments": {
    "script": "document.title",
    "timeout": 30000  // 可选,默认为 30000ms
  }
}

高级用法

填写表单并捕获截图

from playwright.sync_playwright import sync_playwright

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        
        # 导航到页面
        page.goto('https://example.com')
        
        # 填写表单
        page.fill('#username', 'admin')
        page.fill('#password', 'secret')
        
        # 提交表单
        page.click('button[type="submit"]')
        
        # 捕获截图
        page.screenshot(path='screenshot.png', quality=100)
        
        browser.close()

if __name__ == "__main__":
    main()

📚 详细文档

错误处理

服务器提供详细的错误消息,涵盖常见场景:

  • 导航失败
  • 元素未找到
  • 超时错误
  • JavaScript 执行失败

日志记录

通过控制台输出进行调试和监控,便于排查问题。

项目结构

puppeteer_server/
├── server.py        # 主服务器文件
├── utils.py         # 辅助函数
├── requirements.txt # 依赖管理
└── README.md        # 项目文档

🤝 贡献指南

欢迎贡献!请 fork 本仓库并提交 PR。

📄 许可证

[此处插入许可证信息]


感谢您使用 Puppeteer MCP 服务器!如需帮助或反馈,请联系维护团队。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client