什么是 Puppeteer MCP?
Puppeteer MCP 是一个插件/服务器,通过模型上下文协议提供浏览器自动化功能,使 LLM 和代理框架能够进行网页浏览、抓取和自动化。它利用 Puppeteer 无头 Chrome 库,因此模型和代理可以编程访问网页、填写表单、点击按钮、截屏和抓取数据,所有操作都使用标准化的 MCP 接口。
如何配置 Puppeteer MCP
- 安装 Node.js(如果尚未安装)。
- 使用
npx
安装 Puppeteer MCP 服务器,或者通过克隆仓库:
或作为依赖项安装:npx -y @modelcontextprotocol/server-puppeteer
npm install -g @modelcontextprotocol/server-puppeteer
- 启动服务器:
可选地,可以传递环境变量或命令行参数进行自定义配置(如访问控制、沙盒设置或无头选项)。npx -y @modelcontextprotocol/server-puppeteer
- 配置你的 MCP 客户端/代理应用(例如 Claude Desktop 或其他 LLM 主机)以连接到 Puppeteer MCP 服务器,指定其命令及所需参数。
示例(Claude Desktop JSON 配置):
{ "mcpServers": { "puppeteer": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] } } }
- 可选地,调整安全设置、网络访问,或设置身份验证(如果远程暴露 MCP 服务器)。
如何使用 Puppeteer MCP
- 发现可用工具: 使用你的 MCP 客户端查询
tools/list
接口,查看可用的 Puppeteer 操作(如puppeteer.navigate
、puppeteer.evaluate
、puppeteer.screenshot
等)。 - 调用工具: 通过 MCP 协议调用所需的函数,提供适当的参数(例如,指定导航到的 URL 或要点击的元素选择器)。
- 自动化序列: 链接多个 Puppeteer 工具调用来编写复杂的工作流,比如登录网站、浏览多个页面、抓取表格或图形、下载文件。
- 获取和处理结果: 每次调用的输出将包括相关数据,如页面内容、DOM 快照、提取的值或二进制数据(用于截图、PDF 等)。
- 与其他 MCP 工具集成: 将 Puppeteer MCP 与其他 MCP 服务器(例如文件系统、内存、数据库)结合,进行多步骤、多模式的自动化和数据处理。
主要特性
- 无头浏览器自动化: 完整控制 Chrome/Chromium 进行全面的网页交互。
- 动态内容访问: 支持重依赖 JavaScript 的单页应用和互动网站。
- 数据提取: 使用精确的选择器抓取结构化/非结构化内容。
- 动作模拟: 点击、输入、选择、滚动和互动,如同真实用户。
- 资源捕获: 截图、生成 PDF,并提取渲染的 HTML 或 DOM 片段。
- 安全性与沙盒: 精细的权限设置防止不安全操作,确保安全运行。
- 易于集成: 标准化的 MCP 接口即插即用,支持主流 LLM 代理/应用。
- 可脚本化序列: 通过链接工具调用组织复杂的工作流。
使用案例
- 自动化网页抓取: 提取产品列表、新闻文章、公共数据集或社交媒体帖子。
- 动态数据收集: 从 JavaScript 渲染的页面捕获数据,这些页面无法通过基本 HTTP 请求访问。
- 表单填写和提交: 自动化登录、注册或多步骤数据输入过程。
- 视觉回归与监控: 定期截取或生成高价值网页的屏幕截图或 PDF,用于监控或记录。
- 测试与质量保证: 在你的 LLM 工作流中运行自动化 UI 测试或回归检查。
- 代理增强浏览: 让 LLM “驱动” 浏览器进行研究、总结或验证实时网页内容,支持自然语言处理任务。
常见问题
1. 使用 Puppeteer MCP 服务器需要了解 Puppeteer 吗?
不需要。工具以易于使用的 MCP 接口呈现,并附有清晰描述,因此用户和 LLM 不需要了解 Puppeteer API 细节,就能触发常见的浏览器操作。
2. 我该如何限制服务器访问的网站或操作?
可以通过环境变量或命令行参数配置允许的域名、黑名单或白名单操作。始终遵循最佳访问控制实践,特别是在共享或生产环境中。
3. 我可以使用 Puppeteer MCP 绕过验证码和登录界面吗?
尽管 Puppeteer MCP 支持完整的浏览器操作(包括表单填写和导航),但不包括原生验证码解决。不过,你可以用它展示验证码,以便人力解决,或者必要时使用第三方插件/服务。
4. Puppeteer MCP 可以输出哪些文件类型?
可以提取 HTML、纯文本、截屏(PNG/JPEG)、PDF 以及从 DOM 抓取的任意数据。
5. 是否可以自动化依赖于先前结果的多步骤工作流?
可以。可以在代理或客户端逻辑中链接多个工具调用,按需传递一步的输出作为下一步的输入。