通过无废MCP服务器增强Databricks
Lead Scraping Automation Engineer
TL;DR:
- Databricks代理可以对您的数据进行推理,但在您连接一个工具之前无法访问实时网络 — Scrapeless MCP服务器是最简洁的方式。 Agent Bricks和Mosaic AI代理在模型、Unity Catalog函数及您注册的任何工具上进行规划。将一个指向Scrapeless MCP服务器,代理即可获得实时Google搜索、JavaScript渲染以及完整的反检测云浏览器,而无需手动编写抓取工具。
- Databricks通过一个Unity Catalog HTTP连接以及一个托管代理访问外部MCP服务器。 您将
https://api.scrapeless.com/mcp注册为Unity Catalog连接,并选择“Is mcp connection”选项,将Scrapelessx-api-token存储为连接凭据,Databricks会在https://<workspace-host>/api/2.0/mcp/external/<connection_name>处将其暴露给代理代码。 DatabricksMCPClient.list_tools()将界面连接到代理代码。 使用代理URL和WorkspaceClient构造一个DatabricksMCPClient,调用list_tools(),将结果转换为您的代理框架的工具类型,代理便可获得Google SERP抓取工具、趋势抓取工具、HTML/Markdown/截图辅助工具以及16个浏览器自动化工具。- Scrapeless MCP服务器提供21个工具。 针对
https://api.scrapeless.com/mcp的实时tools/list返回google_search、google_trends、scrape_html、scrape_markdown、scrape_screenshot以及16个browser_*工具 — 服务器以裸名称形式发布它们,每个客户端在加载时添加自己的命名空间。 - 住宅代理和反检测在云端运行。 每个工具调用都通过Scrapeless反检测云浏览器路由,并且在195多个国家提供住宅代理,因此代理可以从商业网站获取可渲染、可用的响应,在Databricks运行环境内部无需设置代理或指纹。
- 标准输入或HTTP可流传输。 对于本地代理开发,您可以使用
npx启动服务器;对于部署的Mosaic AI端点,您指向可流传输的HTTP端点,而这正是Unity Catalog连接所封装的内容。 - 免费开始。 新的Scrapeless账户包括免费的抓取浏览器运行时 — 请在 app.scrapeless.com 注册。
介绍:为Databricks代理提供实时的网络视图
Databricks Agent Bricks和Mosaic AI代理框架使您能够构建能够对数据湖进行推理的代理 — Unity Catalog表、向量索引、管控的函数。代理调用您注册的工具,其他的则不做。它无法独立访问当前存在的网络。它的知识停止在模型的训练截止点以及您放在它面前的任何内容,因此像“今天这个竞争对手收取多少钱”或“此查询当前的顶级结果是什么”等问题在工作区内没有答案。
这个界限是故意设定的:代理对外部世界的接触恰好是与之附加的工具集。因此,工具层就成为添加实时网络访问的地方,而模型上下文协议(MCP)是实现这一点的标准、框架无关的方法。Databricks提供一流的MCP支持 — 用于Unity Catalog函数和向量搜索的托管服务器,以及用于外部第三方MCP服务器的托管代理路径。外部MCP服务器成为代理可以调用的一组工具,遵循与工作区其他部分相同的Unity Catalog连接模型。
这篇文章通过外部服务器路径将Scrapeless MCP服务器接入Databricks代理。一个Unity Catalog连接和一个DatabricksMCPClient为代理提供Google搜索、JavaScript渲染和完整的反检测云浏览器,代理可以通过您已经传递给Mosaic AI代理的相同提示访问。有关通过TypeScript客户端访问同一Scrapeless表面的详细信息,请参见Mastra集成。
您可以用它做什么
- 在Mosaic AI代理中进行实时SERP研究。 请求代理为一个查询运行
google_search并将顶部自然结果以JSON格式返回,这样研究就在您的Databricks应用内部进行,而不是在单独的浏览器标签中。 - 收集竞争对手与定价快照并反馈到Delta表中。 在提示中输入一个URL,让代理渲染页面并提取计划名称、价格和特征,将其结构化记录写回到数据湖中。
- 文档和变更日志查找以支撑响应。 让代理提取库的当前文档或发布说明作为干净的markdown,并根据渲染的文本进行推理,而不是依赖于API的过时记忆。
- 市场和趋势检查,适用于规划代理。 使用
google_trends在目标地区获取某个主题的兴趣信号,然后用当前证据来引导预测、内容计划或实验想法。 - JavaScript 页面提取到类型记录中。 将代理指向单页面应用;云浏览器对其进行填充,代理将结果解析为您的下游任务使用的对象。
- 多步骤浏览器流程。 链接
browser_goto、browser_click、browser_type和browser_scroll,使代理可以进行分页、展开面板或在提取之前逐步通过向导。 - 在一个代理轮次中进行搜索然后阅读管道。 将
google_search与scrape_markdown结合,使代理找到排名前列的结果,读取每一个结果并进行总结,而无需离开代理循环。
为什么选择无刮取的 MCP 服务器
无刮取的 MCP 服务器是一个可定制的反检测桥梁,连接 AI 代理和实时网络。对于 Databricks 代理特别地,它带来了:
- 一个具有 JavaScript 渲染的反检测云浏览器。 页面在完整的 无刮取爬虫浏览器 中填充后再进行提取,因此 SPA、无限滚动的供稿和惰性加载的面板成为
browser_goto和browser_get_html的第一类目标。 - 来自195多个国家的住宅代理。 地理绑定查询返回本地用户所看到的列表,代理出口完全在无刮取一侧处理,而不是在您的 Databricks 网络内部。
- 一个外部端点,无需托管爬虫代码。 该服务器作为一个托管的 HTTP 端点在
https://api.scrapeless.com/mcp上运行;Databricks 将其包装在 Unity Catalog 连接中,因此没有任何构建、作为 Databricks 应用程序部署或维护的内容,超出连接本身。 - 21 个工具涵盖 SERP、无状态爬取和完整浏览器自动化。
google_search和google_trends涉及 SERP 数据,scrape_html、scrape_markdown和scrape_screenshot涉及一次性页面获取,16 个browser_*工具涵盖有状态导航、点击、输入、滚动和截图。 - 与其他 Databricks 工具一样进行管理。 由于服务器通过 Unity Catalog HTTP 连接到达,因此对它的访问使用与其他连接相同的权限模型,并且 API 密钥存储在连接中,而不是在代理代码中。
免费的计划足以注册连接和运行真实提示;当您超出免费计划时,请在 定价页面 比较配额。请在 app.scrapeless.com 的免费计划上获取您的 API 密钥。
前提条件
- 一个提供 Mosaic AI Agent Framework 的 Databricks 工作区,并有创建 Unity Catalog 连接的权限。外部 MCP 路径使用管理代理来处理您注册的连接。
- 代理的 LLM 的模型服务端点。 在进行任何工具调用之前,代理循环需要一个有效的模型 - 一个 Databricks 基础模型端点或外部模型。
- 一个无刮取帐户和 API 密钥 — 请在免费计划中注册,访问 app.scrapeless.com,并从 设置 → API 密钥管理 复制密钥。
- 在您的笔记本或作业中安装代理依赖项:
mcp、databricks-mcp、databricks-sdk、databricks-agents和mlflow。 - 对 Python 和 Databricks 笔记本有基本了解 — 设置只需一个连接加上一个小型客户端定义。
注意:注册 Unity Catalog 连接和调用管理代理需要一个活跃的 Databricks 工作区。以下步骤展示了这一流程的文档;它们所暴露的无刮取工具表面在验证部分直接针对
https://api.scrapeless.com/mcp进行了验证。
将无刮取连接到 Databricks 代理
设置分为五个步骤;每个步骤都是独立可验证的。
1. 安装客户端包
在您的笔记本或代理项目中,安装 MCP 客户端和 Databricks 代理依赖项:
bash
pip install mcp databricks-mcp "databricks-sdk[openai]" databricks-agents mlflow
databricks-mcp 提供与管理代理通信的 DatabricksMCPClient,而 mcp 提供底层模型上下文协议原语(ClientSession,可流式传输的 HTTP 传输) — 这些在您直接连接到端点时为每个工具调用构建 JSON-RPC 2.0 请求。
2. 将Scrapeless注册为Unity Catalog连接(存储凭证)
Databricks代理通过Unity Catalog HTTP连接访问外部MCP服务器。创建一个指向Scrapeless端点的连接,将其标记为MCP连接,并将Scrapeless密钥保存为承载式头凭证。主机是工作区之间唯一变化的字段:
sql
-- Scrapeless MCP服务器的Unity Catalog HTTP连接。
-- 在用户界面中将其标记为MCP连接(“是否为mcp连接”),
-- 并将Scrapeless密钥作为x-api-token头凭证提供。
CREATE CONNECTION scrapeless_mcp
TYPE HTTP
OPTIONS (
host 'https://api.scrapeless.com',
base_path '/mcp',
bearer_token 'your_api_token_here'
);
注册后,Databricks通过其托管代理在 https://<workspace-host>/api/2.0/mcp/external/scrapeless_mcp 向代理代码公开服务器——代理代码从不持有Scrapeless令牌;它向Databricks进行身份验证,而Databricks在代理到Scrapeless时附加存储的凭证。
3. 或者直接通过HTTP可流式连接端点
当您在已部署代理之外进行集成原型制作时——例如本地脚本、笔记本——您可以直接使用标准MCP SDK与Scrapeless端点进行通信,而不是通过代理。将密钥作为x-api-token头传递在可流式HTTP传输中:
python
# pip install mcp
import asyncio, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
URL = "https://api.scrapeless.com/mcp"
async def main():
headers = {"x-api-token": os.environ["SCRAPELESS_KEY"]}
async with streamablehttp_client(URL, headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print([t.name for t in tools.tools])
asyncio.run(main())
Scrapeless MCP服务器从stdio启动中的 SCRAPELESS_KEY 读取其密钥,但在HTTP可流式中,同样的值作为x-api-token头发送——两者都携带相同的密钥。将其保存在环境中(export SCRAPELESS_KEY=...),而不是硬编码。服务器源代码位于Scrapeless MCP服务器代码库。
4. 列出工具并将其附加到代理
在代理代码中,针对托管代理URL构造DatabricksMCPClient和WorkspaceClient,然后列出工具。将返回的工具定义转换为代理框架的工具类型——Mosaic AI代理通常作为MLflow的ChatAgent在LangGraph图上编写,因此每个MCP工具变成ChatDatabricks模型上的绑定工具:
python
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
workspace = WorkspaceClient()
proxy_url = f"{workspace.config.host}/api/2.0/mcp/external/scrapeless_mcp"
mcp_client = DatabricksMCPClient(server_url=proxy_url, workspace_client=workspace)
tools = mcp_client.list_tools() # 21个由连接管理的Scrapeless工具
# 将工具架构绑定到代理模型,然后构建代理图。
tool_specs = [
{"name": t.name, "description": t.description, "input_schema": t.inputSchema}
for t in tools
]
DatabricksMCPClient.list_tools()返回服务器报告的相同工具定义——名称、描述和输入架构——因此代理的规划器可以看到完整的Scrapeless表面。您将这些架构绑定到模型,就像您绑定任何Mosaic AI工具一样,然后在模型选择它时通过mcp_client.call_tool(name, arguments)调用该工具。
5. 通过列出21个工具来验证
列出工具并打印其名称确认握手已完成,服务器正在报告其完整表面:
python
tools = mcp_client.list_tools()
print(len(tools), [t.name for t in tools])
输出列出服务器的21个工具,以简单名称表示——谷歌数据工具(google_search, google_trends),一次性页面帮助者(scrape_html, scrape_markdown, scrape_screenshot),以及云浏览器原语(browser_create, browser_goto, browser_get_html, browser_get_text, browser_click, browser_type, browser_press_key, browser_scroll, browser_scroll_to, browser_screenshot, browser_snapshot, browser_wait, browser_wait_for, browser_go_back, browser_go_forward, browser_close)。服务器以没有前缀的方式发送它们;无论客户端如何加载它们——Databricks代理、原始MCP SDK、TypeScript适配器——都在其之上应用自己的命名空间。
您实际上如何使用它:提示您的代理
连接注册并绑定工具后,您可以通过与 Databricks 代理对话来获取实时网络数据,而不是手动编写工具调用。代理读取 Scrapeless MCP 服务器暴露的工具列表,并根据需要选择 google_search、scrape_markdown 或 browser_* 工具,从自然语言任务中一个接一个地组合它们。您不需要在您的端编写工具 JSON;您可以像调用 Mosaic AI 代理一样在笔记本单元格或已部署的端点上调用代理。
您可以粘贴的提示
| 提示 | 代理的操作 |
|---|---|
“查找 lakehouse vs warehouse 2026 的谷歌搜索结果,并将其作为 JSON 返回。” |
google_search 带 q、hl、gl → 输入结果行。 |
“现在在美国,data engineering 的搜索主题有哪些上升趋势?” |
google_trends。 |
“以干净的 Markdown 格式获取 https://example.com/docs 的页面。” |
scrape_markdown。 |
“打开 https://pricing.example.com,这是一个 JavaScript 应用程序 — 渲染它并提取计划名称、价格和特性作为 JSON。” |
browser_create → browser_goto → browser_get_html → 输入提取。 |
“比较 https://a.example.com/pricing 和 https://b.example.com/pricing 的定价页面,并告诉我它们的不同之处。” |
browser_create → browser_goto (A) → browser_get_html → browser_goto (B) → browser_get_html → 差异。 |
“获取 https://example.com/landing 的全页截图。” |
scrape_screenshot。 |
“打开 https://example.com/jobs,等待列表加载,快照页面,然后将每个职位名称和地点提取为 JSON。” |
browser_create → browser_goto → browser_wait_for → browser_snapshot → 输入提取 → browser_close。 |
运作示例
您编写(在笔记本单元格中的单个代理调用):
python
response = agent.predict({
"messages": [{
"role": "user",
"content": "使用 google_search 查找 'databricks mosaic ai agent framework' 的顶级结果,并将前 3 个作为 {title, link} 的 JSON 数组返回。",
}]
})
print(response)
代理的计划(用简单英语描述):
- 调用
google_search,参数为q: "databricks mosaic ai agent framework",hl: "en",gl: "us"。 - 接收结果行数组,并读取
position、title和link字段。 - 按
position排序,保留前 3 行。 - 将每一行映射到
{title, link}对象。 - 将 JSON 数组作为代理的答案返回。
您得到的返回(示例格式 — 代理处理下来类似于这些行):
json
[
{ "title": "Mosaic AI Agent Framework — Databricks docs", "link": "https://example.com/agent-framework" },
{ "title": "Build and deploy an agent on Databricks", "link": "https://example.com/build-agent" },
{ "title": "Agent Bricks overview", "link": "https://example.org/agent-bricks" }
]
// 字段名称与 google_search 行形状匹配;值为示例数据。
无状态数据工具将其有效载荷作为体积以 Response:\n\n 前缀返回;代理在解析 JSON 之前会解开该前缀,因此您在答案中 nunca 看到它。
形状提示
| 说这个 | 效果 |
|---|---|
| “…来自德国” / “…德国结果” | 通过 proxyCountry 路由出站并在搜索中设置 gl=de。 |
| “…以 Markdown 格式,跳过导航和样板” | 选择 scrape_markdown 以便获取干净的文本有效载荷,而不是原始 HTML。 |
| “…先渲染,它是一个单页应用” | 强制使用 browser_* 路径,以便提取在水合 DOM 上运行。 |
| “…仅前 5 个” | 将返回的数组修剪为前五行。 |
| “…包括每个结果的摘要” | 在输出行中保留 snippet 字段。 |
| “…结束后关闭会话” | 添加最后的 browser_close,并带上来自 browser_create 的 sessionId。 |
通过免费计划获取您的 API 密钥:app.scrapeless.com
以下内容是幕后参考 — 工具表面、确切的返回形状,以及代理为您处理的行为。
Scrapeless MCP 工具表面
一旦连接成功,代理将看到 21 个工具,覆盖 SERP 数据、无状态抓取和完整的反检测云浏览器控制。下面的名称是服务器的基本名称;加载它们的客户端会应用自己的命名空间。
| 工具 | 功能 |
|---|---|
google_search |
运行 Google 搜索(q、hl、gl)并返回结构化的自然结果行。 |
google_trends |
获取某个查询的 Google Trends 兴趣数据。 |
scrape_html |
获取 URL 并返回其渲染的 HTML。 |
scrape_markdown |
获取 URL 并返回页面的干净 Markdown。 |
scrape_screenshot |
捕获目标 URL 的屏幕截图。 |
browser_create |
在反检测云浏览器上打开会话。 |
browser_goto |
导航会话到一个 URL。 |
browser_click |
点击实时页面中的元素。 |
browser_type |
在输入或可编辑字段中输入文本。 |
browser_get_text / browser_get_html |
读取页面的文本或 HTML。 |
browser_screenshot |
捕获实时会话的屏幕截图。 |
browser_snapshot |
返回页面的可访问性/结构快照。 |
browser_wait / browser_wait_for |
等待固定时间间隔,或等待条件/元素。 |
browser_scroll / browser_scroll_to |
滚动页面,或滚动到特定元素。 |
browser_go_back / browser_go_forward |
在会话历史中移动。 |
browser_press_key |
向页面发送键盘按键。 |
browser_close |
结束云浏览器会话。 |
要更全面地了解服务器可以驱动的内容,请参阅Srapeless MCP 服务器概述,该概述从产品角度出发,完整的Scrapeless 文档涵盖了每个工具的参数。
您获得的回报
google_search 调用返回一个编码为 JSON 的有机结果行数组。每行携带相同的键,因此代理可以直接映射到标题、链接和摘要:
json
// 字段名称反映 google_search 工具的输出;值是示例数据。
[
{
"position": 1,
"title": "在 Databricks 上构建代理:完整指南",
"link": "https://example.com/databricks-agents",
"snippet": "逐步指南,介绍如何在 Mosaic AI Agent Framework 上构建和部署代理。",
"source": "example.com"
},
{
"position": 2,
"title": "将代理连接到外部数据",
"link": "https://example.org/agent-data",
"snippet": "如何在提取数据之前渲染 JavaScript 页面。",
"source": "example.org"
}
]
开始运行提示后,一些诚实的观察:
- 像
google_search和scrape_markdown这样的无状态工具返回带有前缀Response:\n\n的主体,后面是 JSON 有效负载;代理会自动解包该前缀,因此您可以直接使用数据,而不是包装。 browser_*工具返回纯文本,没有Response:\n\n前缀。- 工具参数采用驼峰命名法:将
sessionId、proxyCountry和类似字段的名称传递过来。 proxyCountry是请求,而不是保证——它可以依赖于您帐户上配置的区域,因此在地理定位重要时,请确认出口区域。- 工具输出中的值依赖于内容:结果计数、排序和摘要文本会根据实时查询有所变化。
结论:从 Databricks 搜索、渲染和浏览
整个集成归结为一个 Unity Catalog 连接加上自然语言提示。通过将 Scrapeless 注册为 MCP 连接,DatabricksMCPClient.list_tools() 提供 21 个工具给您的代理,而 API 令牌保存在连接中而不是代码中,让 Databricks 代理获得实时 Google 搜索、JavaScript 渲染和完整的反检测云浏览器——正是湖屋无法单独提供的网络层。您描述任务;代理选择工具。
如果您正在连接其他客户端,同样的 Scrapeless MCP 服务器也可以集成到它们中:请参阅Mastra 集成 获取 TypeScript 路径,以及Pi Agent 集成 获取另一个代理运行时的信息。将您的 API 密钥保存在 Unity Catalog 连接中,注册一次端点,列出工具,让代理选择。完整参考请见docs.scrapeless.com。
准备好构建您的 AI 驱动数据管道了吗?
加入我们的社区以声明免费的计划,并与正在构建 Databricks + Scrapeless MCP 代理的开发人员联系:Discord · Telegram。
在 app.scrapeless.com 注册以获取免费的抓取浏览器运行时,并将上述集成调整到您的 Databricks 代理所需的 SERP、页面和区域。完整参考请见docs.scrapeless.com。
常见问题
问:为什么 Databricks 代理需要 MCP 服务器才能访问网络?
因为Mosaic AI代理只能调用您注册的工具,并且没有内置的网络搜索或浏览器。MCP是添加该能力的标准、框架无关的方法,Databricks通过受管代理支持外部MCP服务器。连接Scrapeless可以让代理在一次操作中获得实时Google搜索、渲染页面访问和完整的反检测云浏览器。
问:Databricks如何连接外部MCP服务器如Scrapeless?
通过标记为MCP连接的Unity Catalog HTTP连接。您将https://api.scrapeless.com/mcp注册为连接,将Scrapeless的x-api-token存储为凭证,Databricks在https://<workspace-host>/api/2.0/mcp/external/<connection_name>处将其暴露给代理代码。代理代码使用DatabricksMCPClient来访问该代理URL,因此Scrapeless令牌保持在连接中,并且不会出现在代理中。
问:哪个环境变量或头部保存Scrapeless密钥?
服务器的stdio启动读取SCRAPELESS_KEY;HTTP端点从x-api-token头读取相同的值。当您注册Unity Catalog连接时,您将该密钥存储一次作为连接凭证,因此部署的代理代码不会直接处理它。
问:Scrapeless MCP服务器暴露多少工具,是什么?
21个工具:google_search和google_trends用于SERP数据;scrape_html、scrape_markdown和scrape_screenshot用于一次性页面获取;以及16个browser_*工具(browser_create、browser_goto、browser_get_html、browser_get_text、browser_click、browser_type、browser_press_key、browser_scroll、browser_scroll_to、browser_screenshot、browser_snapshot、browser_wait、browser_wait_for、browser_go_back、browser_go_forward、browser_close)用于有状态云浏览器控制。服务器以裸名称发出它们;加载它们的客户端应用自己的命名空间。
问:我需要将Scrapeless托管为Databricks应用吗?
不需要。将MCP服务器托管为Databricks应用是为了您自己运行的服务器。Scrapeless是一个受管的外部端点,因此您将其注册为Unity Catalog HTTP连接,并通过受管的外部MCP代理访问它——您无需在自己的侧面部署或持续运行任何东西。
问:我可以在未部署的代理外部测试连接吗?
可以。将标准MCP Python SDK指向https://api.scrapeless.com/mcp并添加x-api-token头,调用initialize然后list_tools(),您将看到可通过代理获得的同样的21个工具。该直接路径是确认您的密钥和端点的最快方法,然后再注册Unity Catalog连接。
问:这需要特定的模型吗?
不需要。代理的模型是您接入的任何Databricks服务端点——基础模型端点或外部模型。Scrapeless工具是与模型无关的;选择一个可以很好处理工具调用的模型,而代理无论提供者如何都以相同的方式组合Scrapeless工具。
问:通过代理进行网络爬虫是合法的吗?
抓取公共可用数据通常是允许的,但您对如何使用这些数据负责。审查每个网站的服务条款并尊重robots.txt,并记住,关于个人数据的规则和访问因管辖区而异。如有疑问,请咨询您特定用例的法律建议。
问:可以在没有Databricks的情况下使用这个吗?
可以。Scrapeless MCP服务器是一个标准的MCP服务器,因此任何与MCP兼容的客户端都可以调用它——或者您可以通过JSON-RPC直接驱动它(initialize,然后tools/list和tools/call)。Databricks是它的一个主机,并不是必需的。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



