使用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
# 在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
相同等待完全加载:对于使用验证码、重定向或其他验证机制的网站,在提示中包含:
请等待页面完全加载
这将使用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许可证授权