构建用于实时网络数据提取的MCP服务器
MCP 服务器允许任何兼容 MCP 的代理通过标准协议调用您的 Web 数据工具。若要进行实时提取,您需要公开一个获取 或搜索 该工具的后端负责抓取实时页面,并返回包含源URL的干净、结构化数据。因此,该代理程序完全不涉及HTTP请求、IP轮换或HTML解析。它只需调用一个命名函数,即可获取Markdown格式的结果。
这种分离正是关键所在。你的模型逻辑保持简单。繁琐的部分——获取未解码的页面并将其转换为大语言模型(LLM)可读的格式——都由你掌控的某个工具边界来处理。
要点
- MCP 服务器向 MCP 客户端提供命名工具(带模式的函数);对于 Web 数据,您通常需要的两个是
extract_page(url)以及搜索(查询). - 官方的 MCP Fetch 参考服务器已经能够抓取 URL 并将 HTML 转换为 Markdown,因此你已经有了一个可用的初始框架。
- 将数据请求路由至渲染 API 和真实设备的出站网络;来自服务器 IP 的请求会被拦截,而且到 2025 年,自动化机器人已占网络流量的 51%,因此防御措施相当严密。
- 请返回 Markdown 格式,而非原始 HTML。这能大幅降低代理的令牌消耗,并确保响应内容易于解析。
- 请务必随内容一并返回源 URL,以便代理(以及您的审计日志)能够追溯每项声明的来源。
什么是 MCP 服务器,它提供了哪些功能?
一个 MCP 服务器 这是一个通过模型上下文协议(Model Context Protocol)向 MCP 客户端提供工具的程序,这些工具是具有类型化输入和输出模式的命名函数。像 Claude、Cursor 或您自己的智能代理这样的客户端,会在连接时发现这些工具,并像调用本地函数一样调用它们。 作为背景信息,Gartner预测到2026年底,40%的企业应用将配备针对特定任务的AI代理(Gartner,到2026年,40%的企业应用将配备针对特定任务的人工智能助手(2025年),因此确保工具边界清晰准确至关重要。
一个工具 (在 MCP 中)包含三部分:名称、输入模式和返回结构。对于 Web 数据提取,您的合约可能如下所示:extract_page(url: string) -> markdown 以及search(query: string) -> results[]. 代理仅能看到这些签名。关于如何获取、重试和清理页面的所有细节,都隐藏在这些签名之后。
您无需从零开始。官方 MCP 服务器仓库中包含一个 Fetch 参考服务器,它能够接收一个 URL,进行检索,并将 HTML 转换为 Markdown(modelcontextprotocol/servers). 请先阅读其中的工具定义。这些定义会告诉你需要复制的输入和输出结构,这样你就可以把时间花在后端开发上,而不是协议的底层实现上。本文重点在于将该后端替换为一个不会被阻塞的后端。关于更广泛的标准概况,代理网络与WebMCP 介绍了MCP以及浏览器端的WebMCP提案的发展方向。
为什么获取后端比协议更重要?
MCP层其实很简单。难点在于能否成功获取到一个可访问的页面,因为直接从服务器IP地址抓取数据会被拦截。2025年,自动化机器人占所有网络流量的51%,这是十年来机器人流量首次超过人类流量,其中恶意机器人占比达37%(Imperva,《2025年恶意机器人报告》(2025年)。换句话说,这些网站针对的正是你服务器发出的那种流量,并据此调整了防御措施。
对于代理服务器而言,情况变得更加严峻。2025年7月1日,Cloudflare开始默认在约20%的网络范围内屏蔽AI爬虫,并推出了按次付费的爬取服务市场(Cloudflare,Cloudflare 刚刚改变了 AI 爬虫抓取互联网数据的方式(2025年)。新闻网站也采取了同样的措施:目前约有79%的主要新闻网站屏蔽了AI训练机器人,约49%的网站明确禁止GPTBot(《新闻公报》,目前,全球十大新闻网站中有八家已屏蔽用于训练人工智能的机器人(2025年)。
因此,一个简单的 MCP 抓取服务器在关键目标上会失败。解决之道在于出站路径。因此,请将抓取请求路由到真实设备网络上的渲染 API,这样请求看起来就像来自真实位置的真实用户,而不是会被直接拦截的数据中心 IP 范围。
如何构建该获取工具?
首先定义工具契约,然后将其后端指向一个渲染 API。您的extract_page 该工具接收一个 URL,并返回 Markdown 格式内容以及原始 URL。其底层会调用一个渲染接口,该接口会获取实时页面、执行 JavaScript 代码,并直接返回干净的 Markdown 格式内容,因此您的工具无需自行进行 HTML 解析。
请在此处接线Massive的 Web Render API。一个渲染 API 是一项服务,它能够抓取网页,在真实的浏览器中运行其中的 JavaScript 代码,并返回最终渲染结果而非原始源代码。其 Browsing 接口支持格式=markdown 作为第一类输出:生成的页面已预先适配大型语言模型(LLM),无需在工具代码中进行 DOM 抓取。该请求通过覆盖 195 多个国家/地区、拥有约 130 万日活跃设备的真实设备网络进行传输,因此出站 IP 来自真实的终端设备,而非被标记的服务器范围。 例如,当页面根据地区呈现不同内容时,您可以按国家、行政区或城市进行地理定向,并在同一出口IP上保持长达12分钟的粘性会话,同时Cookie:session=<id> 多步骤流程的标题。
在我们的供应商测试中,住宅IP在受保护网站上的成功率通常远高于数据中心IP(大致范围:住宅IP约85%-99%,数据中心IP约20%-40%)。 请将此视为供应商的基准数据,而非独立研究结果。即便如此,这仍能解释我们经常观察到的一种模式:团队通常将住宅IP作为备用方案引入,待观察到封锁率下降后,便将其转为主要方案。
返回结构化数据,而不是二进制大对象。每个extract_page 响应应包含 Markdown 正文和解析后的源 URL,以便代理进行归因,并让您的日志能够进行审计。对于搜索类工具,Search 端点可从主要搜索引擎检索搜索结果页面(SERP)结果,并支持地理定位,这使您的搜索(查询) 使用动态发现功能,而非硬编码的 URL 列表。
为什么返回 Markdown 而不是原始 HTML?
应使用 Markdown 格式,因为它比原始 HTML 消耗的字符数少得多,且仍保持可读性。原始 HTML 主要由标签、脚本和样式组成,而模型并不需要这些内容。转换为 Markdown 格式可以去除这些冗余信息,并大幅减少字符数,在典型页面中可减少超过一半(dev.to,AI 代理的浏览器工具 第 4 部分:跳过浏览器(2026年)。令牌数量越少,每次调用工具时的成本就越低,响应速度也越快。
这也有技术上的原因。模型在处理简洁的 Markdown 标题和列表时,比处理一堆嵌套的 div 标签更能准确地进行推理。实际上,这样既能减少令牌消耗,又能获得更可靠的提取结果。关于 Markdown 的权衡取舍以及它实际能节省多少资源,将在跳过浏览器以减少代理令牌成本,在确定输出格式之前,建议先阅读一下。
由于 Web Render API 返回格式=markdown 具体来说,您的 MCP 工具是在后端进行转换的,而非在代理的运行环境中。因此,代理接收的是已处理好的 Markdown 内容,并将其令牌预算用于推理,而非解析标签乱码。
如何从代理端测试该工具?
通过将服务器连接到真实的 MCP 客户端并观察工具的往返时间来进行测试。配置您的代理(Claude Desktop、Cursor 或自定义客户端)以加载服务器,并确认extract_page 以及搜索 在工具列表中显示后,提示其抓取实时页面。验证响应内容是否为 Markdown 格式、是否包含源 URL,以及是否未被屏蔽。
有意识地选择高难度目标。测试时应针对 JavaScript 内容繁重的网站以及已知会阻挡机器人的页面,因为简单的页面会掩盖那些你构建此后端本意要避免的故障。 根据我们在各类代理工作负载中的观察,第一个高难度目标往往是大多数简单服务器悄然崩溃的地方。相比之下,基于渲染的抓取工具则能经受住考验。此外,请通过从两个国家请求同一 URL 并确认内容在应有之处存在差异,来验证地理定位功能是否正常。
一旦检索工具成熟稳定,它就会成为更大系统的检索层。同一款工具既能为单个代理提供数据,也能为一个始终保持最新状态的检索管道提供数据,这正是基于实时网络数据构建 RAG 管道 基于此类实时数据抓取工具构建。
来源
- Imperva,《2025年恶意机器人报告》,2025年。https://www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/
- Cloudflare,Cloudflare 刚刚改变了 AI 爬虫抓取互联网数据的方式,2025年。https://www.cloudflare.com/press/press-releases/2025/cloudflare-just-changed-how-ai-crawlers-scrape-the-internet-at-large/
- 《新闻公报》,目前,全球十大新闻网站中有八家已屏蔽用于训练AI的机器人,2025年。https://pressgazette.co.uk/platforms/eight-in-ten-of-worlds-biggest-news-websites-now-block-ai-training-bots/
- Gartner,到2026年,40%的企业应用将配备针对特定任务的人工智能助手,2025年。https://www.gartner.com/en/newsroom/press-releases/2025-08-26-Gartner预测,到2026年,40%的企业应用将配备特定任务的人工智能代理,而2025年这一比例还不到5%
- dev.to,AI 代理的浏览器工具 第 4 部分:跳过浏览器,2026年。https://dev.to/stevengonsalvez/browser-tools-for-ai-agents-part-4-skip-the-browser-save-80-on-tokens-304c
- dev.to,构建用于实时网络数据提取的MCP服务器,2026年。https://dev.to/alterlab/build-an-mcp-server-for-real-time-web-data-extraction-3725
- 模型上下文协议,MCP官方服务器(Fetch参考服务器).https://github.com/modelcontextprotocol/servers
Frequently Asked Questions
我必须从头开始编写一个 MCP 服务器吗?
不。请从 MCP 服务器仓库中的官方 Fetch 参考服务器开始。它已经处理了 URL 获取和 HTML 转 Markdown 的转换,因此你可以复制其工具结构,并将后端替换为一个不会被阻塞的渲染 API。
为什么不在我的工具代码中直接获取该 URL 呢?
在受保护的网站上,服务器 IP 抓取请求会被拦截。2025 年,机器人流量占网络总流量的 51%,Cloudflare 开始在约 20% 的网站上默认拦截 AI 爬虫,因此您关注的目标网站上的直接抓取请求会失败。使用真实设备的出站路径可以避免这种情况。
该工具实际上返回了什么?
经过清理的 Markdown 代码加上已解析的源 URL,以结构化数据的形式返回。Markdown 能降低令牌消耗,而源 URL 则允许代理为声明分配属性,并使您能够审核每次调用。
我应该展示一个工具还是几个?
通常是两个:extract_page(url) 对于已知的页面以及搜索(查询) 以便进行探索。请确保每个工具的模式保持精简,且返回结果的结构可预测,这样任何 MCP 客户端都能直接调用它们,无需特殊处理。
