首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
fetcher-mcp2025-05-277分享
github
一个基于模型上下文协议(MCP)的服务器,用于通过Playwright无头浏览器抓取网页内容。
By jae-jae
2025-05-277
github
详情内容
Fetcher MCP 图标

Fetcher MCP

用于使用 Playwright 无头浏览器抓取网页内容的 MCP 服务器。

优势

  • JavaScript 支持:与传统的网页抓取工具不同,Fetcher MCP 使用 Playwright 执行 JavaScript,使其能够处理动态网页内容和现代 Web 应用程序。

  • 智能内容提取:内置的 Readability 算法自动提取网页的主要内容,去除广告、导航和其他非必要元素。

  • 灵活的输出格式:支持 HTML 和 Markdown 输出格式,便于与各种下游应用程序集成。

  • 并行处理fetch_urls 工具支持同时抓取多个 URL,显著提高批量操作的效率。

  • 资源优化:自动屏蔽不必要的资源(如图片、样式表、字体、媒体),以减少带宽使用并提高性能。

  • 健壮的错误处理:全面的错误处理和日志记录,确保即使处理有问题的网页也能可靠运行。

  • 可配置参数:对超时、内容提取和输出格式进行细粒度控制,以适应不同的使用场景。

快速开始

使用 npx 直接运行:

npx -y fetcher-mcp

首次设置 - 在终端中运行以下命令以安装所需的浏览器:

npx playwright install chromium

HTTP 和 SSE 传输

使用 --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

配置 MCP

在 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 部署

使用 Docker 运行

docker run -p 3000:3000 ghcr.io/jae-jae/fetcher-mcp:latest

使用 Docker Compose 部署

创建 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 获取网页内容

    • 使用 Playwright 无头浏览器解析 JavaScript
    • 支持智能提取主要内容并转换为 Markdown
    • 支持以下参数:
      • url:要抓取的网页 URL(必需参数)
      • timeout:页面加载超时时间(毫秒),默认为 30000(30 秒)
      • waitUntil:指定导航何时被视为完成,选项:'load', 'domcontentloaded', 'networkidle', 'commit',默认为 'load'
      • extractContent:是否智能提取主要内容,默认为 true
      • maxLength:返回内容的最大长度(字符数),默认为无限制
      • returnHtml:是否返回 HTML 内容而不是 Markdown,默认为 false
      • waitForNavigation:是否在初始页面加载后等待额外的导航(适用于有反爬虫验证的网站),默认为 false
      • navigationTimeout:等待额外导航的最长时间(毫秒),默认为 10000(10 秒)
      • disableMedia:是否禁用媒体资源(图片、样式表、字体、媒体),默认为 true
      • debug:是否启用调试模式(显示浏览器窗口),如果指定,则覆盖 --debug 命令行标志
  • fetch_urls - 并行批量获取多个 URL 的网页内容

    • 使用多标签页并行抓取以提高性能
    • 返回组合结果,网页之间清晰分隔
    • 支持以下参数:
      • urls:要抓取的 URL 数组(必需参数)
      • 其他参数与 fetch_url 相同

提示

处理特殊网站场景

处理反爬虫机制

  • 等待完全加载:对于使用 CAPTCHA、重定向或其他验证机制的网站,请在提示中包含:

    请等待页面完全加载
    

    这将使用 waitForNavigation: true 参数。

  • 增加超时时间:对于加载缓慢的网站:

    请将页面加载超时时间设置为 60 秒
    

    这将相应调整 timeoutnavigationTimeout 参数。

内容提取调整

  • 保留原始 HTML 结构:当内容提取可能失败时:

    请保留原始 HTML 内容
    

    设置 extractContent: falsereturnHtml: true

  • 抓取完整页面内容:当提取的内容过于有限时:

    请抓取完整的网页内容,而不仅仅是主要内容
    

    设置 extractContent: false

  • 返回 HTML 格式内容:当需要 HTML 格式而不是默认的 Markdown 时:

    请以 HTML 格式返回内容
    

    设置 returnHtml: true

调试和认证

启用调试模式

  • 动态调试激活:在特定抓取操作期间显示浏览器窗口:
    请为此抓取操作启用调试模式
    
    即使服务器启动时未使用 --debug 标志,也会设置 debug: true

使用自定义 Cookie 进行认证

  • 手动登录:使用自己的凭据登录:

    请以调试模式运行,以便我手动登录网站
    

    设置 debug: true 或使用 --debug 标志,保持浏览器窗口打开以进行手动登录。

  • 与调试浏览器交互:当启用调试模式时:

    1. 浏览器窗口保持打开状态
    2. 您可以使用自己的凭据手动登录网站
    3. 登录完成后,将使用您的认证会话抓取内容
  • 为特定请求启用调试:即使服务器已在运行,您也可以为特定请求启用调试模式:

    请为此认证步骤启用调试模式
    

    仅为此特定请求设置 debug: true,打开浏览器窗口以进行手动登录。

开发

安装依赖

npm install

安装 Playwright 浏览器

安装 Playwright 所需的浏览器:

npm run install-browser

构建服务器

npm run build

调试

使用 MCP Inspector 进行调试:

npm run inspector

您还可以启用可见浏览器模式进行调试:

node build/index.js --debug

相关项目

  • g-search-mcp:一个强大的 Google 搜索 MCP 服务器,支持同时使用多个关键词进行并行搜索。非常适合批量搜索操作和数据收集。

许可证

根据 MIT 许可证 授权

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档