1. 服务概述
一句话简介:提供浏览器自动化能力的MCP服务器,允许LLM与网页交互、截图和执行JavaScript
- 服务名称:Puppeteer
- 版本号:最新版本
- 开发者/提供方:mcp.so
- 协议类型:MCP (Model Context Protocol)
2. 核心功能
列出该MCP服务提供的主要功能点:
- 浏览器自动化:用于网页抓取和交互,支持自动化各种Web操作
- 截图功能:捕获整个网页或单个元素的截图,支持多种截图格式
- 控制台日志监控:实时跟踪浏览器活动,监控控制台输出
- JavaScript执行:在真实的浏览器环境中执行JavaScript命令
- 基本交互支持:支持点击、表单填写等基本用户交互操作
3. 使用场景
描述该服务适合在什么情况下使用:
- 数据收集:自动化从网站收集数据进行分析,适用于爬虫和数据挖掘场景
- 应用测试:通过模拟用户交互测试Web应用程序,验证功能和用户体验
- 文档生成:为文档和报告目的截图,自动生成可视化资料
- 网页监控:定期访问网页并截图,监控页面变化和内容更新
4. 接入方式
4.1 服务端点
Puppeteer MCP服务通过标准的MCP协议进行通信,服务端点信息需要在客户端配置中指定。服务提供详细的配置JSON示例,用户可以根据自己的环境进行配置。
4.2 认证与权限
Puppeteer MCP服务完全免费,采用MIT许可证发布。无需特殊的认证或API密钥,用户可以直接使用服务提供的所有功能。
4.3 数据格式
服务使用标准的MCP协议格式进行数据交换,支持JSON格式的请求和响应。截图功能支持常见的图片格式如PNG、JPEG等。
4.4 服务器配置
在MCP客户端配置中添加服务:
{ "mcpServers": { "puppeteer": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-puppeteer" ] } } }5. 接口定义
Puppeteer MCP服务器提供了13个主要接口方法,涵盖浏览器操作的各个方面:
| 接口名称 | 功能描述 | 主要参数 |
|---|---|---|
| navigate | 导航到指定URL | url(目标网址) |
| screenshot | 捕获页面或元素截图 | selector(选择器)、path(保存路径) |
| click | 点击页面元素 | selector(CSS选择器) |
| fill | 填写表单输入 | selector(选择器)、value(输入值) |
| select | 选择下拉选项 | selector(选择器)、value(选项值) |
| hover | 鼠标悬停在元素上 | selector(CSS选择器) |
| evaluate | 执行JavaScript代码 | script(JavaScript代码) |
| get_content | 获取页面内容 | selector(可选选择器) |
| get_attribute | 获取元素属性 | selector(选择器)、attribute(属性名) |
| wait_for_selector | 等待元素出现 | selector(选择器)、timeout(超时时间) |
| wait_for_navigation | 等待页面导航完成 | timeout(超时时间) |
| get_console_logs | 获取控制台日志 | 无 |
| close | 关闭浏览器 | 无 |
6. 快速开始
6.1 环境要求
- Node.js 18或更高版本
- npm或yarn包管理器
- MCP客户端(如Claude Desktop或其他支持MCP协议的客户端)
- 网络连接(用于下载依赖和访问目标网站)
6.2 示例代码
以下是一个使用Puppeteer MCP服务的基本示例:
// 配置MCP客户端 const mcpClient = new MCPClient({ servers: { puppeteer: { command: "npx", args: ["-y", "@modelcontextprotocol/server-puppeteer"] } } }); // 使用示例 async function exampleUsage() { // 1. 导航到网页 await mcpClient.callTool("puppeteer", "navigate", { url: "https://example.com" }); // 2. 等待页面加载 await mcpClient.callTool("puppeteer", "wait_for_selector", { selector: ".content", timeout: 5000 }); // 3. 截图 await mcpClient.callTool("puppeteer", "screenshot", { path: "screenshot.png" }); // 4. 获取页面内容 const content = await mcpClient.callTool("puppeteer", "get_content", { selector: ".content" }); console.log("页面内容:", content); // 5. 关闭浏览器 await mcpClient.callTool("puppeteer", "close"); }7. 注意事项
- 资源消耗:浏览器自动化会消耗较多系统资源,建议在性能较好的机器上运行
- 网络依赖:需要稳定的网络连接来访问目标网站
- 反爬虫机制:某些网站可能有反爬虫机制,使用时需注意遵守网站的使用条款
- 超时设置:对于加载缓慢的页面,建议合理设置超时时间
- 错误处理:建议在代码中添加适当的错误处理机制,以应对网络问题或页面变化
- 并发限制:不建议同时运行多个浏览器实例,以免造成系统资源耗尽
- 隐私保护:在使用截图和数据收集功能时,注意保护用户隐私和敏感信息