周一至周五 09:00 - 18:00(UTC+08:00) ©2026 NST LABS TECH LTD. 保留所有权利。
Web Scraping for AI Agents: Live Data With MCP Guide
Marcus Chen Product & Network Architect
提供您的 AI 代理实时网页数据(带 MCP)
TL;DR
一个 AI 代理需要一个网络工具,当它的答案依赖于比其模型上下文更新的信息或特定于一个实时页面时。 MCP 提供一个标准的工具边界;它本身并不使检索到的内容可信。
一个最小的爬虫 MCP 服务器可以暴露一个只读的 read_web_page(url) 工具,支持 Nstproxy Crawl 。 该工具获取一个授权的公共 URL,并返回干净的 Markdown 及其源 URL。
下面的工作 Python 示例使用当前的 MCP 2.x MCPServer API。 它在一个真实的进程内 MCP 客户端中安装和测试,发现了 read_web_page 及其所需的 url 输入。
光标可以在 .cursor/mcp.json 中注册本地服务器;Claude Desktop 当前路径为设置 → 扩展。 将复制的遗留 FastMCP 和 claude_desktop_config.json 教程视为对版本敏感的。
保持代理的边界。 验证 URL,尽可能限制允许的主机,保留源引用,缓存重复读取,并在工具接触到私人或敏感数据之前要求批准。
一个 AI 模型无法知道一个产品页面今天早上是否发生了变化,一个状态页面五分钟前是否恢复,或者一个政策是否在其训练截止后进行了修订。一个实时网络工具通过在回答时检索页面来弥补这一证据空白。
有用的架构故意设计得很小:主机决定何时需要一个页面,MCP 描述和调用工具,一个爬虫 API 处理检索和提取。此指南使用当前的 MCP 2.x 接口和 Nstproxy Crawl 建立该连接,然后将其附加到 Claude Desktop 或 Cursor。
Nstproxy Crawl 给 AI 代理提供了一个管理的页面检索层,可以返回清理后的 Markdown、页面元数据、链接和其他配置的工件。代理接收可以在不操作浏览器工作者、提取规则、队列或代理路由的情况下读取的内容。
MCP 提供了集成合同。一个 MCP 服务器发布命名工具,带有描述和类型化输入模式;一个兼容的主机列出这些工具并决定何时调用它们。当前 MCP 规范 定义了协议边界,而官方的MCP Python SDK 文档 提供了此处使用的服务器和客户端 API。
这种分离在操作上很重要。模型绝不应接收 Nstproxy 令牌。当地服务器从其环境中读取秘密,提交页面请求,只返回请求的内容及其来源。
Nstproxy 早期的 网页搜索 MCP 服务器教程 演示了一个两工具的搜索后读取模式。本文侧重于更安全的入门原语:一个只读 URL 工具,您可以将其附加到多个主机并在添加发现之前进行测试。
AI 代理为何需要实时网络数据
AI 代理需要实时网络数据以保证新鲜度、源特异性和验证。一个静态模型可以解释一个概念,但无法可靠地报告当前的变更日志、库存状态、文档参数或公共事件,而无需检索证据。
在生成集成代码之前读取当前文档页面;
比较一组经过批准的公共产品页面;
检查公共状态或政策页面;
收集研究备忘录的新证据;
刷新 RAG 知识库中的一份文档;
在总结之前读取用户提供的 URL 后面的页面。
实时访问并不能消除判断的需要。页面可能过时、被操纵、特定地区或对代理不友好。返回的文本可能包含提示注入,要求模型忽略指令或披露数据。将网络内容视为证据,而不是主机规则的权威。
有关更广泛的工具设计原则,请参见 Nstproxy 的代理工具、安全和评估 指南。一个设计良好的网络工具应具有狭窄的名称、明确的输入合同、可预测的输出、超时、审计日志和清晰的故障行为。
前提条件和版本检查 您需要 Python 3.10 或更高版本,带有爬虫 API 令牌的 Nstproxy 帐户,以及一个兼容 MCP 的主机。创建一个虚拟环境,并安装为本文在 2026 年 9 月 4 日验证的确切版本:
python3 -m venv .venv
source .venv/bin/activate
pip install "mcp==2.1.1" "nstdata-ai-crawl==0.1.1"
版本钉扎使示例可重现。在升级之前检查官方 SDK 发布说明:MCP 2.x 用 MCPServer 替换了较旧的 FastMCP 类和导入路径。即使底层设计仍然正确,较旧的教程也可能立即失败。
仅在服务器环境中导出您的爬虫令牌:
export NSTDATA_API_TOKEN = "replace-with-your-token"
请勿将令牌提交到服务器文件、项目配置或公共存储库。示例的认证页面获取在本文中是一个先决条件缺口,因为在验证期间没有可用的账户令牌;MCP 服务器导入和工具发现的往返已成功执行。
为您的代理提供新鲜的网络上下文
使用 Nstproxy Crawl 将批准的公共 URL 转换为 MCP 工具的干净 Markdown。
设置爬虫
https://example.com/article
爬取
构建爬虫 MCP 服务器 以下服务器公开了一个工具,该工具接受公共 HTTP(S) URL,并返回源标签的 Markdown。将其保存为 mcp_server.py。
import os
from mcp . server import MCPServer
from nstdata_ai_crawl import Format , NstDataClient , ScrapeRequestDto
server = MCPServer (
"nstproxy-live-web" ,
instructions = "获取授权的公共网页作为干净的 Markdown。" ,
)
@server . tool ( )
def read_web_page ( url : str ) - > str :
"""获取一个授权的公共 HTTP(S) 页面并返回 Markdown。"""
if not url . startswith ( ( "https://" , "http://" ) ) :
raise ValueError ( "url 必须使用 http:// 或 https://" )
token = os . environ [ "NSTDATA_API_TOKEN" ]
with NstDataClient ( token ) as client :
result = client . submit_scrape_task_sync (
ScrapeRequestDto (
url = url ,
formats = [ Format . MARKDOWN ] ,
onlyMainContent = True ,
timeout = 60000 ,
)
)
if not result . success or not result . data :
message = result . errorMessage or result . errorCode or "未知错误"
raise RuntimeError ( f"页面获取失败: { message } " )
markdown = result . data . get_markdown ( )
if not markdown :
raise RuntimeError ( "页面已获取但没有返回 Markdown" )
return f"来源: { url } \n\n { markdown } "
if __name__ == "__main__" :
server . run ( transport = "stdio" )
该函数故意是同步的,因为当前的 Nstproxy SDK 方法等待单页面结果。对于更长的网站抓取,公开一个提交工具和一个单独的状态工具,而不是无限期保持一个 MCP 调用打开。
方案检查仅仅是一个起点。接受任意 URL 的生产服务器还必须阻止本地主机、私有 IP 范围、云元数据端点、非标准端口、DNS 绑定和重定向到不允许的目的地。一个批准的域名的允许列表比一个开放的 URL 抓取器更安全。
在打开 Claude 或 Cursor 之前验证 MCP 工具 在添加主机配置之前,通过一个进程内客户端验证服务器合同。将其保存为 test_server.py 在服务器旁边:
import asyncio
from mcp import Client
from mcp_server import server
async def main ( ) - > None :
async with Client ( server ) as client :
tools = await client . list_tools ( )
for tool in tools . tools :
print ( tool . name , tool . input_schema . get ( "required" ) )
asyncio . run ( main ( ) )
运行 python test_server.py。产生的确切代码:
此结果证明已安装的 MCP 客户端能够连接到服务器对象并发现生成的工具架构。它并不能证明 Nstproxy 令牌有效,因为列出工具并不调用爬虫 API。
您还可以使用 MCP Python SDK 入门指南 中描述的官方 MCP 开发工具检查服务器。在授予主机访问权限之前,测试无效的方案、缺失的环境变量、空的 Markdown、超时和提供商错误。
将 MCP 服务器添加到 Cursor Cursor 在 .cursor/mcp.json 中注册项目特定的 MCP 服务器,在 ~/.cursor/mcp.json 中注册全局服务器。官方 Cursor MCP 文档 描述了支持的传输和配置位置。
使用绝对的解释器和脚本路径,以便 Cursor 不依赖于其工作目录:
{
"mcpServers" : {
"nstproxy-live-web" : {
"command" : "/absolute/path/to/.venv/bin/python" ,
"args" : [ "/absolute/path/to/mcp_server.py" ] ,
"env" : {
"NSTDATA_API_TOKEN" : "replace-with-your-token"
}
}
}
}
重新启动或重新加载 Cursor,打开可用工具面板,并确认 read_web_page 出现。询问:“使用 read_web_page 总结当前公共页面 https://example.com,并引用源 URL。” 在批准之前审查工具参数。
将 MCP 服务器添加到 Claude Desktop Claude Desktop 当前的入门路径是 设置 → 扩展。Anthropic 现在推荐将桌面扩展用于本地服务器,并将设置 → 连接器用于远程 MCP 服务,而不是依赖于每个安装的旧手动 JSON 说明。请遵循当前的 Claude Desktop 本地 MCP 指南 。
为了本地开发,请打开设置 → 扩展 → 高级设置,并使用适合您的 Claude Desktop 构建的开发者控制。将经过测试的服务器打包为桌面扩展,然后再将其分发给其他用户。将令牌字段标记为敏感,以便 Claude Desktop 通过操作系统的受保护凭证存储存储它。
安装后,开始一个新对话,确认工具已列出,并请求一个已知的公共页面。成功的工具列出确认 MCP 注册;成功的页面响应确认 Nstproxy 凭证和爬取路径。将这些作为单独的入职检查。
使用实时网络数据而不失去控制 生产代理应从批准的源或用户请求中选择 URL,调用工具,检查返回的源标签,并仅根据与问题相关的内容回答。在代理指令中要求引用,如果发生重定向,请保留最终 URL。
域名策略: 只允许经过批准的公共主机或要求确认新主机。
网络安全: 在 DNS 解析和重定向之前和之后拒绝本地和私有地址。
数据最小化: 仅请求任务所需的内容格式。
缓存: 避免在一个会话中重复获取未更改的页面。
大小限制: 截断或存储超大结果,而不是填充模型上下文。
注入阻力: 切勿让页面文本覆盖系统政策或授权其他工具。
可观察性: 记录工具名称、规范化 URL、持续时间、结果状态和非秘密请求 ID。
MCP 规范的安全指导强调用户控制和工具周围的明确授权。从代理的角度来看,网络检索是只读的,但它仍会将目标 URL 传输到第三方服务,并且如果输入未被约束,可能会暴露私有 URL。
请遵守目标网站条款、机器人指令、版权、隐私和适用法律。保持请求量与实际用户任务相关,而不是将交互代理工具变成无人值守的批量爬虫。
入职检查列表
钉住并记录安装的软件包版本;
运行进程中的 MCP 工具发现测试;
将本地服务器添加到一个主机;
确认工具名称和 url 输入已出现;
调用允许的公共测试页面;
验证返回的源 URL 和有意义的 Markdown;
测试无效的方案和缺少的令牌;
启用域名、大小、超时和日志控制;
评估最终答案是否引用并遵循检索到的证据。
从一个读取工具开始。仅在发现是真实需求时添加搜索工具,并将站点爬取作为单独的异步工作流添加。这使用户和代理都能清楚了解成本、权限和失败行为。
给您的代理一个可验证的网络工具 有用的爬取 MCP 集成是一个狭窄的证据通道,而非不受限制的浏览。上述当前的 MCP 2.x 服务器提供了经过测试的工具合同,Nstproxy Crawl 处理页面检索,Claude Desktop 或 Cursor 提供主机体验。
使用 Nstproxy Crawl 定价 来选择适当的使用模型,然后使用自己的令牌验证一个代表性页面的端到端。只有在审计日志和批准行为正常工作后,才能扩大工具的域名范围或自主权。
常见问题解答
Ivy Lin
Sep. 4th 2026
立即访问住宅、数据中心、IPv6 与 ISP 高质量代理池。 创建免费账号并立即试用 ->