使用说明

项目简介

'mcp-server-fetch' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型 (LLM) 提供从互联网抓取网页内容的能力。它克服了传统网页抓取的限制,能够处理需要 JavaScript 渲染或采用反爬虫技术的网页。

主要功能点

  • 网页内容抓取: 通过 URL 获取网页内容,即使是动态渲染或有反爬机制的网页也能有效抓取。
  • 多种提取方法: 采用浏览器自动化 (undetected-chromedriver)、OCR (pytesseract) 和 HTML 解析 (requests/BeautifulSoup) 等多种技术提取内容,并智能选择最佳结果。
  • 内容优化: 自动处理 Cookie 同意弹窗,并对提取的文本进行去噪和格式化,确保内容质量。
  • Markdown 输出: 将网页内容转换为 Markdown 格式,方便 LLM 理解和处理。
  • 工具 (Tool) 注册: 提供 'fetch' 工具,允许 LLM 通过工具调用方式抓取网页。
  • Prompt 模板: 提供 'fetch' Prompt 模板,支持用户通过 Prompt 方式抓取网页。

安装步骤

  1. 安装 Docker: 确保您的系统已安装 Docker。
  2. 构建 Docker 镜像: 在仓库根目录下,打开终端并执行以下命令构建 Docker 镜像:
    docker build -t mcp-server-fetch .
  3. 运行 Docker 容器: 构建完成后,执行以下命令运行 Docker 容器:
    docker run --rm -i mcp-server-fetch
    服务器将在标准输入/输出 (stdio) 上运行,等待 MCP 客户端连接。

服务器配置

要将 'mcp-server-fetch' 服务器配置到 MCP 客户端(例如 Claude),您需要提供服务器的启动命令和参数。以下是一个配置示例,通常添加到 Claude App 或 Roo Code 的设置中:

{
  "mcpServers": {
    "fetch": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "mcp-server-fetch"
      ],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

配置参数说明:

  • '"fetch"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
  • '"command": "docker"': 启动服务器的命令,这里使用 Docker。
  • '"args": [...]' : 传递给 'docker run' 命令的参数列表:
    • '"run"': Docker 运行命令。
    • '"--rm"': 容器退出后自动删除。
    • '"-i"': 保持 STDIN 打开,即使未连接。
    • '"mcp-server-fetch"': 要运行的 Docker 镜像名称,与构建镜像时指定的名称一致。
  • '"disabled": false': 启用该服务器。
  • '"alwaysAllow": []': 允许所有 Prompt 和 Tool 调用,您可以根据需要配置访问控制。

自定义 User-Agent (可选)

如果您需要自定义 User-Agent 字符串,可以修改 'args' 列表,添加 '--user-agent' 参数。例如:

{
  "mcpServers": {
    "fetch": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "mcp-server-fetch",
        "--user-agent=MyCustomUserAgent"
      ],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

基本使用方法

配置完成后,在 MCP 客户端中,您可以使用以下方式调用 'mcp-server-fetch' 服务器的功能:

  1. 使用 'fetch' 工具: 在需要抓取网页内容的场景中,LLM 可以调用 'fetch' 工具,并提供要抓取的 URL 作为参数。服务器将返回抓取到的网页内容 (Markdown 格式)。

  2. 使用 'fetch' Prompt: 您可以创建一个名为 'fetch' 的 Prompt,并要求用户提供 URL。MCP 客户端会将 URL 传递给 'mcp-server-fetch' 服务器,服务器抓取内容后返回给客户端,客户端可以将内容展示给用户或继续处理。

示例 Prompt 调用 (假设在 Claude 中):

请抓取以下网址的内容: [用户提供的URL]

客户端将自动调用配置好的 'fetch' Prompt,并将用户提供的 URL 作为参数传递给 'mcp-server-fetch' 服务器。

通过 'mcp-server-fetch',您的 LLM 应用将具备强大的网页内容抓取能力,从而获取最新的互联网信息,提升应用的功能和实用性。

信息

分类

网页与API