关于 Puppeteer Vision Mcp Server
Puppeteer Vision MCP 服务通过 Puppeteer 抓取网页,并用 Readability 提取正文、Turndown 转换为 Markdown。它借助视觉模型分析页面截图,自动处理 Cookie 弹窗、验证码等遮挡元素。
主要功能
- 01Puppeteer 抓取网页,支持 stealth 模式
- 02基于视觉模型的 AI 交互处理遮挡元素
- 03Readability 提取正文内容
- 04HTML 转换为 Markdown,支持代码块和表格
- 05支持 stdio、SSE 与 HTTP 传输方式
- 06可通过 npx 直接运行
适用场景
- 01将需要处理 Cookie 弹窗或登录墙的网页转为 Markdown
- 02为 LLM 提供网页正文内容作为上下文
- 03在无界面或可视化模式下调试网页抓取流程
MCP 相关
该服务提供 scrape-webpage 工具,MCP 客户端可传入 URL 及交互相关参数,获取 Markdown 格式的网页内容及执行状态。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Puppeteer vision MCP 服务
此模型上下文协议(MCP)服务提供了一款工具,可使用 Puppeteer、Readability 和 Turndown 抓取网页并将其转换为 Markdown 格式。它具备 AI 驱动的交互功能,可自动处理 Cookie、验证码及其他交互元素。
现在可通过 npx 轻松运行!
功能
- 使用带隐身模式的 Puppeteer 抓取网页
- 借助 AI 驱动的交互功能自动处理:
- Cookie 同意横幅
- 验证码
- 新闻简报或订阅提示
- 付费墙和登录墙
- 年龄验证提示
- 插页广告
- 任何其他阻挡内容的交互元素
- 使用 Mozilla 的 Readability 提取主要内容
- 将 HTML 转换为格式良好的 Markdown
- 特别处理代码块、表格和其他结构化内容
- 可通过模型上下文协议访问
- 禁用无头模式即可实时查看浏览器交互
- 可轻松作为
npx软件包使用。
使用 NPX 快速入门
推荐通过 npx 使用此服务,这样无需克隆或手动安装,就能确保运行最新版本。
-
前提条件: 确保已安装 Node.js 和 npm。
-
环境设置: 服务需要
OPENAI_API_KEY。你可以通过以下两种方式提供该变量及其他可选配置:.env文件: 在运行npx命令的目录中创建.env文件。- Shell 环境变量: 在终端会话中导出这些变量。
.env文件或 Shell 导出变量示例:# Required OPENAI_API_KEY=your_api_key_here # Optional (defaults shown) # VISION_MODEL=gpt-4.1 # API_BASE_URL=https://api.openai.com/v1 # Uncomment to override # TRANSPORT_TYPE=stdio # Options: stdio, sse, http # USE_SSE=true # Deprecated: use TRANSPORT_TYPE=sse instead # PORT=3001 # Only used in sse/http modes # DISABLE_HEADLESS=true # Uncomment to see the browser in action -
运行服务: 打开终端并运行:
npx -y puppeteer-vision-mcp-server-y标志会自动确认npx发出的所有提示。- 此命令将下载(如果尚未缓存)并运行服务。
- 默认情况下,服务以
stdio模式启动。设置TRANSPORT_TYPE=sse或TRANSPORT_TYPE=http可使用 HTTP 服务模式。
使用 NPX 将其作为 MCP 工具
此服务旨在集成为 MCP 兼容大模型编排器中的工具。以下是一个配置片段示例:
{
"mcpServers": {
"web-scraper": {
"command": "npx",
"args": ["-y", "puppeteer-vision-mcp-server"],
"env": {
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
// Optional:
// "VISION_MODEL": "gpt-4.1",
// "API_BASE_URL": "https://api.example.com/v1",
// "TRANSPORT_TYPE": "stdio", // or "sse" or "http"
// "DISABLE_HEADLESS": "true" // To see the browser during operations
}
}
// ... other MCP servers
}
}
按此方式配置后,MCP 编排器将管理 puppeteer-vision-mcp-server 进程的生命周期。
环境配置详情
无论你如何运行服务(NPX 或本地开发),它都会使用以下环境变量:
OPENAI_API_KEY:(必填)用于访问视觉模型的 API 密钥。VISION_MODEL:(可选)用于视觉分析的模型。- 默认值:
gpt-4.1 - 可以使用任何具备视觉能力的模型。
- 默认值:
API_BASE_URL:(可选)自定义 API 端点 URL。- 用于连接兼容 OpenAI 的其他提供商(例如 Together.ai、Groq、Anthropic、本地部署)。
TRANSPORT_TYPE:(可选)使用的传输协议。- 可选值:
stdio(默认)、sse、http stdio:进程间直接通信(适用于大多数场景)sse:通过 HTTP 使用服务器发送事件(旧模式)http:支持会话管理的可流式 HTTP 传输
- 可选值:
USE_SSE:(可选,已弃用)设为true可启用通过 HTTP 传输的 SSE 模式。- 已弃用:请改用
TRANSPORT_TYPE=sse。
- 已弃用:请改用
PORT:(可选)SSE 或 HTTP 模式下 HTTP 服务的端口。- 默认值:
3001。
- 默认值:
DISABLE_HEADLESS:(可选)设为true可在可视模式下运行浏览器。- 默认值:
false(浏览器以无头模式运行)。
- 默认值:
通信模式
该服务支持三种通信模式:
- stdio(默认):通过标准输入/输出进行通信。
- 非常适合与管理进程的大模型工具直接集成。
- 适用于命令行使用和脚本编写。
- 不会启动 HTTP 服务。这是默认模式。
- SSE 模式:通过 HTTP 使用服务器发送事件进行通信。
- 在环境中设置
TRANSPORT_TYPE=sse即可启用。 - 在指定的
PORT上启动 HTTP 服务(默认值:3001)。 - 需要通过网络连接到工具时使用。
- 连接地址:
http://localhost:3001/sse
- 在环境中设置
- HTTP 模式:使用支持会话管理的可流式 HTTP 传输进行通信。
- 在环境中设置
TRANSPORT_TYPE=http即可启用。 - 在指定的
PORT上启动 HTTP 服务(默认值:3001)。 - 支持完整的会话管理和可恢复连接。
- 连接地址:
http://localhost:3001/mcp
- 在环境中设置
工具用法(MCP 调用)
该服务提供一个 scrape-webpage 工具。
工具参数:
url(字符串,必填):要抓取的网页 URL。autoInteract(布尔值,可选,默认值:true):是否自动处理交互元素。maxInteractionAttempts(数字,可选,默认值:3):AI 交互尝试的最大次数。waitForNetworkIdle(布尔值,可选,默认值:true):处理前是否等待网络空闲。
响应格式:
该工具以结构化格式返回结果:
content:包含单个文本对象的数组,其中包含抓取网页的原始 Markdown。metadata:包含其他信息:message:状态消息。success:表示是否成功的布尔值。contentSize:内容的字符数(成功时)。
成功响应示例:
{
"content": [
{
"type": "text",
"text": "# Page Title\n\nThis is the content..."
}
],
"metadata": {
"message": "Scraping successful",
"success": true,
"contentSize": 8734
}
}
错误响应示例:
{
"content": [
{
"type": "text",
"text": ""
}
],
"metadata": {
"message": "Error scraping webpage: Failed to load the URL",
"success": false
}
}
工作原理
AI 驱动的交互
系统使用具备视觉能力的 AI 模型(可通过 VISION_MODEL 和 API_BASE_URL 配置)分析网页截图,并决定采取点击、输入或滚动等操作,以绕过遮罩层和同意表单。此过程最多重复 maxInteractionAttempts 次。
内容提取
交互完成后,Mozilla 的 Readability 会提取主要内容,随后使用 Turndown 将其清理并转换为 Markdown,同时应用代码块和表格的自定义规则。
安装与开发(用于修改代码)
如果你想贡献代码、修改服务或运行本地开发版本:
-
克隆仓库:
git clone https://github.com/djannot/puppeteer-vision-mcp.git cd puppeteer-vision-mcp -
安装依赖项:
npm install -
构建项目:
npm run build -
设置环境: 在项目根目录中创建
.env文件,并填写OPENAI_API_KEY及任何其他所需配置(请参阅上文的“环境配置详情”)。 -
运行开发版本:
npm start # 使用本地构建版本启动服务或者,自动重新构建变更:
npm run dev
自定义(面向开发者)
你可以通过编辑以下文件来修改抓取器的行为:
src/ai/vision-analyzer.ts(analyzePageWithAI函数):自定义 AI 提示词。src/ai/page-interactions.ts(executeAction函数):添加新的操作类型。src/scrapers/webpage-scraper.ts(visitWebPage函数):更改 Puppeteer 选项。src/utils/markdown-formatters.ts:调整 Markdown 转换所用的 Turndown 规则。
依赖项
主要依赖项包括:
@modelcontextprotocol/sdkpuppeteer、puppeteer-extra@mozilla/readability、jsdomturndown、sanitize-htmlopenai(或兼容的视觉模型 API)express(用于 SSE 模式)zod
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
