本页面介绍了如何通过自定义 Model Context Protocol (MCP) 服务器连接您的数据源,让 Gemini Enterprise 能够安全地访问您公司的私有数据。
概览
借助自定义 MCP 数据存储区,您可以将公共和私有工具以及符合 MCP 规范的第三方系统直接集成到 Gemini Enterprise 中。当标准连接器不可用时,此方法提供了一种统一的方法来连接旧版系统。借助这一集成,您的 AI 智能体能够直接调取基础设施中的关键业务信息和专业逻辑。
对公共 MCP 服务器的访问会通过 Google 管理的网络进行路由。如需启用 Agent Gateway 出站流量到您的私有网络,必须在 Gemini Enterprise 应用中注册自定义 MCP 服务器,并将其配置为通过 Agent Gateway 路由私有流量(us-central1 和 europe-west1 支持此功能)。
限制
自定义 MCP 服务器存在以下限制:
服务器发送事件 (SSE):不支持旧版
SSE传输。该连接器仅支持较新的StreamableHTTP传输。TLS 证书要求:为自定义 MCP 服务器配置由公开可信证书授权机构 (CA) 签名的 TLS 证书,但以下情况除外:
- 通过 Agent Gateway 连接的私有 MCP 服务器:如果您通过 Agent Gateway 路由出站流量,则可以在智能体连接模板中配置自定义 TLS 信任锚点 (
tlsConfig),从而使用私有 CA 或自签名证书。
- 通过 Agent Gateway 连接的私有 MCP 服务器:如果您通过 Agent Gateway 路由出站流量,则可以在智能体连接模板中配置自定义 TLS 信任锚点 (
操作限制:为确保最佳性能,请将自定义 MCP 服务器数据存储区中启用的操作数量限制为一次最多 100 个。如需了解详情,请参阅启用操作。
代理网关绑定限制:一个 Gemini Enterprise 应用只能绑定到一个出站代理网关,但多个 Gemini Enterprise 应用可以共享同一个代理网关。
在应用范围内创建:您无法将独立的自定义 MCP 服务器数据存储区关联到 Gemini Enterprise 应用。请直接在应用内的关联的数据存储区下创建数据存储区。
VPC Service Controls:出站流量控制通过组织政策限制条件(例如
allowedEgressFqdns和allowedDataSources)强制执行,而不是通过运行时流量强制执行。在启用了 VPC Service Controls 的项目中,如果您明确允许所需的出站网域和数据源,则支持自定义 MCP 服务器。如需了解详情,请参阅替换自定义 MCP 数据存储区的组织政策。
准备工作
在设置自定义 MCP 服务器连接之前,请确保您已执行以下操作:
多项组织政策限制条件适用于自定义 MCP 数据存储区。您必须:
替换会阻止创建自定义 MCP 数据存储区的组织政策限制条件。如需了解详情,请参阅替换自定义 MCP 数据存储区的组织政策。
明确允许自定义 MCP 服务器网址、授权网址和令牌网址的完全限定域名 (FQDN)。如需了解详情,请参阅配置允许的出站 FQDN。
如果启用了项目强制执行,或者项目受 VPC Service Controls 保护,则必须将
custom_mcp添加到允许的数据源。请参阅配置允许的数据源。如果您通过 Agent Gateway 路由出站流量,请确保您的项目组织政策允许将 Gemini Enterprise 应用绑定到网关。如需了解详情,请参阅限制 Gemini Enterprise 仅绑定到已获批准的 Agent Gateway。
可选:如果您的自定义 MCP 服务器托管在专用虚拟私有云 (VPC) 网络中,请完成前提条件中的网络连接、网关和防火墙配置。如需了解详情,请参阅设置具有 VPC 连接的自定义 MCP 服务器数据存储区的前提条件。
授予 Discovery Engine Editor 角色 (
roles/discoveryengine.editor)。管理员必须具有此角色才能创建数据存储区。如需授予此角色,请执行以下操作:
在您的身份提供方(例如 Okta、Azure AD 或 Google)中将 Gemini Enterprise 注册为 OAuth 客户端应用。
如需注册应用,请执行以下操作:
将授权重定向网址设置为
https://vertexaisearch.cloud.google.com/oauth-redirect。向客户端应用授予必要的 OAuth 范围。
注册客户端应用后,获取在后续步骤中配置自定义 MCP 服务器数据存储区所需的
client_id和client_secret。如果您的自定义 MCP 服务器托管在 Cloud Run 上且需要身份验证,请向服务代理授予 Cloud Run Invoker (
roles/run.invoker) 角色。如需了解详情,请参阅为 Cloud Run 上的自定义 MCP 服务器设置身份验证。
为 Cloud Run 上的自定义 MCP 服务器设置身份验证
如果您的自定义 MCP 服务器托管在 Cloud Run 上且需要身份验证,Gemini Enterprise 可以安全地连接到不允许公开访问的私有服务。
身份验证的工作原理
当您连接到 Cloud Run 服务时,Gemini Enterprise 会在每个请求中自动发送以下授权标头:
X-Serverless-Authorization:包含用于对 Gemini Enterprise 服务代理进行身份验证的 Google 签名 ID 令牌。Authorization:保留用户的 OAuth 令牌。
向服务代理授予访问权限
如需授权 Gemini Enterprise 调用您的私有 Cloud Run 服务,请向接收服务上的 Gemini Enterprise 服务代理授予 Cloud Run Invoker (roles/run.invoker) 角色。
服务代理邮箱采用以下格式:
service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
将 PROJECT_NUMBER 替换为Google Cloud 托管 Gemini Enterprise 应用的项目的项目编号。
如需了解如何为服务授予 IAM 角色,请参阅对服务到服务进行身份验证。
创建自定义 MCP 服务器数据存储区
如需设置配置流程,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。
在导航菜单中,点击应用,然后选择需要自定义 MCP 数据存储区连接的应用。
点击关联的数据存储区。
点击 新建数据存储区。
在选择数据源页面上,在搜索来源字段中输入自定义 MCP 服务器。系统会显示自定义 MCP 服务器卡片。
点击添加 MCP 服务器。系统会显示 MCP 服务器配置页面。
可选:如需通过 Agent Gateway 路由出站流量,请选中通过 Agent Gateway 路由出站流量复选框。在以下任一情况下,请选择此选项:
- 私有网络托管:您在 VPC 网络内私下托管自定义 MCP 服务器。
- 静态 IP 出站流量:您在外部(例如本地或通过第三方提供商)托管自定义 MCP 服务器,并要求传入请求来自预留的静态 IP 地址。通过 Agent Gateway 将流量路由到 VPC 网络,您可以通过具有固定 IP 地址的网关流出流量,从而在外部服务器上配置基于 IP 的防火墙许可清单。
在引擎资源名称字段中,输入出站流量路由到的引擎的资源名称,格式如下:
projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/APP_ID替换以下内容:
PROJECT_NUMBER:您的 Google Cloud 项目编号。LOCATION:应用的位置,例如global、us或eu。APP_ID:应用的 ID。
如何获取引擎资源名称
如果您不知道应用的引擎资源名称,可以使用 Discovery Engine API 列出项目中的引擎:
curl -s -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines" \ | jq -r '.engines[]? | "App Name: \(.displayName)\nEngine Resource Name: \(.name)\n"'
替换以下内容:
PROJECT_ID:您的项目的 ID。ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:us(表示美国多区域)eu(表示欧盟多区域)global(表示全球位置)
PROJECT_NUMBER:您的 Google Cloud 项目编号。LOCATION:应用的位置(例如global、us或eu)。
输出示例:
App Name: Cymbal Math App Engine Resource Name: projects/1234567890/locations/global/collections/default_collection/engines/chat-app-cymbal
如需了解详情,请参阅
projects.locations.collections.engines.list。在身份验证设置部分中,选择以下选项之一:
OAuth 2.0:选择此选项可添加身份验证。
在以下必填字段中输入值:
字段 说明 MCP 服务器网址 这是托管 MCP 服务器的端点。必须是 HTTPS 网址。Gemini Enterprise 仅支持 StreamableHTTP传输。网址通常以/mcp结尾。例如https://mcp.cymbal.com/mcp。授权网址 用户授权 Gemini Enterprise 访问您的 MCP 服务器时使用的基础网址。例如 https://mcp.cymbal.com/authorize。授权网址参数 可选。授权网址所需的任何其他参数。例如,如需从 Google MCP 服务器获取刷新令牌,请输入 &access_type=offline&prompt=consent。
如果您的授权服务器需要audience参数,您可以将其作为参数添加到此设置中。例如&audience=https://api.cymbal.com/v1/。令牌网址 在 OAuth 身份验证期间用于将授权代码交换为访问令牌的端点。例如 https://mcp.cymbal.com/token。客户端 ID (Client ID) 您在身份提供方中注册的代表 Gemini Enterprise 的 OAuth 应用的唯一标识符。 客户端密钥 (Client Secret) 与您在身份提供方中注册的代表 Gemini Enterprise 的 OAuth 应用关联的机密密钥。 镜 这些权限定义了 Gemini Enterprise 可以代表用户执行哪些操作,或者可以访问 MCP 服务器上的哪些数据。Gemini Enterprise 会在用户授权期间请求这些范围。配置您的 OAuth 应用以支持这些范围。
指定范围时,请考虑以下事项:- 提供以空格分隔的范围列表。例如,对于 Box,您需要提供:
root_readwrite manage_managed_users manage_groups。 - 确保提供的范围足以让用户登录并使用管理员启用的工具或操作;否则,代理将无法访问您的应用。
- 一个常见范围是
offline_access,它允许应用请求刷新令牌。
启用 PKCE 支持 可选。选中此复选框可启用用于代码交换的证明密钥(PKCE,RFC 7636),以提高 OAuth 安全性。如果 MCP 服务器的 OAuth 提供商支持 PKCE,请启用此设置。 使用 HTTP 基本身份验证 可选。默认处于选中状态。使用基本身份验证在 HTTP Authorization标头中发送客户端 ID 和客户端密钥,而不是在令牌请求正文中发送。- 提供以空格分隔的范围列表。例如,对于 Box,您需要提供:
点击确认身份验证。
点击继续。
无需身份验证:如果您的 MCP 服务器不需要身份验证,请选择此选项。
输入 MCP 服务器网址。这是托管 MCP 服务器的端点。必须是 HTTPS 网址。Gemini Enterprise 仅支持
StreamableHTTP传输。该网址通常以/mcp结尾。例如https://mcp.cymbal.com/mcp。点击继续。
可选:在高级选项部分的 MCP 服务器说明字段中,描述 MCP 服务器的功能以及用户如何使用它。
点击继续。
在配置数据连接器部分,从多区域字段列表中选择数据连接器的位置。
在数据连接器名称字段中,输入数据存储区的名称。
可选:在标记字段中,输入一个标记,以便在不同版本中唯一标识此数据连接器。此标记一经创建便无法更改。
可选:在Sensitive Data Protection 政策字段中,输入 Sensitive Data Protection 政策的资源路径,以检查和遮盖请求中的敏感数据。请使用以下格式:
projects/PROJECT_ID/locations/LOCATION/contentPolicies/POLICY_ID。点击创建。Gemini Enterprise 会为您创建数据存储区,并在关联的数据存储区页面上显示您的数据存储区。
验证自定义 MCP 服务器的状态
如需验证自定义 MCP 服务器的状态,请执行以下操作:
在关联的数据存储区列表中,点击您的数据存储区。系统会显示数据存储区的详细信息。
监控数据存储区的状态,直到其状态更改为
Active。当数据存储区的状态从Creating更改为Active后,您的自定义 MCP 服务器数据存储区即可供使用。
启用操作
默认情况下,所有操作均处于关闭状态。连接 MCP 服务器后,其所有工具都会导入并显示为 Gemini Enterprise 数据存储区中的操作。为确保获得最佳体验,您一次最多可以启用 100 项操作。如需为用户启用这些操作,请按以下步骤操作:
- 前往自定义 MCP 服务器数据存储区。
依次点击操作 > 重新加载自定义操作,以重新进行身份验证。
选择要启用的操作。
点击启用操作。
配置注解以跳过用户确认
当 MCP 服务器中的工具作为操作导入 Gemini Enterprise 数据存储区时,Gemini Enterprise 会检查其工具注解,以确定是否需要用户确认。默认情况下,对任何操作的所有调用都需要用户确认,因为 Gemini Enterprise 假定任何操作都可能具有破坏性,并且可能会改变数据。
如果您的服务器提供只读功能(例如查询数据库),并且您希望跳过此确认以获得更流畅的用户体验,则可以在将 MCP 工具作为操作导入之前,在其规范中配置注解。
如需管理数据存储区操作的用户确认,请在 MCP 工具定义中配置以下注解:
readOnlyHint:如果操作是非破坏性的且仅读取数据,请将此注解添加到工具定义中。工具执行会绕过用户确认。destructiveHint:如果工具会修改数据,请明确使用此注解。这会维持默认的确认行为。
例如,在 Python 中
:@mcp.tool(annotations={ "destructiveHint": False, "readOnlyHint": True })
为确保您的更改反映在设置中,请重新加载自定义操作。 如需了解详情,请参阅启用操作。
性能和可靠性最佳实践
为尽可能缩短响应延迟时间并防止请求超时,请在使用自定义 MCP 服务器时遵循以下最佳实践:
- 保持工具说明和架构简洁:保持工具说明和输入参数架构简洁,以减少提示处理延迟时间。
- 对长时间运行的操作使用分页或异步轮询:通过对大型查询结果进行分页,确保单个工具调用快速完成。对于长时间运行的后端操作(例如大型数据仓库查询或报告生成),请实现异步工具模式,其中一个工具启动作业并立即返回任务 ID,另一个工具轮询作业状态并检索结果。
- 请求离线访问以获取永久性 OAuth 令牌:配置 OAuth 2.0 身份验证时,请在初始设置中添加
offline_access范围(或在授权网址参数中添加&access_type=offline&prompt=consent,适用于需要此参数的提供商),以便您的身份提供商签发刷新令牌,并避免在初始访问令牌过期后请求失败或超时。 - 关闭未使用或不正常的操作和数据存储区:仅启用用户需要的操作,并关闭未使用或正在维护的自定义 MCP 服务器数据存储区,以免无法访问的端点增加对话轮次的延迟时间。
后续步骤
- 如需防范恶意输入和输出,请启用 Model Armor。如需了解详情,请参阅启用 Model Armor。
- 如果您想使用自定义代理(而非 Gemini Enterprise 助理)查询 MCP 服务器,请参阅创建代理。
- 如需使用连接到自定义 MCP 服务器的智能体,请参阅使用智能体。
- 如需在 Gemini Enterprise 使用自定义 MCP 服务器上的工具回答问题时显示来源引用条状标签,请参阅为自定义 MCP 数据存储区配置引用。