关于 Better Fetch
Better Fetch 是面向开发者和研究者的 MCP 服务,可提取网页或抓取文档站点。它支持链接筛选、内容清理,并将结果整理为含目录的 Markdown。
主要功能
- 01按深度和页数限制嵌套抓取
- 02提取单个页面
- 03按域名和 URL 模式筛选
- 04清理内容并识别章节
- 05生成保留链接和代码的 Markdown
- 06生成目录和元数据
适用场景
- 01收集多页技术文档
- 02提取页面且不跟进链接
- 03为 RAG 或摘要准备网页内容
MCP 相关
它向 MCP 客户端提供 fetch_website_nested 和 fetch_website_single 工具,用于抓取网站或提取单页内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍

Better Fetch - 高级网页内容 MCP 服务
一款功能强大的模型上下文协议(MCP)服务,可智能抓取和处理网页内容,并支持嵌套 URL 爬取。将任意文档站点或网页资源转换为整洁、结构化的 Markdown 文件,非常适合 AI 消化和分析。
🚀 主要功能
🕸️ 智能网页爬取
- 嵌套 URL 抓取:自动发现并爬取链接页面,深度可配置
- 单页模式:可选择简单的单页内容提取
- 域名过滤:仅限同一域名,或允许跨域爬取
- 模式匹配:根据正则表达式匹配来包含或排除 URL
🧠 智能内容处理
- 内容清理:自动移除广告、导航、脚本及其他干扰内容
- 智能章节检测:识别主要内容区域(
<main>、<article>、.content) - 自动生成标题:根据页面标题和 URL 结构生成有意义的章节标题
- 目录:创建层级结构合理的目录
📝 高级 Markdown 生成
- 整洁的格式:将 HTML 转换为结构清晰的 Markdown
- 保留代码块:保留代码片段和技术内容的格式
- 保留链接:保留所有重要链接,并使用正确的 Markdown 语法
- 元数据集成:包含来源 URL、生成时间戳和网站信息
⚙️ 高度可配置
- 爬取深度控制:设置最大爬取层级(默认:2)
- 页面数量限制:控制要处理的最大页面数(默认:50)
- 超时设置:可配置请求超时时间
- 礼貌爬取:在请求之间内置延迟
- 错误处理:妥善处理失败的请求和无效 URL
📋 可用工具
1. fetch_website_nested
通过嵌套 URL 处理进行全面的网页爬取。
参数:
url(必填):要爬取的起始 URLmaxDepth(可选,默认:2):最大爬取深度maxPages(可选,默认:50):要处理的最大页面数sameDomainOnly(可选,默认:true):限制为同一域名excludePatterns(可选):要排除的正则表达式模式数组includePatterns(可选):要包含的正则表达式模式数组timeout(可选,默认:10000):请求超时时间,单位为毫秒
2. fetch_website_single
简单的单页内容提取。
参数:
url(必填):要抓取的 URLtimeout(可选,默认:10000):请求超时时间,单位为毫秒
💡 使用场景
📚 文档处理
- API 文档:转换 REST API 文档、SDK 指南和技术参考资料
- 框架文档:处理 React、Vue、Angular 或任何框架的文档
- 库指南:从库文档网站中提取完整指南
- 教程系列:将多部分教程汇总为单份结构清晰的文档
🔍 内容分析与研究
- 竞品分析:收集竞争对手的文档和功能介绍
- 市场研究:从多个相关页面提取产品信息
- 学术研究:收集并整理基于网络的研究资料
- 知识库创建:将零散的网页内容转化为结构化知识库
🤖 AI 训练与上下文
- 大模型上下文准备:为 AI 模型训练创建简洁、结构化的内容
- RAG 系统输入:生成用于检索增强生成的高质量文档
- 聊天机器人知识:为客服机器人构建全面的知识库
- 内容摘要:为自动摘要任务准备网页内容
🛠️ 安装与设置
通过 npm 快速安装(推荐)
使用 Better Fetch 最简单的方式是通过 npx。只需将以下内容添加到 MCP 客户端配置中:
适用于 Claude Desktop - 添加到 claude_desktop_config.json:
{
"mcpServers": {
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
}
适用于 VS Code MCP 扩展:
{
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
这会自动下载并运行最新版本,无需手动安装或构建。
通过 Smithery 安装
如需通过 Smithery 自动为 Claude Desktop 安装 Better Fetch:
npx -y @smithery/cli install @infero.mcp/better-fetch --client claude
前置要求
- Node.js 18+
- npm 或 yarn
- 兼容 MCP 的客户端(Claude Desktop、带 MCP 扩展的 VS Code 等)
步骤 1:克隆并安装
git clone https://github.com/flutterninja9/better-fetch.git
cd better-fetch
npm install
步骤 2:构建项目
npm run build
步骤 3:测试服务(可选)
# Quick test
npm run dev
# Or run comprehensive tests
node test-mcp.js
步骤 4:配置 MCP 客户端
适用于 Claude Desktop(推荐 - 通过 npm):
添加到 claude_desktop_config.json:
{
"mcpServers": {
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
}
适用于 VS Code MCP 扩展(推荐 - 通过 npm):
{
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
适用于自定义 MCP 客户端(通过 npm):
{
"name": "better-fetch",
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
手动安装(替代方案)
如果你更倾向于在本地安装和构建:
适用于 Claude Desktop:
{
"mcpServers": {
"better-fetch": {
"command": "node",
"args": ["/absolute/path/to/better-fetch/dist/server.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}
适用于 VS Code MCP 扩展:
{
"better-fetch": {
"command": "node",
"args": ["/absolute/path/to/better-fetch/dist/server.js"]
}
}
📖 使用示例
基本文档爬取
Fetch all the web contents from this Flutter Shadcn UI documentation site:
https://flutter-shadcn-ui.mariuti.com/
Use nested fetching with a maximum depth of 3 levels and process up to 100 pages.
高级配置
Fetch content from the React documentation but exclude any URLs containing 'api' or 'reference' and only process pages containing 'tutorial' or 'guide':
URL: https://react.dev
Max Depth: 2
Exclude Patterns: ["/api/", "/reference/"]
Include Patterns: ["/tutorial/", "/guide/"]
Max Pages: 30
单页提取
Extract the content from this specific page only:
https://nextjs.org/docs/getting-started/installation
Use single page mode to avoid crawling related links.
📄 输出示例
该服务会生成内容全面的 Markdown 文件,结构如下:
# Site Name Documentation
*Scraped from: https://example.com*
*Generated on: 2024-01-15T10:30:00.000Z*
## Table of Contents
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [API Reference](#api-reference)
- [Core Functions](#core-functions)
---
## Getting Started
*Source: [https://example.com/getting-started](https://example.com/getting-started)*
[Clean markdown content here...]
---
## Installation
*Source: [https://example.com/installation](https://example.com/installation)*
[Installation instructions in markdown...]
完整示例请参阅 output.md,其中展示了该服务处理真实文档网站时的输出。
🔧 开发
项目结构
better-fetch/
├── src/
│ └── server.ts # Main server implementation
├── dist/ # Compiled JavaScript
├── test-mcp.js # Testing utilities
├── output.md # Sample output file
├── package.json
├── tsconfig.json
└── README.md
可用脚本
npm run dev # Run in development mode with hot reload
npm run build # Compile TypeScript to JavaScript
npm run start # Run the compiled server
npm run clean # Clean dist directory
npm test # Run test suite
测试你的更改
# Interactive testing
node interactive-test.js
# Automated test suite
node test-mcp.js
# Manual JSON-RPC testing
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
🚦 性能与限制
默认限制
- 最大深度:2 层(可配置)
- 最大页面数:50 页(可配置)
- 请求超时:10 秒(可配置)
- 爬取间隔:请求之间间隔 500ms(礼貌爬取)
性能提示
- 为大型网站设置合适的
maxPages限制 - 使用
includePatterns聚焦于相关内容 - 启用
sameDomainOnly,避免爬取外部链接 - 根据目标网站的响应时间调整
timeout
🤝 参与贡献
欢迎贡献!详情请参阅贡献指南。
开发环境设置
- Fork 此仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 进行更改并添加测试
- 提交更改:
git commit -m 'Add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 创建 Pull Request
📜 许可证
本项目基于 MIT 许可证授权,详情请参阅 LICENSE 文件。
🆘 支持与问题反馈
- Bug 报告:GitHub Issues
- 功能请求:GitHub Discussions
- 文档:查看 Wiki
- npm 包:@infero.mcp/better-fetch
🙏 致谢
- 使用 Model Context Protocol SDK 构建
- 由 Cheerio 提供支持,用于解析 HTML
- 使用 Turndown 转换 Markdown
为 AI 和开发者社区倾心打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
