🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

给LangChain代理21个实时网页工具与无抓取MCP

Ava Wilson
Ava Wilson

Expert in Web Scraping Technologies

10-Jun-2026

关键要点:

  • LangChain代理通过一个客户端配置获得21个实时网页工具。 langchain-mcp-adapters包将LangChain应用程序连接到Scrapeless MCP服务器,并将整个工具表面——浏览器控制、页面抓取、谷歌搜索和趋势——返回为准备绑定的StructuredTool对象。
  • 托管路径上不需要Node。 将客户端指向https://api.scrapeless.com/mcp,通过可流式传输的HTTP与您的x-api-token连接;stdio路径(npx -y scrapeless-mcp-server)对于本地设置是相同的表面。
  • 工具在任何模型参与之前就可以工作。 get_tools()列出它们,而ainvoke()直接执行它们——在实时URL上执行scrape_markdown返回页面的markdown——因此布线无需LLM密钥即可进行测试。
  • 名字根据传输方式不同。 托管端点提供裸名称(browser_gotoscrape_markdowngoogle_search);stdio服务器将其命名为scrapeless_*。两种方式均为同样的21个工具。
  • 从工具到代理是一个构造函数。 将返回的工具绑定到任何LangChain聊天模型,代理可以在其推理循环中搜索、浏览和抓取实时网页。
  • 免费开始。 新的Scrapeless账户包括免费试用积分——在app.scrapeless.com注册。

您可以用它做什么

  • 读取实时网页的研究代理。 使用google_search进行发现,使用scrape_markdown提取干净的页面文本——代理循环的检索部分,无需构建抓取器。
  • 浏览器驱动代理。 十六个browser_*工具(创建、访问、单击、输入、滚动、截图、快照、等待)使代理能够以真实的反检测云浏览器会话进行操作。
  • 市场和趋势监控。 google_trends加上定期抓取将LangChain管道转变为监控服务。
  • 工具驱动的RAG。 按需以markdown格式抓取页面,而不是预先索引所有内容,让代理决定阅读内容。
  • 一个授权用于所有。 驱动抓取器API角色的相同Scrapeless API密钥驱动MCP工具表面。

为什么选择Scrapeless MCP服务器

MCP(模型上下文协议)为将工具交给代理提供标准接口,而LangChain通过官方适配器包与之通讯。在该协议的另一侧,Scrapeless MCP服务器将抓取基础设施作为21个类型工具公开:在抓取浏览器上的云浏览器会话、一次性页面抓取到HTML、Markdown或截图,以及谷歌搜索和趋势。代理获得能力;渲染、反检测和代理路由仍然保留在服务器端。

这一组合很重要,因为LangChain代理的效用取决于其工具。一个可以规划但无法抓取实时页面的模型只能使用训练数据回答;拥有这种工具表面的同一模型能够读取其正在推理的网页。


前提条件

  • Python 3.10+和虚拟环境。
  • 一个Scrapeless账户和API密钥——在app.scrapeless.com注册。
  • 对于可选的stdio传输:Node.js 18+(托管HTTP路径不需要Node)。
bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

连接

1. 安装适配器

bash Copy
pip install langchain-mcp-adapters langchain-core

2. 配置客户端并验证工具数量

托管端点是最快的路径——纯HTTPS,通过x-api-token头进行身份验证:

python Copy
# handshake.py — 连接LangChain与Scrapeless MCP服务器,列出工具
import asyncio
import os

from langchain_mcp_adapters.client import MultiServerMCPClient


async def main():
    client = MultiServerMCPClient({
        "scrapeless": {
            "transport": "streamable_http",
            "url": "https://api.scrapeless.com/mcp",
            "headers": {"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
        }
    })
    tools = await client.get_tools()
    names = sorted(t.name for t in tools)
    print(f"工具数量: {len(names)}")
    print("名称:", ", ".join(names))

asyncio.run(main())

正确的握手会打印 21 个工具

browser_click, browser_close, browser_create, browser_get_html, browser_get_text, browser_go_back, browser_go_forward, browser_goto, browser_press_key, browser_screenshot, browser_scroll, browser_scroll_to, browser_snapshot, browser_type, browser_wait, browser_wait_for, google_search, google_trends, scrape_html, scrape_markdown, scrape_screenshot

3. 或者在本地通过stdio运行服务器

相同的表面船只作为本地设置的npm包 — 标准的MCP配置结构,密钥作为环境变量传递:

json Copy
{
  "scrapeless": {
    "command": "npx",
    "args": ["-y", "scrapeless-mcp-server"],
    "transport": "stdio",
    "env": { "SCRAPELESS_KEY": "your_api_token_here" }
  }
}

需要预期的一个传输级别的区别是:stdio服务器给其工具名称命名空间为scrapeless_*,而托管端点直接提供其功能。通过名称查找工具的代码应与后缀匹配。

在免费计划中获取您的API密钥:app.scrapeless.com


您实际上如何使用它:调用工具,然后交给代理

返回的对象是普通的LangChain StructuredTool,意味着它们是直接运行的 — 不需要模型。最简要的证明连接从头到尾工作:

python Copy
# invoke_tool.py — 通过适配器直接执行一个MCP工具
import asyncio
import os

from langchain_mcp_adapters.client import MultiServerMCPClient


async def main():
    client = MultiServerMCPClient({
        "scrapeless": {
            "transport": "streamable_http",
            "url": "https://api.scrapeless.com/mcp",
            "headers": {"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
        }
    })
    tools = {t.name: t for t in await client.get_tools()}
    result = await tools["scrape_markdown"].ainvoke(
        {"url": "https://www.scrapeless.com/zh/blog/best-llm-scrapers-2026"}
    )
    text = result if isinstance(result, str) else str(result)
    print(f"scrape_markdown 返回了 {len(text):,} 字符的markdown")

asyncio.run(main())

在实时运行中,这返回了完整的文章作为markdown — 从一次工具调用中获取数万个干净页面文本字符。

将工具绑定到代理的方式与LangChain中一贯的构造函数相同 — 将您的堆栈使用的任何聊天模型带来(模型API密钥是本指南未涵盖的前提条件):

python Copy
# agent.py — 将MCP工具附加到LangChain代理(需要模型API密钥)
from langchain.agents import create_agent

agent = create_agent(model, tools)  # `tools` 来自client.get_tools(), `model` = 你的聊天模型
result = agent.invoke({
    "messages": [{"role": "user", "content": "搜索Scrapeless并总结顶部结果。"}]
})

从代理的角度来看,工具只是它可能调用的函数:它计划、选择google_search、读取、选择scrape_markdown、再次读取,并从实时内容中回答。


Scrapeless MCP工具表面

组别 工具 它们的功能
浏览器会话 browser_create, browser_goto, browser_click, browser_type, browser_press_key, browser_scroll, browser_scroll_to, browser_go_back, browser_go_forward, browser_wait, browser_wait_for, browser_snapshot, browser_get_html, browser_get_text, browser_screenshot, browser_close 一步一步操作云反检测浏览器 — 会话在调用间持续
页面抓取 scrape_html, scrape_markdown, scrape_screenshot 以原始HTML、干净的markdown或图像一键获取任何URL
Google数据 google_search, google_trends 结构化搜索结果和趋势数据

您将收到什么

工具结果以MCP内容部分的形式到达,适配器将其暴露给LangChain — 对于抓取工具,负载是页面本身。上面的scrape_markdown调用返回渲染的文章作为可供分割器、总结器或代理自身上下文窗口使用的markdown文本。浏览器工具以相同方式返回其观察结果(快照、提取文本、截图),这使得在代理循环中进行多步骤浏览成为现实。


结论:一个配置块,一个具备网络能力的代理

集成确实很小:安装适配器,给MultiServerMCPClient托管的URL和您的令牌,然后get_tools()为LangChain提供21种实时网页功能。通过工具数量进行验证,通过一个直接的ainvoke证明,然后将相同的列表绑定到您的代理。 Mastra集成指南展示了将同一服务器连接到TypeScript代理框架的方式 — 相同的表面,不同的主机。

准备好让您的代理连接实时网络了吗?

加入我们的社区,申请一个免费计划,并与正在构建代理管道的开发者联系:Discord · Telegram
app.scrapeless.com 注册以获取免费试用积分——定价 覆盖当前的服务等级——并将您的 LangChain 代理指向它们应该读取的页面。


常见问题

问:我需要 Node.js 吗?

仅对 stdio 传输需要,它会在本地生成 npm 包。托管的 https://api.scrapeless.com/mcp 端点是纯 HTTPS——Python 仅堆栈可在无 Node 的情况下使用它。

问:我该如何进行身份验证?

托管的端点以 x-api-token: <您的密钥> 作为请求头;stdio 服务器从其环境中读取 SCRAPELESS_KEY。两个传输使用相同的密钥——在 app.scrapeless.com 免费计划上创建。

问:我该如何验证集成是否正确连接?

有两个检查,都是无模型的:get_tools() 返回 21 个工具,而对真实 URL 进行直接 ainvokescrape_markdown 返回页面的 markdown 格式。如果两个都通过,代理绑定就是剩下的唯一步骤。

问:为什么我本地服务器和托管端点之间的工具名称不同?

stdio 包将名称命名空间为 scrapeless_*;托管的端点则直接提供它们。如果您的代码需要在两者之间工作,请匹配后缀。

问:我可以不使用代理就用这些工具吗?

可以——它们是 StructuredTool 对象,可以通过 ainvoke 独立运行,这也使它们可以在普通的 LangChain 链和 LangGraph 节点中使用,而不仅仅是代理中。

问:通过这些工具访问网站是否合法?

这些工具通过 Scrapeless 基础设施获取公开可访问的页面。不同的司法管辖区和网站条款的规则各异——请查看您代理读取的网站的服务条款,并为您的用例咨询律师。绝不要收集受 GDPR 或 CCPA 保护的个人数据。

问:运行的费用是多少?

工具调用与平台其余部分使用相同的基于使用量的 Scrapeless 账户,并且新账户开始时会有免费试用积分。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录