Important
此功能在 Beta 版中。 帐户管理员可以从帐户控制台 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
MCP 服务是一个 Unity 目录安全对象,用于注册外部 MCP 服务器并控制代理的使用方式。 可以通过其三级名称对其进行寻址, catalog.schema.mcp_service并通过 Unity AI 网关(用于管理 AI 流量的控制平面)调用它。
将 MCP 服务器注册为 Unity 目录安全对象意味着使用保护其他 Unity 目录资产的相同基元对其进行管理。 这些包括:用于控制谁可以调用它的授权设置、用于限制其提供哪些工具的工具选择、用于允许或拒绝单个工具调用的服务策略,以及用于跟踪每一次调用的审计和使用日志。
有两种方法可以使用 MCP 服务:
| 方法 | 何时使用 |
|---|---|
| 使用 Databricks 提供的 MCP 服务 | 你需要一个通用软件即服务(SaaS)工具(Slack、GitHub、Google Drive 等),且没有设置。 没有要托管的服务器,也没有要创建的连接。 |
| 注册自己的外部 MCP 服务器 | 你有一个自托管或第三方 MCP 服务器,可将其作为 Unity Catalog 安全对象进行治理。 |
MCP 服务将代理连接到外部服务。 对于Azure Databricks数据,请使用托管 MCP 服务器;若要托管自己的工具,请使用自定义 MCP 服务器。
Tip
有关完整的工作示例(注册 GitHub MCP 服务器、限制其工具、阻止使用服务策略的破坏性调用和审核使用情况),请遵循教程:控制编码代理GitHub MCP 访问权限。
工作原理
代理通过其 Unity AI 网关 URL 调用 MCP 服务,每个调用都流经相同的受治理路径:
- 调用:代理将 MCP 请求发送到服务的 Unity AI 网关 URL,通过调用方Azure Databricks标识进行身份验证。
-
授权和治理:网关会检查调用方是否在 Unity Catalog 中对 MCP 服务具有
EXECUTE。 该服务仅公开 所选 的工具,并评估任何附加 的服务策略,这些策略可以允许、拒绝或要求批准调用。 - 使用托管凭据的代理:请求通过服务的 HTTP 连接转发到外部 MCP 服务器。 Azure Databricks存储凭据并处理 OAuth 流和令牌刷新,因此代理永远不会看到它们。
- 日志使用情况、审核和跟踪:系统表中记录每个调用,以便可以监视一段时间内 的使用情况 和审核活动。
Requirements
- 已启用 Unity Catalog 的工作区
- 若要将外部 MCP 服务器作为 MCP 服务进行管理,请为帐户启用 Unity AI 网关 Beta 版和 托管 MCP 服务器 预览版。 请参阅 Manage Azure Databricks 预览版。
- 支持模型服务的区域中的工作区。 请参阅 模型服务功能可用性。
Databricks 提供的 MCP 服务
Azure Databricks在通用 SaaS 应用程序的架构中system.ai提供现成的 MCP 服务,因此代理无需托管或注册自己的 MCP 服务器即可访问这些工具。 每一个都是一个内置的 MCP 服务,你可以通过其 Unity Catalog 名称来调用它。 若要授予代理访问权限,请在该服务上授予 EXECUTE(例如 system.ai.github),无需设置连接。 内置服务随附由平台管理的工具和内置的服务策略,例如用于阻止写入操作的策略。 使用授权来管理它们,而不是使用自定义工具选择或策略函数。
| MCP 服务 | 连接到 |
|---|---|
system.ai.slack |
Slack |
system.ai.github |
GitHub |
system.ai.atlassian |
Jira 和 Confluence |
system.ai.google_drive |
Google Drive |
system.ai.google_calendar |
Google 日历 |
system.ai.gmail |
Gmail |
system.ai.sharepoint |
Microsoft SharePoint |
对于 Google Drive、Gmail、Google Calendar 或 SharePoint,这些内置服务可为你处理 OAuth,无需应用注册。
注册外部 MCP 服务器
在五个步骤中将自己的外部 MCP 服务器注册为 MCP 服务:
- 创建与 MCP 服务器的 Unity 目录连接。
- 从该连接创建 MCP 服务。
- 如果连接使用每个用户的 OAuth,则进行身份验证。
- 授予访问权限给你的队友。
- 调用服务,然后使用工具选择和服务策略 对其进行管理 。
外部 MCP 服务器必须使用 可流式传输 HTTP 传输机制。 需要以下权限:
- 若要创建连接,请
CREATE CONNECTION在创建该连接的架构上。 - 要创建 MCP 服务,需要对父目录和架构具有
USE CATALOG和USE SCHEMA权限,对该架构具有CREATE SERVICE权限,并对 MCP 服务引用的连接具有USE CONNECTION权限。 - 若要调用 MCP 服务,您必须在该 MCP 服务上具有
EXECUTE,在其父目录和架构上具有USE CATALOG和USE SCHEMA,并且已分配到发出请求的工作区。
Warning
调用 MCP 服务不需要 对底层连接具有任何权限——在 MCP 服务上具有 EXECUTE 即可。 不向最终用户授予 USE CONNECTION :它允许他们直接通过连接调用外部服务器,或在其上注册自己的 MCP 服务,绕过工具选择、服务策略和 MCP 服务的审核。 保留服务作者和管理员的连接访问权限。
创建连接
MCP 服务引用了一个 Unity Catalog HTTP 连接,该连接可安全存储外部服务器的端点和凭据。 Azure Databricks 在其前端运行一个托管代理来处理身份验证和令牌刷新,从而无需在代理程序或客户端代码中嵌入凭据。
在 架构 级别创建连接,使其与 MCP 服务一起管理。 可以使用以下步骤提前设置它,也可以在 创建 MCP 服务 时单击“ 创建新连接”来创建它。 支持在元存储级别建立连接,但不建议这样做。
选择以下两种方法之一:
创建 HTTP 连接
对于任何 MCP 服务器,包括自承载服务器或第三方服务器:
- 转到 目录>连接>创建连接。
- 选择 HTTP 作为连接类型。
- 输入 MCP 服务器 URL。
- 选择身份验证类型:持有者令牌、OAuth M2M、OAuth U2M 或动态客户端注册。 有关设置详细信息,请参阅 “创建与外部服务的连接”。
对于托管的 OAuth 提供方——Glean、GitHub、Atlassian 和 Slack——凭据由 Azure Databricks 管理,因此你无需注册自己的 OAuth 应用。 请参阅 托管 OAuth 提供程序。
从市场安装
使用来自 Azure Databricks Marketplace 的精选 MCP 服务器,并使用预配置的连接。 请参阅 “获取对外部 MCP 服务器的访问权限”。
创建 MCP 服务
可以从 UI 或使用 REST API 创建 MCP 服务。 Beta 版不支持 MCP 服务的 SQL DDL。
UI
- 在Azure Databricks工作区中,转到 AI 网关>MCP>注册 MCP 服务器,或转到目录,选择架构,然后单击“创建>MCP 服务”。
- 输入 MCP 服务的目录、架构和名称。 创建后无法更改该名称。
- 选择与 MCP 服务器的现有 HTTP 连接,或单击“ 创建新连接 ”以创建一个。 在架构下浏览以选择架构级连接;若要使用元存储级连接,请关闭在架构下浏览。
- 在 “工具”下,选择要提供的工具。 请参阅 “选择公开的工具”。
- (可选)添加描述 MCP 服务的注释。
- 单击 “创建” 。 MCP 服务将发布到指定的目录和架构。
REST API
创建引用现有 Unity 目录 HTTP 连接的 MCP 服务。 将 parent 设置为目标架构,将 mcp_service_id 设置为服务名称:
databricks api post \
"/api/2.1/unity-catalog/mcp-services?parent=schemas/main.default&mcp_service_id=my_mcp" \
--json '{
"comment": "External MCP server",
"config": {
"connection": {
"name": "connections/main.default.my_connection"
},
"include_tool_selectors": []
}
}'
include_tool_selectors 决定服务提供哪些工具。 空列表公开所有工具。 请参阅 “选择公开的工具”。
使用 PATCH 请求更新现有 MCP 服务,并将 update_mask 字段命名为要更改的字段:
databricks api patch \
"/api/2.1/unity-catalog/mcp-services/main.default.my_mcp?update_mask=comment" \
--json '{ "comment": "Updated description" }'
Authenticate
如果 MCP 服务引用使用每用户 OAuth 的连接,请在第一次调用之前完成一次性登录:
- 在目录资源管理器中打开 MCP 服务详细信息页。
- 单击 “登录” 并完成提供程序的 OAuth 许可流。
- 登录后,详细信息页会自动显示已发现工具的列表。
Unity Catalog 会根据您的身份存储令牌。 如果在登录前调用 MCP 服务,AI 网关将返回一个错误,提示你进行身份验证。
授予对团队成员的访问权限
默认情况下,只有 MCP 服务所有者才能调用它。 授予 EXECUTE,以允许其他用户、组或服务主体调用该服务。 一项 EXECUTE 授权涵盖该服务的所有工具。
UI
- 在目录资源管理器中打开 MCP 服务,或转到 AI 网关>MCP 并选择该服务。
- 转到“权限”选项卡。
- 单击授权。
- 选择要授予访问权限的用户、组或服务主体。
- 选择 EXECUTE 特权。
- 单击授权。
REST API
databricks api patch \
"/api/2.1/unity-catalog/permissions/mcp_service/main.default.my_mcp" \
--json '{
"changes": [
{ "principal": "data-team", "add": ["EXECUTE"] }
]
}'
调用 MCP 服务
从命令行或代理或客户端代码试用 AI Playground 中的 MCP 服务。
测试 MCP 服务
AI 操场
在 UI 中测试 MCP 服务的工具,而无需编写代码:
- 转到Azure Databricks工作区中的 AI 操场。
- 选择带有“已启用工具”标签的模型。
- 单击 “工具 > + 添加”工具 并选择 “MCP 服务器”。
- 选择 外部 MCP 服务器,然后选择 MCP 服务。
- 与模型聊天,了解它如何调用 MCP 服务的工具。
还可以从 Genie Code 进行测试 , 请参阅 将 MCP 服务器添加到助手。
CURL
要快速进行命令行检查,请使用 MCP 服务详情页上生成的请求。 在 “入门”中,单击“ 生成访问令牌 ”,将访问令牌复制到请求示例中。 这些示例将令牌作为标头中的 Authorization 持有者令牌传递。
您还可以让 Databricks CLI 对工作区进行身份验证,然后使用 databricks auth token 获取 OAuth 访问令牌:
databricks auth login --host https://<workspace-url>
所有请求都转到相同的 MCP 服务终结点,请求正文中的 JSON-RPC method 会选择该操作。 列出服务公开的工具:
TOKEN=$(databricks auth token | jq -r .access_token)
curl -s -X POST \
"https://<workspace-url>/ai-gateway/mcp-services/main.default.my_mcp" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
调用工具:
curl -s -X POST \
"https://<workspace-url>/ai-gateway/mcp-services/main.default.my_mcp" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"<tool_name>","arguments":{}}}'
可从代理代码或编码代理中使用
- 代理代码 (OpenAI 代理 SDK、LangGraph 或模型服务):请参阅 在代理中使用 MCP 服务器。
- AI 助手和编码代理 (Claude、Claude Code、Cursor):请参阅 将 MCP 连接到 AI 助手和编码代理。
治理 MCP 服务
选择公开的工具
默认情况下,MCP 服务提供 MCP 服务器提供的所有工具。 若要仅提供子集,请在创建 MCP 服务时选择工具,或稍后更新选择。 每个选择器都与工具名称匹配:结尾 * 的模式是前缀匹配(get_* 匹配 get_me 和 get_issue),任何其他值都是完全匹配(search_repositories 仅匹配该工具)。
UI
在创建流中,在 “工具”下:
- 选择 “手动选择 ”以单独选择每个工具。
- 使用上述前缀和完全匹配规则,选择 “高级 ”以输入选择模式。
- 开启 自动包含将来添加到此服务器的工具,这样当 MCP 服务器添加新工具时,这些工具就会自动可用。
REST API
若要在创建后更改工具选择,请通过 include_tool_selectors 请求设置 PATCH。 将服务限制为仅使用 get_* 工具:
databricks api patch \
"/api/2.1/unity-catalog/mcp-services/main.default.my_mcp?update_mask=config.include_tool_selectors" \
--json '{
"config": {
"include_tool_selectors": ["get_*"]
}
}'
将 include_tool_selectors 设置为空列表以进行重置,使所有工具都可用。
未选定的工具不会出现在 tools/list 中,而且 MCP 服务会拒绝针对未选定工具的 tools/call:
{ "code": -32003, "message": "Tool not allowed by MCP service configuration." }
应用服务策略
服务策略在运行前评估每个工具调用(ON CALL可选)及其结果(ON RESULT可选)。 策略可以允许、拒绝或要求人工批准请求(例如,阻止包含 PII 的破坏性操作或阻止调用),而无需更改可用的工具。 服务策略是Unity Catalog 中的 AI 治理的一部分。
若要编写策略函数并将其附加到 MCP 服务,请参阅 AI 安全对象服务策略 并 创建和附加服务策略。
设置速率限制
限制代理调用 MCP 服务来控制成本和保护外部服务器的频率。 请参阅 使用 Unity AI 网关配置 AI 服务的速率限制。
监视使用情况
Unity AI Gateway 会在 Unity Catalog 系统表中记录每个 MCP 服务的活动:
-
使用情况:
system.ai_gateway.usage中的调用量、错误和延迟(筛选条件service_type = 'MCP_SERVICE')。 请参阅 Unity AI 网关服务的模型使用情况。 -
审计:
createMcpService中的控制平面更改(updateMcpService、deleteMcpService、mcpCall)和每次调用(system.access.audit)。 请参阅审核日志系统表参考。 - 跟踪:工具调用请求、响应和策略决策通过跟踪日志记录捕获,该日志记录在帐户级别启用一次,并在所有 MCP 服务之间共享。
- 仪表板:外部 MCP 服务器流量显示在内置的 Unity AI 网关使用情况仪表板中。 请参阅 内置使用情况仪表板。
有关所有 Unity 目录系统表,请参阅 系统表引用。 有关管理 AI 流量的概述,请参阅 Unity 目录中的 AI 治理。
身份验证和安全性
Azure Databricks使用托管 MCP 代理和 Unity 目录 HTTP 连接安全地处理对外部 MCP 服务器的身份验证。
- 共享主体身份验证:访问外部服务时,所有用户共享相同的凭据。 这包括持有者令牌、OAuth 计算机到计算机(M2M)和 OAuth 用户到计算机共享身份验证。 当外部服务不需要用户特定的访问权限或单个服务帐户足够时,请使用此功能。
- 每用户身份验证(OAuth U2M):每个用户使用他们自己的凭据进行身份验证。 外部服务代表单个用户接收请求,启用特定于用户的访问控制、审核和问责。 访问用户特定的资源(例如用户的GitHub存储库、Slack 消息或日历)时,请使用此功能。
Azure Databricks处理 OAuth 流和令牌刷新,因此最终用户看不到令牌。 可以在 Unity AI 网关中查看和管理与 LLM 终结点一起的外部 MCP 连接。 有关每个身份验证方法的详细配置说明,请参阅 HTTP 连接。
Limitations
在 Beta 版期间,以下限制适用于 MCP 服务:
- MCP 服务的 SQL DDL(例如,
CREATE MCP SERVICE)不可用。 使用 UI 或 REST API 创建和管理 MCP 服务。 - 只能将外部 MCP 服务器注册为自己的 MCP 服务。 目前不支持将 Genie、应用或 Unity 目录实体源注册为 MCP 服务。 Azure Databricks还提供适用于常见 SaaS 应用的内置 MCP 服务。
- 工具选择支持前缀(
get_*)和完全匹配模式。 不支持排除模式(例如!delete_*)。 - Unity 目录全局搜索不会呈现 MCP 服务。
外部 MCP 服务器连接也有以下限制:
- 外部 MCP 服务器仅在支持模型服务的区域可用,包括在 AI Playground、Genie Code 和 Genie 中的聊天中使用。 请参阅 模型服务功能可用性。
后续步骤
- 使用代理中的 MCP 服务器 通过代理代码以编程方式调用 MCP 服务。
- 将 MCP 连接到 AI 助手和编码代理 ,以连接编码代理和 AI 助手。
- 使用 Unity AI 网关进行 AI 治理 ,以从中心位置管理 MCP 服务器和 LLM 终结点。