你是否有过这样的需求:让AI助手帮你“看”一个网页,然后告诉你里面写了什么?或者让AI从一篇新闻中提取核心内容,跳过那些烦人的广告和导航栏?如果AI能直接读取任何网址的内容,并把它转化成容易理解的形式,那该多方便。

fetch-mcp正是这样一个工具。它是一个实现了Model Context Protocol(MCP)的服务器,专门用于获取网络内容。通过它,你的AI应用可以获得“上网”能力——抓取HTML、转换为Markdown、提取纯文本、解析JSON数据,甚至获取YouTube视频的字幕。真正让AI从封闭的知识库走向开放的互联网。

项目基本信息

信息项详情
项目名称fetch-mcp
GitHub地址https://github.com/zcaceres/fetch-mcp
项目描述A flexible HTTP fetching Model Context Protocol server.
作者zcaceres
开源协议MIT License
开源状态公开状态
LanguagesTypeScript, JavaScript
支持平台Windows / macOS / Linux
最后更新2026-04-25

一、项目介绍

fetch-mcp的核心价值在于,它把复杂的网络请求和内容提取工作,封装成了AI能够直接调用的几个简单工具。只需要提供一个URL,AI就能获取到你需要格式的内容——是原始的HTML、干净的纯文本、结构化的Markdown,还是可读性极强的文章正文。

这个项目的特别之处在于它的灵活性。它不只做一件事,而是提供了多种内容提取方式。最有特色的是fetch_readable工具,它使用Mozilla Readability算法,能将新闻文章和博客内容从杂乱的网页中“剥离”出来,只留下正文标题和段落。此外,它还能获取YouTube视频的字幕,这是很多类似工具不具备的功能。

二、核心优势

多种输出格式满足不同需求

fetch-mcp提供了六个专门的工具,每个都针对特定场景优化。fetch_html返回原始HTML代码,适合需要网页结构的开发者。fetch_markdown将网页转换成清晰的Markdown格式,便于AI理解和后续处理。fetch_txt移除所有标签和脚本,只留下纯文本。fetch_json专门处理API响应。fetch_readable提取文章核心内容。fetch_youtube_transcript获取视频字幕。

内置分页和限制机制

网络内容可能非常庞大,一个网页可能有数兆字节。为了防止响应内容撑爆AI的上下文窗口,fetch-mcp允许你设置max_length(最大返回字符数)和start_index(起始索引)。这意味着你可以分块获取内容,先读前5000个字符,需要时再读下一段。

安全防护设计

这个服务器内置了SSRF(服务器端请求伪造)防护,会阻止对私有IP地址(如127.0.0.1、192.168.x.x)和localhost的请求,防止攻击者利用它探测内部网络。同时,它设置了默认10MB的响应大小限制,避免因下载超大文件导致内存耗尽。

代理支持

在企业网络或受限环境中,直接访问互联网可能需要通过代理。fetch-mcp支持proxy参数,你可以指定代理服务器地址,让所有请求都经过它转发。

三、适用场景

让AI助手实时读取网页内容

这是最直接的用法。当你问AI“今天有什么科技新闻?”时,AI可以调用fetch_readable工具读取新闻网站的文章,提取正文后给你总结。你不需要手动复制粘贴,AI自己就能获取信息。

自动化内容处理流程

如果你需要定期处理一批网页——比如每天抓取公司官网的更新公告,或分析竞争对手的博客——你可以让AI自动调用fetch工具,获取内容后进行比较、摘要或归档。

构建智能笔记工具

想象一个场景:你正在阅读一篇长文章,想把重点保存到笔记软件。AI可以同时使用fetch_markdown获取格式良好的内容,再用summarizer工具生成摘要,一次性完成从抓取到整理的完整流程。

获取和分析API数据

你正在调试一个REST API,想看某个端点的返回结果。AI可以直接调用fetch_json工具,获取JSON数据并帮你分析其结构或内容。这对开发和运维工作非常实用。

处理YouTube视频内容

对于视频创作者或研究人员,可能需要获取视频的字幕做进一步分析。fetch_youtube_transcript可以抓取任何公开YouTube视频的自动生成字幕或上传的字幕文件,然后你可以让AI对这些文字进行摘要、翻译或关键词提取。

四、安装教程

fetch-mcp的安装非常简便,不需要克隆代码仓库。

前提条件

  • 安装Node.js(14.0或更高版本)

与Claude Desktop集成

这是最快的上手方式。找到Claude Desktop的配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

用文本编辑器打开,添加或修改mcpServers部分:

{
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": ["mcp-fetch-server"]
    }
  }
}

如果你想自定义默认的字符限制,可以添加环境变量:

{
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": ["mcp-fetch-server"],
      "env": {
        "DEFAULT_LIMIT": "10000"
      }
    }
  }
}

保存文件后,完全退出并重启Claude Desktop。现在,你的AI就拥有了获取网络内容的能力。

作为命令行工具使用

你也可以全局安装fetch-mcp,在终端中直接使用:

npm install -g mcp-fetch-server

然后就可以执行各种抓取命令:

# 获取网页的Markdown版本
mcp-fetch markdown https://example.com

# 提取文章可读内容
mcp-fetch readable https://example.com/blog/post

# 获取YouTube字幕(西班牙语)
mcp-fetch youtube https://www.youtube.com/watch?v=dQw4w9WgXcQ --lang es

# 限制只返回前2000个字符
mcp-fetch html https://example.com --max-length 2000

五、使用示例

以下是你配置好fetch-mcp后,可以与AI进行的真实对话。

示例1:提取并总结一篇新闻文章

用户指令:“帮我读取这篇文章 https://news.ycombinator.com/item?id=12345678,然后用中文总结一下说的什么。”

AI背后的操作:AI会调用fetch_readable工具,传入URL。服务器会返回文章主体内容(Markdown格式)。然后AI基于这些内容生成中文摘要。

示例2:分页获取长网页内容

用户指令:“读取这个很长的文档页面,先告诉我开头5000个字符说了什么。”

AI背后的操作:AI第一次调用fetch_txtfetch_markdown时,会主动或默认加上max_length=5000参数。服务器只返回前5000个字符。当用户问“下一页”或“继续”时,AI会根据上一次返回的长度,计算start_index=5000,获取接下来的内容。

示例3:调用API并分析JSON数据

用户指令:“调用这个天气API https://api.weather.gov/points/39.7456,-97.0892,告诉我当前的天气预报。”

AI背后的操作:AI调用fetch_json工具,传入URL。服务器返回JSON数据。AI解析JSON中的相关字段(如properties.forecast),用自然语言告诉你天气预报。

示例4:获取YouTube视频字幕并翻译

用户指令:“把这个YouTube视频的字幕提取出来,然后翻译成中文:https://www.youtube.com/watch?v=abc123

AI背后的操作:AI首先调用fetch_youtube_transcript,传入URL。服务器返回字幕文本(通常带时间戳)。然后AI将这些英文(或原语言)字幕逐句或整体翻译成中文。

六、常见问题

问题1:配置后AI提示“fetch_readable工具不存在”或没有反应

解决方案:检查你是否完整重启了Claude Desktop。仅仅关闭对话窗口不够,需要通过菜单(或任务栏)完全退出应用再重新打开。另外,确保你的Node.js版本符合要求。

问题2:获取某些网页时返回空内容或错误

解决方案:有些网站会检测并阻止自动化请求(如Cloudflare防护)。fetch-mcp默认带有常见的浏览器User-Agent头,但如果你遇到反爬机制,可以尝试添加自定义headers参数,模仿真实浏览器的请求头。例如告诉AI:“用这些headers获取:{ ‘User-Agent’: ‘Mozilla/5.0 …’ }”。

问题3:fetch_readable提取的文章不完整

解决方案:Mozilla Readability算法对某些复杂布局的网页可能效果不佳。你可以尝试使用fetch_markdown或fetch_txt作为备选,它们会返回完整的页面内容(包括可能不需要的部分),但信息不会丢失。

问题4:获取YouTube字幕失败

解决方案:fetch_youtube_transcript依赖yt-dlp工具(如果安装了)或直接从YouTube页面提取。如果失败,可以尝试安装yt-dlp:pip install yt-dlp(需要Python环境)并确保它在PATH中。另外,不是所有视频都有字幕,有些视频可能没有提供任何字幕文件。

问题5:担心AI访问内部网络资源

解决方案:fetch-mcp已经内置了SSRF防护,正常情况下不会允许请求私有IP地址和localhost。但为了更安全,你可以配置网络层面(如防火墙)限制MCP服务器的出站访问范围,只允许访问公网HTTP/HTTPS端口。

问题6:fetch到的内容太长,AI处理不了

解决方案:利用分页机制。在提问时明确告诉AI限制长度,例如“只读取前3000个字符”。如果内容确实很长,可以让AI先获取一部分,决定是否需要继续。你也可以通过环境变量DEFAULT_LIMIT设置一个全局上限。

七、总结

fetch-mcp是一个简洁但强大的MCP服务器,它精准地解决了一个核心问题:让AI能够自主地从互联网获取实时信息。通过提供多种格式输出和灵活性极强的控制参数,它覆盖了从简单阅读到复杂数据抓取的广泛用例。

这个项目的设计哲学是“做一件事,做到最好”。它没有试图成为一个全能的网络爬虫,而是聚焦于AI应用最需要的几个场景——网页阅读、文章提取、JSON解析和YouTube字幕获取。代码质量高,安全考虑周全(SSRF防护、大小限制),部署极其方便(npm npx一键运行)。

对于开发者来说,fetch-mcp是学习如何构建MCP服务器的绝佳范例。它的代码结构清晰,使用TypeScript编写,有完善的测试。对于普通用户,通过Claude Desktop等客户端,你可以让AI真正地“上网看看”,这个能力将打开无限的应用可能——实时信息查询、自动化内容处理、智能笔记助手等等。

下次当你想让AI了解某个网页时,不必再手动复制粘贴。只需告诉它“用fetch工具读取这个链接”,然后看着它为你工作吧。

标签: 内容抓取

已有 33 条评论

    1. ChrisWilson ChrisWilson

      Would be great if it could also handle RSS feeds directly. Maybe a separate tool.

    2. AmyTaylor AmyTaylor

      I built a bot that monitors my competitor's blog for changes using this. Works perfectly.

    3. FrankMiller FrankMiller

      Any plans to support WebSockets? Probably out of scope, but would be cool.

    4. JuliaGarcia JuliaGarcia

      The markdown conversion quality is excellent. Even preserves most of the formatting.

    5. EricMartinez EricMartinez

      I wish there was a way to specify a timeout. Some slow pages hang for a while.