以下文章来源于谷歌云服务,作者 Google Cloud
Vikram Manghnani 技术项目经理
Prem Ramanathan 软件工程师
将 AI 智能体接入企业数据,其实不需要复杂的自定义集成或耗费数周开发。12 月,我们推出了面向 Google 服务的全托管式远程 Model Context Protocol (MCP) 服务器。借助 BigQuery MCP 服务器,您现在可以为 AI 智能体提供一种直接且安全的数据分析方式。这一全托管式 MCP 服务器不会带来额外的管理开销,让您可以专注于智能体的开发。
BigQuery MCP 服务器让智能体能够原生解读数据架构并查询企业数据,彻底免去将数据搬运至上下文窗口所带来的安全隐患与延迟。在确保数据原位存储且受控的前提下,智能体还能直接调用预测等 BigQuery 强大功能。BigQuery 的 MCP 服务器支持也可以通过开源的 MCP Toolbox for Databases 实现,适用于对服务器灵活性和控制力有更高要求的场景。本文将介绍并演示新近发布的全托管式远程 BigQuery 服务器的集成方式。该产品于 2026 年 1 月推出预览版。
远程 MCP 服务器在服务的基础设施上运行,并向 AI 应用提供 HTTP 端点。这使得 AI MCP 客户端能够按照既定标准与 MCP 服务器进行通信。
MCP 通过一组明确定义的工具,使基于大语言模型的应用能够直接访问分析数据,从而加快 AI 智能体的构建进程。采用 Google OAuth 身份验证方法,将 BigQuery MCP 服务器与 ADK 集成相对简便。下文将结合智能体开发套件 (ADK) 和 Gemini CLI 进行说明。LangGraph、Claude code、Cursor IDE 等平台和框架或其他 MCP 客户端,均可以在无需大量工程投入的情况下完成集成。
让我们开始吧。
将 BigQuery MCP 服务器与 ADK 结合使用
使用 ADK 构建 BigQuery 智能体原型时,可按照以下六个步骤操作:
1. 前提条件: 创建项目,并完成必要的设置和运行环境配置。
2. 配置: 启用 MCP 和所需的 API。
3. 加载示例数据集。
4. 创建 OAuth 客户端。
5. 创建 Gemini API 密钥。
6. 创建并测试智能体。
重要提示: 在规划生产环境部署或使用 AI 智能体处理真实数据时,请务必遵循 AI 安全性和稳定性指南。
第 1 步: 前提条件 > 配置和环境
1.1 设置 Cloud 项目
创建新的或使用已有的 Google Cloud 项目,并确保已启用结算功能。
1.2 用户角色
确保您的用户账号在该项目中具备以下权限:
a. roles/bigquery.user (用于运行查询)
b. roles/bigquery.dataViewer (用于访问数据)
c. roles/mcp.toolUser (用于访问 MCP 工具)
d. roles/serviceusage.serviceUsageAdmin (用于启用 API)
e. roles/iam.oauthClientViewer (oAuth)
f. roles/iam.serviceAccountViewer (oAuth)
g. roles/oauthconfig.editor (oAuth)
1.3 设置环境
使用安装了 gcloud CLI 的 MacOS 或 Linux 终端。
在 shell 中,使用您的 Cloud PROJECT_ID 运行以下命令,并对 Google Cloud 账号进行身份验证;这是启用 ADK 对 BigQuery 访问权限的必要操作。
# Set your cloud project id in env variable
BIGQUERY_PROJECT=PROJECT_ID
gcloud config set project ${BIGQUERY_PROJECT}
gcloud auth application-default login
按照提示完成身份验证流程。
第 2 步: 配置 > 用户角色和 API
2.1 启用 BigQuery 和 MCP API
运行以下命令以启用 BigQuery API 和 MCP API。
gcloud services enable bigquery.googleapis.com --project=${BIGQUERY_PROJECT}
gcloud beta services mcp enable bigquery.googleapis.com --project=${BIGQUERY_PROJECT}
第 3 步: 加载示例数据集 > cymbal_pets 数据集
3.1 创建 cymbal_pets 数据集
本次演示使用 cymbal_pets 数据集。运行以下命令,从公共存储桶中加载 cymbal_pets 数据库:
# Create the dataset if it doesn't exist(pick a location of your choice)
# You can add --default_table_expiration to auto expire tables.
bq --project_id=${BIGQUERY_PROJECT} mk -f --dataset --location=US cymbal_pets
# Load the data
for table in products customers orders order_items; do
bq --project_id=${BIGQUERY_PROJECT} query --nouse_legacy_sql
"LOAD DATA OVERWRITE cymbal_pets.${table} FROM FILES(
format = 'avro',
uris = [ 'gs://sample-data-and-media/cymbal-pets/tables/${table}/*.avro']);"
done
第 4 步: 创建 OAuth 客户端 ID
4.1 创建 OAuth 客户端 ID
我们将使用 Google OAuth 连接到 BigQuery MCP 服务器。
在 Google Cloud 控制台中,依次前往 Google Auth Platform > 客户端 > 创建客户端
○ *在 "应用类型" 中选择 "桌面应用"。
○ 创建客户端后,请务必复制并妥善保管客户端 ID 和密钥。
可选: 如果 OAuth 客户端使用的是其他项目,请使用对应的 CLIENT_ID_PROJECT 运行以下命令:
gcloud beta services mcp enable bigquery.googleapis.com --project=CLIENT_ID_PROJECT
注意 [仅适用于 Cloud Shell 用户]: 如果您使用的是 Google Cloud Shell 或 localhost 以外的任何托管环境,则必须创建一个 "Web 应用类型的" OAuth 客户端 ID。
在 Cloud Shell 环境中:
"已获授权的 JavaScript 来源" 使用以下命令的输出值: echo "https://8000-$WEB_HOST"
"已获授权的重定向 URI" 使用以下命令的输出值: echo "https://8000-$WEB_HOST/dev-ui/"
(Cloud Shell 中的 URI 为临时地址,仅在当前会话期间有效)
注意: 如果您选择使用 Web 服务器,则需要使用 "Web 应用" 类型的 OAuth 客户端,并填写对应的域名和重定向 URI。
第 5 步: Gemini API 密钥
5.1 创建 Gemini API 密钥
前往 API 密钥页面创建 Gemini API 密钥。我们需要生成一个密钥,以便使用 ADK 访问 Gemini 模型。
第 6 步: 创建 ADK Web 应用
6.1 安装 ADK
按照《ADK Python 快速入门》中的说明操作安装 ADK,并初始化一个智能体项目。
6.2 创建新的 ADK 智能体
接下来,为 BigQuery 远程 MCP 服务器集成创建一个新的智能体。
adk create cymbal_pets_analyst #When prompted, choose the following: #2.Other models(fill later)
6.3 配置 env 文件
运行以下命令,使用以下变量列表及对应的实际值更新 cymbal_pets_analyst/.env 文件。
cat >> cymbal_pets_analyst/.env <
6.4 更新智能体代码
修改 cymbal_pets_analyst/agent.py 文件,将文件内容替换为以下代码。
import os from google.adk.agents.llm_agent import Agent from google.adk.tools.mcp_tool import McpToolset from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes from google.adk.auth import OAuth2Auth from fastapi.openapi.models import OAuth2 from fastapi.openapi.models import OAuthFlowAuthorizationCode from fastapi.openapi.models import OAuthFlows from google.adk.auth import AuthCredential from google.adk.auth import AuthCredentialTypes from google.adk.auth import OAuth2Auth def get_oauth2_mcp_tool(): auth_scheme = OAuth2( flows=OAuthFlows( authorizationCode=OAuthFlowAuthorizationCode( authorizationUrl="https://accounts.google.com/o/oauth2/auth", tokenUrl="https://oauth2.googleapis.com/token", scopes={ "https://www.googleapis.com/auth/bigquery": "bigquery" }, ) ) ) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2, oauth2=OAuth2Auth( client_id=os.environ.get('OAUTH_CLIENT_ID', ''), client_secret=os.environ.get('OAUTH_CLIENT_SECRET', '') ), ) bigquery_mcp_tool_oauth = McpToolset( connection_params=StreamableHTTPConnectionParams( url='https://bigquery.googleapis.com/mcp'), auth_credential=auth_credential, auth_scheme=auth_scheme, ) return bigquery_mcp_tool_oauth root_agent = Agent( model='gemini-3-pro-preview', name='root_agent', description='Analyst to answer all questions related to cymbal pets store.', instruction='Answer user questions, use the bigquery_mcp tool to query the cymbal pets database and run queries.', tools=[get_oauth2_mcp_tool()], )
6.5 运行 ADK 应用
在包含 cymbal_pets_analyst 文件夹的父级目录中运行以下命令。
adk web --port 8000 .
打开浏览器,访问 http://127.0.0.1:8000/ 或运行 ADK 的主机地址,并在下拉菜单中选择您的智能体名称。此时,您已拥有一个可回答 cymbal pets 数据相关问题的个人智能体。当智能体连接到 MCP 服务器时,会自动发起 OAuth 授权流程,您可以在此过程中授予相应的访问权限。
如第二次提示所示,您无需再指定项目 ID。这是因为智能体可以从对话中自行推断该出信息。
以下是一些您可以提出的问题:
●my_project 中包含哪些数据集?
●cymbal_pets 数据集中包含哪些表?
●获取 cymbal_pets 数据集中 customers 表的架构信息。
●找出美国西部地区 cymbal 宠物店过去 3 个月内销量排在前 3 位的订单。识别下单客户及其邮箱。
●能否改为获取前 10 个订单,而不是前 1 个订单?
●过去 6 个月内,哪款产品最畅销?
将 BigQuery MCP 服务器与 Gemini CLI 结合使用
要使用 Gemini CLI,请在 ~/.gemini/settings.json 文件中使用以下配置。如果您已有配置,则需要将此配置合并到 mcpServers 字段下。
{ "mcpServers": { "bigquery": { "httpUrl": "https://bigquery.googleapis.com/mcp", "authProviderType": "google_credentials", "oauth": { "scopes": [ "https://www.googleapis.com/auth/bigquery" ] } } } }
然后使用 gcloud 进行身份验证。
gcloud auth application-default login --clien-id-file YOUR_CLIENT_ID_FILE
运行 Gemini CLI。
gemini
面向智能体的 BigQuery MCP 服务器
您可以将 BigQuery 工具集成到开发工作流中,并结合大语言模型和 BigQuery MCP 服务器构建数据智能体。该集成基于单一标准协议,可与所有领先的智能体开发 IDE 和框架兼容。当然,在将智能体用于生产环境或处理真实数据之前,请务必遵循 AI 安全性指南。
我们期待看到您如何利用 BigQuery MCP 服务器,开发面向数据分析的生成式 AI 应用。
全部0条评论
快来发表一下你的评论吧 !