中文 | 德语 | 西班牙语 | 法语 | 日语 | 韩语 | 葡萄牙语 | 俄语
使用无头浏览器Playwright抓取网页内容的MCP服务器。
🌟 推荐: OllaMan - 强大的Ollama AI模型管理器。
JavaScript支持: 与传统的网络爬虫不同,Fetcher MCP使用Playwright执行JavaScript,使其能够处理动态网页内容和现代Web应用程序。
智能内容提取: 内置的可读性算法自动从网页中提取主要内容,去除广告、导航和其他非必要元素。
灵活的输出格式: 支持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
# 在Linux主机上使用主机网络模式可以提高浏览器访问效率
# network_mode: "host"
volumes:
# 对于Playwright,可能需要共享某些系统路径
- /tmp:/tmp
# 健康检查
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 - 并行批量抓取多个URL的网页内容
urls: 要抓取的URL数组(必需参数)fetch_url相同browser_install - 自动安装Playwright Chromium浏览器二进制文件
withDeps: 安装Chromium浏览器所需的操作系统依赖项,默认值为falseforce: 即使已经安装了Chromium也强制安装,默认值为false等待完全加载: 对于使用验证码、重定向或其他验证机制的网站,在提示中包含:
请等待页面完全加载
这将使用waitForNavigation: true参数。
增加超时时间: 对于加载缓慢的网站:
请将页面加载超时时间设置为60秒
这将相应地调整timeout和navigationTimeout参数。
保留原始HTML结构: 当内容提取可能失败时:
请保留原始HTML内容
设置extractContent: false和returnHtml: true。
抓取完整的网页内容: 当提取的内容过于有限时:
请抓取完整的网页内容而不是仅限主要内容
设置extractContent: false。
以HTML格式返回内容: 当需要HTML格式而不是默认的Markdown格式时:
请以HTML格式返回内容
设置returnHtml: true。
请为此抓取操作启用调试模式
这将设置debug: true,即使服务器未使用--debug标志启动也是如此。手动登录: 使用自己的凭据登录:
请以调试模式运行,以便我可以手动登录网站
设置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许可证授权