中文 | Deutsch | Español | français | 日本語 | 한국어 | Português | Русский
基于 Playwright 无头浏览器的网页内容抓取 MCP 服务器
🌟 推荐工具: OllaMan - 强大的 Ollama AI 模型管理平台
JavaScript 支持: 与传统爬虫不同,Fetcher MCP 通过 Playwright 执行 JavaScript,可完美处理动态网页内容和现代 Web 应用。
智能内容提取: 内置 Readability 算法自动提取网页主体内容,过滤广告、导航栏等非核心元素。
灵活输出格式: 支持 HTML 和 Markdown 两种输出格式,便于与各类下游应用集成。
并行处理能力: fetch_urls
工具支持多 URL 并发抓取,显著提升批量操作效率。
资源优化: 自动屏蔽非必要资源(图片、样式表、字体、媒体),降低带宽消耗并提升性能。
健壮的错误处理: 完善的错误处理与日志记录机制,确保在问题页面场景下仍能可靠运行。
可配置参数: 提供超时设置、内容提取、输出格式等细粒度控制,适应不同使用场景。
通过 npx 直接运行:
npx -y fetcher-mcp
首次使用时需安装浏览器环境,在终端执行以下命令:
npx playwright install chromium
使用 --transport=http
参数可同时启动可流式传输的 HTTP 端点和 SSE 端点服务:
npx -y fetcher-mcp --log --transport=http --host=0.0.0.0 --port=3000
启动后服务器提供以下端点:
/mcp
- 可流式传输的 HTTP 端点(现代 MCP 协议)/sse
- SSE 端点(传统 MCP 协议)客户端可根据需求选择连接方式。
添加 --debug
选项运行可显示浏览器窗口用于调试:
npx -y fetcher-mcp --debug
在 Claude Desktop 中配置此 MCP 服务器:
MacOS 路径:~/Library/Application Support/Claude/claude_desktop_config.json
Windows 路径:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"fetcher": {
"command": "npx",
"args": ["-y", "fetcher-mcp"]
}
}
}
docker run -p 3000:3000 ghcr.io/jae-jae/fetcher-mcp:latest
创建 docker-compose.yml
文件:
version: "3.8"
services:
fetcher-mcp:
image: ghcr.io/jae-jae/fetcher-mcp:latest
container_name: fetcher-mcp
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
# Using host network mode on Linux hosts can improve browser access efficiency
# network_mode: "host"
volumes:
# For Playwright, may need to share certain system paths
- /tmp:/tmp
# Health check
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 3
然后执行:
docker-compose up -d
fetch_url
- 从指定 URL 获取网页内容
url
: 目标网页 URL(必填参数)timeout
: 页面加载超时时间(毫秒),默认 30000(30 秒)waitUntil
: 判定导航完成的条件,可选:'load', 'domcontentloaded', 'networkidle', 'commit',默认为 'load'extractContent
: 是否智能提取主体内容,默认为 truemaxLength
: 返回内容最大长度(字符数),默认无限制returnHtml
: 是否返回 HTML 内容而非 Markdown,默认为 falsewaitForNavigation
: 是否等待初始加载后的额外导航(适用于反爬验证站点),默认为 falsenavigationTimeout
: 等待额外导航的最长时间(毫秒),默认 10000(10 秒)disableMedia
: 是否禁用媒体资源(图片、样式表、字体、媒体),默认为 truedebug
: 是否启用调试模式(显示浏览器窗口),若指定将覆盖 --debug 命令行标志fetch_urls
- 并行批量获取多个网页内容
urls
: 待抓取的 URL 数组(必填参数)fetch_url
相同等待完全加载:对于使用验证码、重定向等机制的网站,可在提示中包含:
请等待页面完全加载
这将启用 waitForNavigation: true
参数。
延长超时时间:针对加载缓慢的网站:
请将页面加载超时设为60秒
系统会相应调整 timeout
和 navigationTimeout
参数。
保留原始 HTML 结构:当内容提取可能失败时:
请保留原始HTML内容
设置 extractContent: false
和 returnHtml: true
。
获取完整页面内容:当提取内容过于局限时:
请获取完整网页内容而非仅主体内容
设置 extractContent: false
。
返回 HTML 格式:当需要 HTML 而非默认 Markdown 时:
请返回HTML格式内容
设置 returnHtml: true
。
请为此抓取操作启用调试模式
即使服务器未使用 --debug
标志启动,也会设置 debug: true
。手动登录:使用自有凭证登录时:
请启用调试模式以便我手动登录网站
设置 debug: true
或使用 --debug
标志,保持浏览器窗口开放供手动登录。
调试浏览器交互:调试模式启用后:
为特定请求启用调试:即使服务器已在运行,也可为特定请求启用调试:
请为此认证步骤启用调试模式
仅对该请求设置 debug: true
,打开浏览器窗口供手动登录。
npm install
安装 Playwright 所需的浏览器环境:
npm run install-browser
npm run build
使用 MCP Inspector 进行调试:
npm run inspector
也可启用可视化浏览器模式进行调试:
node build/index.js --debug
基于 MIT 许可证 授权