mcpField
B
Better Fetch

Better Fetch

本地服务
github.com/flutterninja9浏览器自动化940 周前更新

关于 Better Fetch

Better Fetch 是面向开发者和研究者的 MCP 服务,可提取网页或抓取文档站点。它支持链接筛选、内容清理,并将结果整理为含目录的 Markdown。

主要功能

  1. 01按深度和页数限制嵌套抓取
  2. 02提取单个页面
  3. 03按域名和 URL 模式筛选
  4. 04清理内容并识别章节
  5. 05生成保留链接和代码的 Markdown
  6. 06生成目录和元数据

适用场景

  1. 01收集多页技术文档
  2. 02提取页面且不跟进链接
  3. 03为 RAG 或摘要准备网页内容

MCP 相关

它向 MCP 客户端提供 fetch_website_nested 和 fetch_website_single 工具,用于抓取网站或提取单页内容。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MseeP.ai 安全评估徽章

Better Fetch 横幅

Better Fetch - 高级网页内容 MCP 服务

许可证:MIT TypeScript Node.js smithery 徽章 npm 版本

一款功能强大的模型上下文协议(MCP)服务,可智能抓取和处理网页内容,并支持嵌套 URL 爬取。将任意文档站点或网页资源转换为整洁、结构化的 Markdown 文件,非常适合 AI 消化和分析。

🚀 主要功能

🕸️ 智能网页爬取
  • 嵌套 URL 抓取:自动发现并爬取链接页面,深度可配置
  • 单页模式:可选择简单的单页内容提取
  • 域名过滤:仅限同一域名,或允许跨域爬取
  • 模式匹配:根据正则表达式匹配来包含或排除 URL
🧠 智能内容处理
  • 内容清理:自动移除广告、导航、脚本及其他干扰内容
  • 智能章节检测:识别主要内容区域(<main>、<article>、.content)
  • 自动生成标题:根据页面标题和 URL 结构生成有意义的章节标题
  • 目录:创建层级结构合理的目录
📝 高级 Markdown 生成
  • 整洁的格式:将 HTML 转换为结构清晰的 Markdown
  • 保留代码块:保留代码片段和技术内容的格式
  • 保留链接:保留所有重要链接,并使用正确的 Markdown 语法
  • 元数据集成:包含来源 URL、生成时间戳和网站信息
⚙️ 高度可配置
  • 爬取深度控制:设置最大爬取层级(默认:2)
  • 页面数量限制:控制要处理的最大页面数(默认:50)
  • 超时设置:可配置请求超时时间
  • 礼貌爬取:在请求之间内置延迟
  • 错误处理:妥善处理失败的请求和无效 URL

📋 可用工具

1. fetch_website_nested

通过嵌套 URL 处理进行全面的网页爬取。

参数:

  • url(必填):要爬取的起始 URL
  • maxDepth(可选,默认:2):最大爬取深度
  • maxPages(可选,默认:50):要处理的最大页面数
  • sameDomainOnly(可选,默认:true):限制为同一域名
  • excludePatterns(可选):要排除的正则表达式模式数组
  • includePatterns(可选):要包含的正则表达式模式数组
  • timeout(可选,默认:10000):请求超时时间,单位为毫秒
2. fetch_website_single

简单的单页内容提取。

参数:

  • url(必填):要抓取的 URL
  • timeout(可选,默认: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

🤝 参与贡献

欢迎贡献!详情请参阅贡献指南。

开发环境设置
  1. Fork 此仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 进行更改并添加测试
  4. 提交更改:git commit -m 'Add amazing feature'
  5. 推送到分支:git push origin feature/amazing-feature
  6. 创建 Pull Request

📜 许可证

本项目基于 MIT 许可证授权,详情请参阅 LICENSE 文件。

🆘 支持与问题反馈

🙏 致谢


为 AI 和开发者社区倾心打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。