使用说明
项目简介
'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 方式抓取网页。
安装步骤
- 安装 Docker: 确保您的系统已安装 Docker。
- 构建 Docker 镜像: 在仓库根目录下,打开终端并执行以下命令构建 Docker 镜像:
docker build -t mcp-server-fetch . - 运行 Docker 容器: 构建完成后,执行以下命令运行 Docker 容器:
服务器将在标准输入/输出 (stdio) 上运行,等待 MCP 客户端连接。docker run --rm -i mcp-server-fetch
服务器配置
要将 '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' 服务器的功能:
-
使用 'fetch' 工具: 在需要抓取网页内容的场景中,LLM 可以调用 'fetch' 工具,并提供要抓取的 URL 作为参数。服务器将返回抓取到的网页内容 (Markdown 格式)。
-
使用 'fetch' Prompt: 您可以创建一个名为 'fetch' 的 Prompt,并要求用户提供 URL。MCP 客户端会将 URL 传递给 'mcp-server-fetch' 服务器,服务器抓取内容后返回给客户端,客户端可以将内容展示给用户或继续处理。
示例 Prompt 调用 (假设在 Claude 中):
请抓取以下网址的内容: [用户提供的URL]
客户端将自动调用配置好的 'fetch' Prompt,并将用户提供的 URL 作为参数传递给 'mcp-server-fetch' 服务器。
通过 'mcp-server-fetch',您的 LLM 应用将具备强大的网页内容抓取能力,从而获取最新的互联网信息,提升应用的功能和实用性。
信息
分类
网页与API