返回市场
获取-mcp

获取-mcp

作者:jae-jae919 星标更新:2025-10-10

项目介绍

<div align="center"> <img src="https://raw.githubusercontent.com/jae-jae/fetcher-mcp/refs/heads/main/icon.svg" width="100" height="100" alt="Fetcher MCP 图标" /> </div>

中文 | 德语 | 西班牙语 | 法语 | 日语 | 韩语 | 葡萄牙语 | 俄语

Fetcher MCP

使用无头浏览器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

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相同
  • browser_install - 自动安装Playwright Chromium浏览器二进制文件

    • 当没有可用的Chromium浏览器二进制文件时自动安装
    • 当出现浏览器安装错误时自动建议
    • 支持以下参数:
      • withDeps: 安装Chromium浏览器所需的操作系统依赖项,默认值为false
      • force: 即使已经安装了Chromium也强制安装,默认值为false

提示

处理特殊网站场景

应对反爬虫机制

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

    请等待页面完全加载
    

    这将使用waitForNavigation: true参数。

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

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

    这将相应地调整timeoutnavigationTimeout参数。

内容检索调整

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

    请保留原始HTML内容
    

    设置extractContent: falsereturnHtml: true

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

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

    设置extractContent: false

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

    请以HTML格式返回内容
    

    设置returnHtml: true

调试和认证

启用调试模式

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

使用自定义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许可证许可。

由DartNode提供