MCP Fetch Server - 官方网页内容获取服务器

MCP Fetch Server - 官方网页内容获取服务器

官方实现 | Stars: 2000+ | Python | MIT License

概述

MCP Fetch Server 是 Model Context Protocol 官方提供的网页内容获取服务器,专为 AI 应用设计。它能够获取任意 URL 的内容,并自动将 HTML 转换为 Markdown 格式,使 LLM 能够更好地理解和处理网页内容。

该服务器提供了简单而强大的 fetch 工具,支持分页获取、原始内容模式、自定义长度限制等功能。同时,它还提供了企业级配置选项,包括代理支持、自定义 User-Agent、robots.txt 处理等,适合各种生产环境使用。

核心价值: 将互联网内容接入 AI 应用的标准化桥梁,让 AI 助手能够实时获取和理解网页信息。

核心特性

  • 官方维护,Model Context Protocol 标准实现
  • 🔄 自动 Markdown 转换,优化 LLM 理解
  • 📄 分页获取支持,处理超长文档
  • 🎛️ 灵活的配置选项(User-Agent、代理、超时)
  • 🔒 遵守 robots.txt,尊重网站规则
  • 🚀 轻量级设计,快速响应
  • 🐳 多种安装方式(uvx、pip、Docker)
  • 🛠️ 丰富的调试工具(MCP Inspector)

工具列表

fetch

功能: 获取 URL 内容并自动转换为 Markdown 格式

参数:

  • url (string, 必需) - 要获取的完整 URL 地址(必须包含协议)

    • 示例: "https://example.com/article"
  • max_length (integer, 可选, 默认: 5000) - 返回内容的最大字符数

    • 用于控制响应大小,避免过大的内容
    • 建议范围: 5000-15000
  • start_index (integer, 可选, 默认: 0) - 内容起始位置的索引

    • 用于分页获取大型文档
    • 配合 max_length 实现内容切片
  • raw (boolean, 可选, 默认: false) - 是否返回原始 HTML

    • false: 转换为 Markdown(推荐)
    • true: 保留原始 HTML 格式

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 示例 1: 基础用法
{
"url": "https://example.com/blog/article"
}

// 示例 2: 获取长文档
{
"url": "https://docs.example.com/api-reference",
"max_length": 15000
}

// 示例 3: 分页获取
{
"url": "https://example.com/long-document",
"start_index": 10000,
"max_length": 5000
}

// 示例 4: 获取原始 HTML
{
"url": "https://api.example.com/data.html",
"raw": true
}

响应示例:

1
2
3
4
5
6
7
8
9
10
11
# Article Title

This is the converted markdown content from the webpage.

## Section 1

Content here...

## Section 2

More content...

配置方式

环境变量

1
2
3
4
5
6
7
8
9
10
11
# User-Agent 配置(建议包含联系方式)
export MCP_FETCH_USER_AGENT="MyBot/1.0 (+https://example.com/bot)"

# 代理配置(企业环境)
export MCP_FETCH_PROXY="http://proxy.company.com:8080"

# Robots.txt 处理(默认遵守)
export MCP_FETCH_IGNORE_ROBOTS_TXT="false"

# 超时设置(秒)
export MCP_FETCH_TIMEOUT="60"

Claude Desktop 配置

基础配置 (~/Library/Application Support/Claude/claude_desktop_config.json):

1
2
3
4
5
6
7
8
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}

完整配置(包含所有选项):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"],
"env": {
"MCP_FETCH_USER_AGENT": "ClaudeBot/1.0 (+https://mysite.com)",
"MCP_FETCH_PROXY": "http://proxy.company.com:8080",
"MCP_FETCH_IGNORE_ROBOTS_TXT": "false",
"MCP_FETCH_TIMEOUT": "60"
}
}
}
}

VS Code 配置

.vscode/mcp.json 中添加:

1
2
3
4
5
6
7
8
9
10
{
"mcp": {
"servers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}
}

Cline 配置

在 VS Code 的 settings.json 中添加:

1
2
3
4
5
6
7
8
{
"mcp.servers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
}

Docker 部署

1
2
3
4
5
6
7
8
# 基础运行
docker run -i --rm mcp/fetch

# 带环境变量
docker run -i --rm \
-e MCP_FETCH_USER_AGENT="CustomBot/1.0" \
-e MCP_FETCH_PROXY="http://proxy:8080" \
mcp/fetch

本地运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 方式 1: 使用 uvx(推荐 - 无需安装)
uvx mcp-server-fetch

# 方式 2: 使用 pip 安装
pip install mcp-server-fetch
python -m mcp_server_fetch

# 方式 3: 从源码运行
git clone https://github.com/modelcontextprotocol/servers.git
cd servers/src/fetch
pip install -e .
python -m mcp_server_fetch

# 方式 4: 使用 MCP Inspector 调试
npx @modelcontextprotocol/inspector uvx mcp-server-fetch

使用场景

1. 内容聚合与分析

场景描述: 从多个新闻网站、博客或文档站点聚合内容,进行比较分析和摘要

实施步骤:

  1. 使用 fetch 工具获取多个新闻网站的文章(如 HackerNews、TechCrunch、Ars Technica)
  2. 自动转换为统一的 Markdown 格式
  3. 使用 AI 进行内容摘要、对比和趋势分析
  4. 生成综合报告或每日技术新闻摘要

价值: 节省人工阅读时间,快速掌握行业动态

2. API 文档自动提取

场景描述: 从在线文档站点提取 API 参考、教程和最佳实践

实施步骤:

  1. 获取 API 文档页面(如 Stripe、Twilio 的 REST API 参考)
  2. 转换为结构化 Markdown 格式
  3. 提取接口定义、参数说明和示例代码
  4. 生成团队内部的 API 集成指南或集成到 IDE

价值: 构建统一的开发文档,提升团队协作效率

3. 竞品监控与分析

场景描述: 定期抓取竞品网站内容,跟踪产品功能、价格变化和营销策略

实施步骤:

  1. 定时获取竞品官网、定价页面和功能介绍
  2. 对比历史快照发现内容变化
  3. 分析新增功能、价格调整和市场定位
  4. 每周生成竞品动态报告并通知产品团队

价值: 保持市场敏感度,及时调整产品策略

4. 知识库构建与 RAG

场景描述: 从在线资源批量获取内容,构建本地知识库用于 RAG(检索增强生成)

实施步骤:

  1. 批量获取技术文档、教程和 Stack Overflow 问答
  2. 转换为统一格式并提取关键信息
  3. 存储到向量数据库(如 Qdrant、Pinecone)
  4. 支持语义搜索和智能问答(如构建 Python 编程助手)

价值: 增强 AI 助手的知识能力,提供准确的技术支持

技术架构

工作流程

1
2
3
4
5
6
7
8
9
用户请求 → MCP Fetch Server → HTTP 请求 → 目标网站

HTML 响应

HTML to Markdown 转换

长度控制 & 分页

返回给 AI/用户

核心技术

  • HTTP 客户端: Python requests
  • HTML 解析: BeautifulSoup 或类似库
  • Markdown 转换: html2text 或自定义转换器
  • MCP 协议: 标准 stdio 通信

安全机制

  • robots.txt 遵守(可配置)
  • User-Agent 识别
  • 请求超时控制
  • 内容长度限制

与其他 MCP 服务器对比

特性 MCP Fetch Puppeteer MCP Playwright MCP Browserbase MCP
资源消耗 极低 低(云端)
JavaScript 渲染
配置复杂度 简单 复杂 复杂 简单
启动速度
Markdown 转换 ✅ 自动 ❌ 需自己实现 ❌ 需自己实现 ❌ 需自己实现
代理支持
成本 免费 免费 免费 付费
适用场景 静态内容获取 SPA 应用 复杂自动化 托管方案

推荐: 对于大多数 AI 应用的网页内容获取需求,MCP Fetch Server 是最佳选择。它轻量、快速、易用,并且自动处理 Markdown 转换。只有在需要 JavaScript 渲染或复杂交互时,才考虑使用浏览器自动化方案。

最佳实践

1. 性能优化

优化响应速度和资源使用

  • ✅ 合理设置 max_length,避免获取过大的内容(建议 5000-15000 字符)
  • ✅ 使用 start_indexmax_length 实现分页,处理超长文档
  • ✅ 考虑在客户端缓存频繁访问的内容,减少重复请求
  • ✅ 对于大型文档,优先使用 raw=false(Markdown 模式)以减少传输大小
  • ✅ 设置合理的超时时间(MCP_FETCH_TIMEOUT),避免长时间等待

示例:

1
2
# 设置 10 秒超时
export MCP_FETCH_TIMEOUT="10"

2. 安全性

防范安全风险和滥用

  • 🔒 谨慎访问内部网络地址(如 127.0.0.1192.168.x.x),防止 SSRF 攻击
  • 🔒 使用 URL 白名单限制可访问的域名范围
  • 🔒 避免暴露敏感的 API Key 或凭证在 URL 参数中
  • 🔒 在企业环境中,通过代理服务器统一管理外部访问
  • 🔒 定期审计访问日志,检测异常请求模式

安全警告:

该服务器可以访问本地和内部 IP 地址,可能存在 SSRF(服务器端请求伪造)风险。建议在生产环境中使用 URL 白名单限制可访问的域名。

3. 遵守规范

尊重网站规则和法律法规

  • 📜 默认遵守 robots.txt 规则(MCP_FETCH_IGNORE_ROBOTS_TXT=false
  • 📜 设置友好的 User-Agent,包含联系方式
    1
    export MCP_FETCH_USER_AGENT="MyBot/1.0 (+https://example.com/bot)"
  • 📜 控制请求频率,避免给目标网站造成负担
  • 📜 遵守网站的服务条款(ToS)和隐私政策
  • 📜 避免抓取受版权保护的付费内容

4. 错误处理

优雅处理网络和解析错误

  • 🛠️ 处理 HTTP 错误状态码(404、403、500 等)
  • 🛠️ 实现重试机制(指数退避策略)应对临时网络故障
  • 🛠️ 验证 URL 格式,避免无效请求
  • 🛠️ 处理 HTML 解析错误(恶意格式或不规范的 HTML)
  • 🛠️ 记录详细的错误日志,便于问题排查

示例:

1
2
3
4
5
6
7
8
9
10
# 伪代码示例
def fetch_with_retry(url, max_retries=3):
for attempt in range(max_retries):
try:
return fetch(url)
except NetworkError:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # 指数退避
else:
raise

常见问题

Q: 如何处理需要 JavaScript 渲染的页面?

A: MCP Fetch Server 不支持 JavaScript 渲染。对于 SPA(单页应用)或需要 JavaScript 的网站,建议使用:

  • Puppeteer MCP Server - 适合简单的 JS 渲染
  • Playwright MCP Server - 适合复杂的自动化场景
  • Browserbase MCP Server - 托管式解决方案

Q: 如何避免被网站封禁?

A: 遵循最佳实践:

  1. 设置友好的 User-Agent 并包含联系方式
  2. 遵守 robots.txt 规则
  3. 控制请求频率(建议间隔 1-5 秒)
  4. 使用代理轮换(如果需要高频访问)
  5. 避免在高峰时段大量请求

Q: 如何处理需要登录的网站?

A: MCP Fetch Server 不支持 Cookie 或会话管理。对于需要登录的网站:

  • 使用 Puppeteer/Playwright MCP Server 进行完整的浏览器自动化
  • 或者直接调用网站的 API(如果有公开 API)

Q: 支持哪些内容格式?

A:

  • 输入: 任何 HTTP/HTTPS URL
  • 输出:
    • Markdown(默认,raw=false
    • 原始 HTML(raw=true
    • 支持的网页格式: HTML、XHTML

Q: 如何在企业防火墙后使用?

A: 配置 HTTP/HTTPS 代理:

1
2
3
4
5
6
7
8
9
10
11
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"],
"env": {
"MCP_FETCH_PROXY": "http://proxy.company.com:8080"
}
}
}
}

Q: 性能如何?

A:

  • 响应时间: 通常 1-5 秒(取决于目标网站和网络)
  • 内存占用: 极低(< 50MB)
  • 并发能力: 支持多个并发请求
  • 适合场景: 中小规模的内容获取(< 1000 请求/小时)

Q: 如何调试问题?

A: 使用 MCP Inspector:

1
npx @modelcontextprotocol/inspector uvx mcp-server-fetch

这将启动一个 Web 界面,可以交互式地测试和调试服务器。

评分详情

维度 评分 说明
功能性 5.0/5.0 功能完善,覆盖常见的网页获取场景
文档质量 4.8/5.0 官方文档清晰,示例丰富
社区活跃度 5.0/5.0 官方维护,社区活跃,问题响应及时
维护状态 5.0/5.0 持续更新,定期发布新版本
代码质量 4.9/5.0 代码规范,测试覆盖良好
综合评分 5.0/5.0 优秀的官方 MCP 实现

总结

MCP Fetch Server 是 Model Context Protocol 生态中最基础、最实用的服务器之一。它将互联网内容接入 AI 应用的过程标准化和简化,使开发者能够轻松构建具有实时网页获取能力的 AI 应用。

推荐指数: ⭐⭐⭐⭐⭐ (5/5)

适合你的情况:

  • ✅ 需要从网页获取内容
  • ✅ 构建内容聚合或监控系统
  • ✅ AI 应用需要实时网页信息
  • ✅ 需要简单、快速、可靠的解决方案
  • ✅ 处理静态或简单动态网页

不适合的情况:

  • ❌ 需要 JavaScript 渲染(SPA)
  • ❌ 需要模拟用户交互(点击、滚动)
  • ❌ 需要截图或生成 PDF
  • ❌ 需要处理复杂的登录流程

替代方案:

  • Puppeteer/Playwright MCP: 需要浏览器自动化
  • Browserbase MCP: 需要托管式方案
  • 自定义实现: 有特殊需求和开发资源

相关资源


更新时间: 2025-10-14
数据来源: GitHub 官方仓库
综合评分: 5.0/5.0

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero