你是否有过这样的需求:让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. JasonBrown JasonBrown

      The default 5000 char limit is a good balance. Long enough for context, short enough for AI.

    2. DianaEvans DianaEvans

      What about using it with HTTPS sites that have self-signed certs? Probably fails for security.

    3. PeterWhite PeterWhite

      Great tutorial. One thing: mention that you need to restart Claude completely, not just reload.

    4. MichelleAdams MichelleAdams

      The proxy support saved me. Our corporate network blocks direct outbound requests.

    5. AndrewScott AndrewScott

      I tested fetch_youtube_transcript on 50 videos. Worked on 48 of them. Excellent success rate.