Snowflake数据问答代理

一款基于Snowflake Managed MCP Server的ADK代理,用于回答关于Snowflake数据的自然语言问题,部署在Vertex AI Agent Engine并通过Gemini Enterprise注册,自动处理用户认证。

  • by igbokwe-emeka
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 igbokwe-emeka/snowflake-mcp

使用说明

雪花MCP试剂

一个ADK代理,使用Snowflake Managed MCP服务器来回答有关Snowflake数据的问题。它部署在 顶点AI代理引擎 并注册于 双子星企业版,其中每个用户的Entra ID OAuth凭据都会自动传播,不需要手动令牌管理。

看 认证.md 有关OAuth设置的详细信息。


建筑

Gemini Enterprise
       │  per-user OAuth token (Entra ID)
       ▼
Vertex AI Agent Engine  (ADK LlmAgent — Gemini 2.5 Flash)
       │  MCP tool call  +  Bearer token
       ▼
Snowflake Managed MCP Server
       │
       ▼
  Cortex Agent
  ├── Cortex Analyst   — natural language → SQL over structured data
  └── Cortex Search    — hybrid keyword + vector search over unstructured data
层 角色
双子星企业版 向终端用户展示代理;将每个用户的OAuth令牌自动注入到每个会话中
顶点AI代理引擎 主持ADK LlmAgent 作为推理引擎
雪花管理MCP服务器 将Cortex Agent暴露为单个MCP工具;根据Snowflake的外部OAuth安全集成验证用户的令牌
皮质分析员 通过根据语义模型生成和执行SQL来回答结构化表的问题
皮质搜索 对非结构化内容(票、文档、笔记)执行混合BM25+矢量搜索

先决条件

  • 启用了Vertex AI和发现引擎API的Google Cloud项目
  • gcloud CLI已通过身份验证(gcloud auth login)
  • 已安装ADK CLI(pip install google-adk)
  • Gemini企业数据存储/引擎已配置(提供 ENGINE_ID)
  • Snowflake OAuth的Azure AD应用程序注册(提供 CLIENTID, TENANTID, CLIENT_SECRET)

配置

所有环境变量都声明在一个单独的 .env 文件。复制示例并填写您的值:

cp .env.example .env
变量 描述
MCP_SERVER_URL 雪花管理MCP服务器端点URL
AUTH_ID 在Gemini Enterprise中注册的授权资源名称(例如。 snowflake-oauth)
GOOGLE_API_KEY Google Gemini API密钥
GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY 启用代理引擎遥测(true/false)
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT 在跟踪中捕获消息内容(true/false)
MCP_TIMEOUT_SECONDS MCP工具调用超时(默认值 30)
PROJECT_NUMBER GCP项目编号
PROJECT_ID GCP项目ID
LOCATION 发现引擎区域(例如。 us)
ENGINE_ID Gemini Enterprise引擎ID
TENANTID / CLIENTID Azure AD应用程序注册
CLIENT_SECRET Azure AD客户端机密--不受源代码控制

代理运行时配置(agent/.agent_engine_config.json)故意为空——所有变量都来自 .env 在部署时。


部署脚本

所有脚本都在 部署/ 并从以下位置加载配置 .env 自动-不需要编辑脚本。

完整管道(部署+注册)

bash deploy/deploy_agent_engine.sh

这将按顺序运行两个步骤:

步骤 脚本 操作
1 deploy_agent_engine.sh 将代理包部署到Vertex AI代理引擎
2 register_agent.sh 查找最新的推理引擎,然后将其注册到Gemini Enterprise中

仅限注册(新部署后重新注册)

bash deploy/register_agent.sh

register_agent.sh 自动获取最新的推理引擎ID。要锁定特定版本:

export REASONING_ENGINE_ID="<id>"
bash deploy/register_agent.sh

示例查询

在Gemini Enterprise注册后,用户可以提出自然语言问题。代理会自动路由到相应的Cortex工具。

Cortex分析师——结构化数据:

  • “按地区划分,上个季度的总销售额是多少?”
  • “今年哪些产品的退货率最高?”
  • “按收入显示前10名客户。”
  • “过去30天里下了多少订单?”

Cortex搜索--非结构化内容:

  • “查找有关密码重置后登录错误的支持票。”
  • “搜索企业客户的高优先级计费争议。”
  • “显示与数据导出失败相关的未结票证。”