用于使用 Playwright 无头浏览器抓取网页内容的 MCP 服务器。
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
相同等待完全加载:对于使用 CAPTCHA、重定向或其他验证机制的网站,请在提示中包含:
请等待页面完全加载
这将使用 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 许可证 授权