Model Context Protocol (MCP) 规范了大语言模型 (LLM) 和 AI 应用或 智能体连接到外部数据源的方式。借助 MCP 服务器,您可以使用其工具、资源和提示来执行操作,并从其后端服务获取更新后的数据。
本地 MCP 服务器和远程 MCP 服务器有何区别?
- 本地 MCP 服务器
- 通常在本地机器上运行,并使用标准输入和输出流 (stdio) 在同一设备上的服务之间进行通信。
- 远程 MCP 服务器
- 在服务的基础设施上运行,并向 AI 应用提供 HTTP 端点,以便在 AI MCP 客户端和 MCP 服务器之间进行通信。如需详细了解 MCP 架构,请参阅 MCP 架构。
您可能出于以下原因而需要使用 AlloyDB 本地 MCP 服务器:
- 本地开发和测试
- 离线使用 MCP
- 从 AI 应用管理 AlloyDB 集群和实例
如需详细了解如何使用本地 MCP 服务器,请参阅 将 AlloyDB for PostgreSQL 与 MCP、Gemini CLI 和其他智能体搭配使用或AlloyDB for PostgreSQL MCP 服务器。 以下部分仅适用于 AlloyDB for PostgreSQL 远程 MCP 服务器。
Google Cloud 远程 MCP 服务器
Google 和 Google Cloud 远程 MCP 服务器具有以下 功能和优势:- 简化、集中式探索
- 托管式全球或区域 HTTP 端点
- 细粒度授权
- 使用 Model Armor 保护提示和回答(可选)
- 集中式审核日志记录
如需了解其他 MCP 服务器以及适用于 Google Cloud MCP 服务器的安防 和治理控制措施, 请参阅 Google Cloud MCP 服务器概览。
限制
AlloyDB 远程 MCP 服务器具有以下限制:
create_user工具不支持创建带密码的 内置身份验证用户。 用户只能通过 IAM 身份验证 创建。- 如果
execute_sql工具返回的响应大于 10 MB,则该响应可能会被截断。 execute_sql_read_only仅适用于 PostgreSQL 17 及更高版本。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Enable the AlloyDB API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
所需的角色
如需获得使用 AlloyDB for PostgreSQL MCP 服务器所需的权限,请让管理员向您授予要在其中使用 AlloyDB for PostgreSQL MCP 服务器的项目中的以下 IAM 角色:
-
创建 AlloyDB 实例:
AlloyDB Admin (
roles/alloydb.admin) -
创建 AlloyDB 用户:
AlloyDB Admin (
roles/alloydb.admin) -
在 AlloyDB 中执行 SQL 查询:
- AlloyDB Admin (
roles/alloydb.admin) - AlloyDB Database User (
roles/alloydb.databaseUser)(Studio Query User (roles/databasesconsole.studioQueryUser) 也适用)
- AlloyDB Admin (
-
在 AlloyDB 中执行只读 SQL 查询:
- AlloyDB Viewer (
roles/alloydb.viewer) - AlloyDB Admin (
roles/alloydb.admin) - AlloyDB Database User (
roles/alloydb.databaseUser)
- AlloyDB Viewer (
-
获取 AlloyDB 实例或列出项目中的所有 AlloyDB 实例:
AlloyDB Viewer (
roles/alloydb.viewer) -
列出 AlloyDB 用户:
AlloyDB Viewer (
roles/alloydb.viewer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含 使用 AlloyDB for PostgreSQL MCP 服务器所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需使用 AlloyDB for PostgreSQL MCP 服务器,您需要拥有以下权限:
-
进行 MCP 工具调用:
mcp.tools.call -
创建 AlloyDB 集群:
alloydb.cluster.create -
创建 AlloyDB 用户:
alloydb.users.create -
克隆 AlloyDB 实例:
alloydb.instances.create -
对 AlloyDB 实例执行 SQL 查询:
-
alloydb.instances.executeSql -
alloydb.instances.login
-
-
对 AlloyDB 实例执行只读 SQL 查询:
-
alloydb.instances.executeSqlReadOnly -
alloydb.instances.login
-
-
获取 AlloyDB 集群:
alloydb.instances.get -
获取 AlloyDB 集群操作:
alloydb.clusters.get -
将数据导入到 AlloyDB 集群:
alloydb.clusters.import -
将数据从 AlloyDB 集群导出到 Cloud Storage:
alloydb.clusters.export -
列出项目中的 AlloyDB 集群:
alloydb.clusters.list -
列出 AlloyDB 用户:
alloydb.users.list -
更新 AlloyDB 集群:
alloydb.clusters.update -
更新 AlloyDB 用户:
alloydb.users.update
身份验证和授权
AlloyDB for PostgreSQL 远程 MCP 服务器使用 OAuth 2.0 协议和 Identity and Access Management (IAM) 进行身份验证和授权。支持所有 Google Cloud 身份 用于向 MCP 服务器进行身份验证。AlloyDB 远程 MCP 服务器不接受 API 密钥。
我们建议您为使用 MCP 工具的智能体创建单独的身份,以便控制和监控对资源的访问。如需详细了解 身份验证,请参阅向 MCP 服务器进行身份验证。
AlloyDB MCP OAuth 范围
OAuth 2.0 使用范围和凭证来确定经过身份验证的主账号是否有权对资源执行特定操作。如需详细了解 Google 的 OAuth 2.0 范围,请参阅 使用 OAuth 2.0 访问 Google API。
AlloyDB 具有以下 MCP 工具 OAuth 范围:
| gcloud CLI 的范围 URI | 说明 |
|---|---|
https://www.googleapis.com/auth/alloydb |
查看、修改、配置和删除您的 Google Cloud AlloyDB 数据,以及查看您的 Google 账号的邮箱。 |
在工具调用期间访问的资源可能需要其他范围。如需查看 AlloyDB 所需的范围列表,请参阅 AlloyDB Admin API。
配置 MCP 客户端以使用 AlloyDB MCP 服务器
Claude 或 Antigravity 等 AI 应用和智能体可以实例化连接到单个 MCP 服务器的 MCP 客户端。一个 AI 应用可以有多个连接到不同 MCP 服务器的客户端。 如果您的应用未列在 特定于客户端的指南中,则可以使用 以下信息从大多数应用进行连接。
在 AI 应用中,寻找添加或连接到远程 MCP 服务器的方式。 对于 AlloyDB for PostgreSQL MCP 服务器,请根据需要输入以下信息:
- 服务器名称:AlloyDB for PostgreSQL MCP 服务器
- 服务器网址 或 端点:
https://alloydb.googleapis.com/mcp - 传输:HTTP
- 身份验证详细信息:您可以根据所需的身份验证方式, 输入凭证 Google Cloud 、OAuth 客户端 ID 和密钥,或代理身份和凭证。如需详细了解 身份验证,请参阅 向 MCP 服务器进行身份验证。
- OAuth 范围:您在连接到 AlloyDB for PostgreSQL MCP 服务器时要使用的 OAuth 2.0 范围。
如需了解有关设置和连接到 MCP 服务器的应用专用指南, 请参阅 特定于客户端的指南。
如需查看更通用的指导,请参阅以下资源:
可用工具
如需查看 AlloyDB for PostgreSQL MCP 服务器的可用 MCP 工具的详细信息及其说明,请参阅 AlloyDB for PostgreSQL MCP 参考文档。
列出工具
使用 MCP 检查器 列出工具,或直接向 AlloyDB for PostgreSQL
远程 MCP 服务器发送
tools/list HTTP 请求。tools/list 方法不需要进行身份验证。您必须提供字符串或数字 ID,例如 1 或 my-id。
POST /mcp HTTP/1.1
Host: alloydb.googleapis.com
Content-Type: application/json
{
"id": USER_SPECIFIED_ID,
"jsonrpc": "2.0",
"method": "tools/list",
}
执行 SQL
如需执行 SQL 语句,请按照以下步骤操作:
将 AlloyDB 实例上的
data_api_access实例设置设置为值ALLOW_DATA_API_ACCESS。 使用create_instance工具创建实例时,系统会自动启用data_api_access配置。如果未在实例上启用
data_api_access配置,您可以使用 curl 命令将其启用,方法是将字段dataApiAccess的值更新为ENABLED:curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=dataApiAccess \ -d '{ "dataApiAccess": "ENABLED", }'替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 ID。LOCATION:AlloyDB 集群所在的区域。CLUSTER_ID:AlloyDB 集群的 ID。INSTANCE_ID:AlloyDB 实例的 ID。
在 Gemini CLI 中,输入类似于以下内容的提示:
Enable IAM database authentication on the AlloyDB instance INSTANCE_NAME Make sure that the SQL statements use the privileges associated with the IAM database authentication user account USER_ACCOUNT替换以下内容:
INSTANCE_NAME:AlloyDB 实例的名称。USER_ACCOUNT:执行 SQL 语句时用于 身份验证的 IAM 用户账号。
示例应用场景
以下是 AlloyDB MCP 服务器的示例应用场景。
Web 应用开发
一个示例应用场景可能是快速开发 Web 应用,并将 AlloyDB 实例预配为源数据库。 在此应用场景中,使用 AlloyDB MCP 服务器可让您使用自然语言为新项目构建新数据库并填充初始数据。
示例提示:
“Create a new alloydb PostgreSQL development instance and set up a table called products.”
工作流: 设置 Web 应用的工作流可能如下所示:
预配:智能体创建一个集群,实例可以在其中 分配。然后,智能体调用
create_instance工具,以创建具有开发环境大小规范的新 AlloyDB 实例。您可以在新实例上启用公共 IP 连接 。您还可以自动执行 Private Service Connect 端点配置。验证:智能体使用
get_operation工具轮询实例创建操作的状态 。连接:操作完成后,智能体 使用
get_instance工具检索实例连接元数据。架构设置:智能体创建数据库,然后使用
execute_sql运行CREATE TABLE productsSQL 语句。数据植入:智能体再次使用
execute_sql将初始 植入数据 (DML) 插入到新创建的表中。
运营和数据库配置管理
在此示例应用场景中,您可以查看现有数据库实例,以帮助确保它们符合运营配置标准。您还可以使用智能体来管理实例上的数据库用户。
示例提示:
“List all the PostgreSQL instances in my project and show me their details to verify that they're using the same configuration and that the most recent list database users has been successfully updated.”
工作流:检查 AlloyDB 实例和 数据库用户配置的工作流可能如下所示。
探索:智能体使用
list_instances来 检索项目中的所有 AlloyDB 实例的列表。检查:对于标识的每个实例,智能体都会调用
get_instance来获取详细的配置元数据(例如数据库版本、 区域和机器类型),并调用list_users来检查实例上的数据库 用户。此元数据包含有关是否启用 公共 IP 连接或是否配置 Private Service Connect 端点 的信息。报告:智能体会汇总调查结果,突出显示任何 偏离预期配置的实例或用户。
可选的安防和安全配置
由于 MCP 工具可执行各种操作,因此 MCP 会引发新的安全风险和注意事项。为了最大限度地降低这些风险并进行管理, Google Cloud 提供了默认政策和可自定义的政策,用于 控制 MCP 工具在您的 Google Cloud 组织或项目中的使用。
如需详细了解 MCP 安全性和治理,请参阅 AI 安全性。
使用 Model Armor
Model Armor 是一项旨在增强 AI 应用安全性和 安全性的 Google Cloud 服务。它通过主动筛选 LLM 提示和回答来防范各种风险,并支持 Responsible AI 实践。无论您是在云环境还是外部云服务提供商中部署 AI,Model Armor 都能帮助您防止恶意输入、验证内容安全性、保护敏感数据、保持合规性,并在各种 AI 环境中以一致的方式实施 AI 安全政策。
启用 Model Armor 并启用 日志记录后,Model Armor 会记录整个 载荷。这可能会在日志中公开敏感信息。
将 MCP 请求路由到 Model Armor
Model Armor 在 某些区域提供。启用 Model Armor 后,如果您在 Model Armor 不支持的司法管辖区中使用 MCP 服务器,则调用的路由行为可能因 MCP 服务器而异,并且可能会违反使用中和传输中数据的数据驻留合规性。如需详细了解各个 MCP 服务器的行为 ,请参阅 Model Armor 支持的产品。启用 Model Armor
您必须先启用 Model Armor API,然后才能使用 Model Armor。控制台
gcloud
在开始之前,请使用 Google Cloud CLI 和 Model Armor API 按照以下步骤操作:
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后, 运行以下命令来初始化 Google Cloud CLI:
gcloud init-
运行以下命令以使用全球 API 端点:
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.googleapis.com/"
为 Google 和 Google Cloud 远程 MCP 服务器配置保护
为了帮助保护 MCP 工具调用和响应,您可以使用 Model Armor 下限设置。下限设置定义了适用于整个项目的最低安全过滤条件。此配置将一组一致的过滤条件应用于项目中的所有 MCP 工具调用和响应。
设置 Model Armor 下限设置并启用 MCP 清理。如需了解详情,请参阅配置 Model Armor 下限 设置。
请参阅以下示例命令:
gcloud model-armor floorsettings update \ --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \ --enable-floor-setting-enforcement=TRUE \ --add-integrated-services=GOOGLE_MCP_SERVER \ --google-mcp-server-enforcement-type=INSPECT_AND_BLOCK \ --enable-google-mcp-server-cloud-logging \ --malicious-uri-filter-settings-enforcement=ENABLED \ --add-rai-settings-filters='[{"confidenceLevel": "MEDIUM_AND_ABOVE", "filterType": "DANGEROUS"}]'
将 PROJECT_ID 替换为您的 Google Cloud 项目 ID。
请注意以下设置:
INSPECT_AND_BLOCK:强制执行类型,用于检查 Google MCP 服务器的内容,并屏蔽与过滤条件匹配的提示和响应。ENABLED:用于启用过滤条件或 强制执行的设置。MEDIUM_AND_ABOVE:Responsible AI - Dangerous 过滤条件设置的置信度。您可以修改此设置, 但较低的值可能会导致更多误报。如需了解详情,请参阅 Model Armor 置信度。
禁止使用 Model Armor 扫描 MCP 流量
如需阻止 Model Armor 根据项目的下限设置自动扫描进出 Google MCP 服务器的流量,请运行以下命令:
gcloud model-armor floorsettings update \
--full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
--remove-integrated-services=GOOGLE_MCP_SERVER
将 PROJECT_ID 替换为 Google Cloud 项目
ID。Model Armor 不会自动将此项目的下限设置中定义的规则应用于任何 Google MCP 服务器流量。
Model Armor 下限设置和常规配置不仅会影响 MCP。由于 Model Armor 与 Vertex AI 等服务集成,因此您对下限设置所做的任何更改都可能会影响所有集成服务的流量扫描和安全行为,而不仅仅是 MCP。
使用 IAM 政策控制 MCP 的使用
Identity and Access Management (IAM) 拒绝政策 和 允许政策 可帮助您 保护 Google Cloud 和 Google MCP 服务器。
您可以组合多个条件来构建自定义安防和治理政策,方法是根据以下内容允许或拒绝访问:
- 主账号。
- 工具属性,例如只读属性。
- 服务名称或工具名称。
- 应用的 OAuth 客户端 ID。
如需了解详情,请参阅 使用 Identity and Access Management 控制 MCP 的使用。
后续步骤
- 阅读 AlloyDB MCP 参考文档。
- 详细了解 Google Cloud MCP 服务器。