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) - 是否返回原始 HTMLfalse: 转换为 Markdown(推荐)true: 保留原始 HTML 格式
使用示例:
1 | // 示例 1: 基础用法 |
响应示例:
1 | # Article Title |
配置方式
环境变量
1 | # User-Agent 配置(建议包含联系方式) |
Claude Desktop 配置
基础配置 (~/Library/Application Support/Claude/claude_desktop_config.json):
1 | { |
完整配置(包含所有选项):
1 | { |
VS Code 配置
在 .vscode/mcp.json 中添加:
1 | { |
Cline 配置
在 VS Code 的 settings.json 中添加:
1 | { |
Docker 部署
1 | # 基础运行 |
本地运行
1 | # 方式 1: 使用 uvx(推荐 - 无需安装) |
使用场景
1. 内容聚合与分析
场景描述: 从多个新闻网站、博客或文档站点聚合内容,进行比较分析和摘要
实施步骤:
- 使用
fetch工具获取多个新闻网站的文章(如 HackerNews、TechCrunch、Ars Technica) - 自动转换为统一的 Markdown 格式
- 使用 AI 进行内容摘要、对比和趋势分析
- 生成综合报告或每日技术新闻摘要
价值: 节省人工阅读时间,快速掌握行业动态
2. API 文档自动提取
场景描述: 从在线文档站点提取 API 参考、教程和最佳实践
实施步骤:
- 获取 API 文档页面(如 Stripe、Twilio 的 REST API 参考)
- 转换为结构化 Markdown 格式
- 提取接口定义、参数说明和示例代码
- 生成团队内部的 API 集成指南或集成到 IDE
价值: 构建统一的开发文档,提升团队协作效率
3. 竞品监控与分析
场景描述: 定期抓取竞品网站内容,跟踪产品功能、价格变化和营销策略
实施步骤:
- 定时获取竞品官网、定价页面和功能介绍
- 对比历史快照发现内容变化
- 分析新增功能、价格调整和市场定位
- 每周生成竞品动态报告并通知产品团队
价值: 保持市场敏感度,及时调整产品策略
4. 知识库构建与 RAG
场景描述: 从在线资源批量获取内容,构建本地知识库用于 RAG(检索增强生成)
实施步骤:
- 批量获取技术文档、教程和 Stack Overflow 问答
- 转换为统一格式并提取关键信息
- 存储到向量数据库(如 Qdrant、Pinecone)
- 支持语义搜索和智能问答(如构建 Python 编程助手)
价值: 增强 AI 助手的知识能力,提供准确的技术支持
技术架构
工作流程
1 | 用户请求 → MCP Fetch Server → HTTP 请求 → 目标网站 |
核心技术
- 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_index和max_length实现分页,处理超长文档 - ✅ 考虑在客户端缓存频繁访问的内容,减少重复请求
- ✅ 对于大型文档,优先使用
raw=false(Markdown 模式)以减少传输大小 - ✅ 设置合理的超时时间(
MCP_FETCH_TIMEOUT),避免长时间等待
示例:
1 | # 设置 10 秒超时 |
2. 安全性
防范安全风险和滥用
- 🔒 谨慎访问内部网络地址(如
127.0.0.1、192.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 | # 伪代码示例 |
常见问题
Q: 如何处理需要 JavaScript 渲染的页面?
A: MCP Fetch Server 不支持 JavaScript 渲染。对于 SPA(单页应用)或需要 JavaScript 的网站,建议使用:
- Puppeteer MCP Server - 适合简单的 JS 渲染
- Playwright MCP Server - 适合复杂的自动化场景
- Browserbase MCP Server - 托管式解决方案
Q: 如何避免被网站封禁?
A: 遵循最佳实践:
- 设置友好的 User-Agent 并包含联系方式
- 遵守 robots.txt 规则
- 控制请求频率(建议间隔 1-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
- Markdown(默认,
Q: 如何在企业防火墙后使用?
A: 配置 HTTP/HTTPS 代理:
1 | { |
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: 需要托管式方案
- 自定义实现: 有特殊需求和开发资源
相关资源
- GitHub: https://github.com/modelcontextprotocol/servers
- 文档: https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
- MCP 协议: https://modelcontextprotocol.io/
- 社区: https://github.com/modelcontextprotocol/servers/discussions
- 问题反馈: https://github.com/modelcontextprotocol/servers/issues
更新时间: 2025-10-14
数据来源: GitHub 官方仓库
综合评分: 5.0/5.0