谷歌云服务商 | 借助 BigQuery 完全托管的远程 MCP 服务器,更快地构建数据分析代理

由谷歌云授权代理服务商CloudAce深圳云一翻译并发布。信息来源:谷歌云

将 AI 代理连接到企业数据不应需要复杂的自定义集成或数周的开发时间。随着上个月面向 Google 服务的完全托管式远程模型上下文协议 (MCP) 服务器的发布,您现在可以使用 BigQuery MCP 服务器,为您的 AI 代理提供一种直接、安全的方式来分析数据。这种完全托管的 MCP 服务器消除了管理开销,使您能够专注于开发智能代理。

MCP 服务器对 BigQuery 的支持也可通过开源的MCP 数据库工具箱获得,该工具箱专为那些寻求更高灵活性和服务器控制权的用户而设计。在本博文中,我们将讨论并演示新发布的完全托管式远程 BigQuery 服务器的集成,该服务器目前处于预览阶段(截至 2026 年 1 月)。

远程 MCP 服务器运行在服务的基础设施上,并为 AI 应用程序提供 HTTP 端点。这使得 AI MCP 客户端和 MCP 服务器能够使用预定义的标准进行通信。

MCP 通过一套预定义的工具,使基于 LLM 的应用程序能够直接访问您的分析数据,从而加速 AI 代理的构建过程。使用 Google OAuth 身份验证方法将 BigQuery MCP 服务器与 ADK 集成非常简单,如下文关于代理开发工具包 (ADK)Gemini CLI 的讨论所示。此外,LangGraph、Claude Code、Cursor IDE 或其他 MCP 客户端等平台和框架也可以轻松集成。

我们开始吧。

将 BigQuery MCP 服务器与 ADK 结合使用

要使用 ADK 构建 BigQuery Agent 原型,请按照以下六个步骤操作:

  1. 前提条件:设置项目、必要的设置和环境。

  2. 配置:启用 MCP 和所需的 API。

  3. 加载示例数据集。

  4. 创建 OAuth 客户端。

  5. 创建 Gemini API 密钥。

  6. 创建并测试代理。

重要提示:在计划生产部署或使用真实数据的 AI 代理时,请确保遵守 AI 安全、稳定性 可靠性准则。

步骤 1:前提条件 > 配置和环境

1.1 设置云项目
创建或使用已启用结算功能的现有 Google Cloud 项目

1.2 用户角色
请确保您的用户帐户拥有以下项目权限:

  1. roles/bigquery.user(用于运行查询)

  2. roles/bigquery.dataViewer(用于访问数据)

  3. roles/mcp.toolUser(用于访问 MCP 工具)

  4. roles/serviceusage.serviceUsageAdmin(用于启用 API)

  5. roles/iam.oauthClientViewer(OAuth)

  6. roles/iam.serviceAccountViewer(OAuth)

  7. 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 服务器。

  1. 在 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"值,请使用以下命令的输出:
    (Cloud Shell 中的 URI 是临时的,会在当前会话结束后过期)echo "https://8000-$WEB_HOST/dev-ui/"

注意: 如果您决定使用 Web 服务器,则需要使用"Web 应用程序"类型的 OAuth 客户端,并填写相应的域和重定向 URI。

步骤 5:Gemini API 密钥

5.1 创建 Gemini API 密钥在
API 密钥页面创建 Gemini API 密钥。我们需要一个生成的密钥才能使用 ADK 访问 Gemini 模型。

步骤 6:创建 ADK Web 应用程序

6.1 安装 ADK
要安装 ADK 并启动代理项目,请按照ADK 的 Python 快速入门指南中的说明进行操作。

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 <<EOF
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_CLOUD_PROJECT=BIGQUERY_PROJECT
GOOGLE_CLOUD_LOCATION=REGION
GOOGLE_API_KEY=AI_STUDIO_API_KEY
OAUTH_CLIENT_ID=YOUR_CLIENT_ID
OAUTH_CLIENT_SECRET=YOUR_CLIENT_SECRET
EOF

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 表的模式

  • 找出美国西部地区钹类宠物店过去三个月内订单量排名前三的订单。确定下单的客户及其邮箱地址。

  • 能否提供前 10 个订单而不是第一个?

  • 过去六个月里,哪种产品销量最高?

将 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 工具集成到开发工作流程中,并使用 LLM 和 BigQuery MCP 服务器创建智能数据代理。集成基于单一的标准协议,该协议与所有主流代理开发 IDE 和框架兼容。当然,在构建用于生产环境的代理或将其用于真实数据之前,请务必遵循AI 安全准则。

我们非常期待看到您如何利用 BigQuery MCP 服务器开发数据分析生成式 AI 应用。

相关推荐
以太浮标2 小时前
华为eNSP模拟器综合实验之- VLAN-QinQ技术解析
运维·网络·华为·信息与通信
木叶子---2 小时前
Docker
运维·docker·容器
Xの哲學2 小时前
Linux epoll 深度剖析: 从设计哲学到底层实现
linux·服务器·网络·算法·边缘计算
小白不想白a2 小时前
linux排障:服务端口被打满
linux·服务器·网络
CryptoPP2 小时前
对接API获取马来西亚历史数据
linux·运维·服务器·金融·区块链
凯子坚持 c3 小时前
基于Docker的SD-WAN组网方案:利用节点小宝实现服务器远程开发
服务器·docker·容器
野犬寒鸦3 小时前
从零起步学习MySQL || 第十六章:MySQL 分库分表的考量策略
java·服务器·数据库·后端·mysql
盈创力和20073 小时前
以太网温湿度传感器如何提升机房环境监控的自动化与可靠性?
运维·自动化·以太网温湿度传感器·多协议支持·网络型温湿度传感器·物联网温湿度变送器·双重供电温湿度传感器