使用说明
雪花+郎链MCP演示
使用演示 语言链/语言图 随着 模型上下文协议(MCP) 将AI代理连接到 Snowflake的完全托管MCP服务器此演示展示了一个代理工作流程,其中LangChain代理(在本例中由任何LLM-Gemini提供支持)通过Snowflake Cortex代理协调安全数据分析并触发下游业务操作。
概述
此演示使用以下工具实现了完整的代理工作流 LangGraph的代理框架:
- 目标接收:代理人收到业务目标(例如,“找到收入下降的根本原因”)
- 工具选择:LLM(Gemini/OpenAI等)分析原因并选择合适的雪花皮层代理工具
- 数据操作:LangChain代理调用雪花管理MCP服务器
- 观察:接收Snowflake安全分析的结构化结果
- 下游决策:LLM综合数据并确定下一步行动
- 业务动作:触发外部系统切换(模拟Salesforce/Jira警报)
- 最终合成:提供全面的自然语言报告
备注:虽然此演示使用Gemini,但您可以通过更改模型初始化轻松交换任何LLM(OpenAI GPT-4、Claude、Llama等)。
建筑
┌──────────────┐ ┌──────────────────────────────────┐ ┌─────────────────┐
│ LangChain │◄────►│ Snowflake Managed MCP Server │◄────►│ Cortex Agent │
│ Agent │ │ (OAuth/PAT Authentication) │ │ + Analyst Tool │
│ (LLM-powered)│ │ │ │ │
└──────────────┘ └──────────────────────────────────┘ └─────────────────┘
│ │
│ ▼
│ ┌──────────────────┐
└────────────────────────────────────────────────────────►│ Revenue Data │
│ (Semantic View) │
└──────────────────┘
先决条件
- 雪花账户
- 能够创建数据库、模式和MCP服务器
- LLM API密钥 -此演示使用Gemini(获取API密钥),但您可以使用:
- OpenAI GPT-4(OpenAI API)
- 人物克劳德(Anthropic 控制台)
- 任何其他LangChain支持的LLM
- Python 3.8+
安装说明
1.克隆存储库
git clone https://github.com/sfc-gh-aperezgonzalez/mcp-client-demo.git
cd mcp-client-demo
2.设置雪花环境
执行 setup.sql Snowflake帐户中的脚本。这将:
- 创建
MCP_DEMO数据库和SALES_DATA模式 - 创建一个
REVENUE_FACT带有模拟销售数据的表格 - 创建语义视图(
REVENUE_SV)Cortex分析师 - 创建Cortex代理(
REVENUE_TROUBLESHOOTER_AGENT)用于深入的收入分析 - 创建MCP服务器(
SALES_INSIGHT_SERVER)将代理暴露为工具
-- Run the entire setup.sql file in a Snowflake worksheet
-- Or execute via Snowflake CLI:
snow sql -f setup.sql
3.生成雪花身份验证令牌
您需要一个程序化访问令牌(PAT)或OAuth令牌。对于PAT:
- 在Snowflake中,转到“用户和角色”,选择一个用户
- 导航到“程序化访问令牌”
- 生成新令牌
- 复制令牌值(它看起来像一个很长的JWT字符串)
有关更多详细信息,请参阅 Snowflake REST API身份验证.
4.配置演示
编辑 agent_test_mcp_gemini.py 并更新配置部分:
# --- USER CONFIGURATION ---
SNOWFLAKE_MCP_URL = "https://{your-account}.snowflakecomputing.com/api/v2/databases/MCP_DEMO/schemas/SALES_DATA/mcp-servers/SALES_INSIGHT_SERVER"
SNOWFLAKE_AUTH_TOKEN = "your_pat_token_here"
重要:替换 {your-account} 使用您的Snowflake帐户标识符。注:
- 使用 连字符 主机名中的(非下划线)
- 更多关于帐户标识符的信息
5.设置Python环境
# Create virtual environment
python -m venv venv_mcp_gemini
# Activate virtual environment
# On macOS/Linux:
source venv_mcp_gemini/bin/activate
# On Windows:
# venv_mcp_gemini\Scripts\activate
# Install dependencies
pip install mcp langchain langchain-core langchain-google-genai langchain-mcp-adapters langgraph
6.设置环境变量
# Set your Gemini API key
export GEMINI_API_KEY="your_gemini_api_key_here"
运行演示
python agent_test_mcp_gemini.py
期望输出
🔗 Connecting to managed MCP Server at: https://your-account.snowflakecomputing.com/...
✅ Tools Discovered from Snowflake MCP: ['troubleshooter_agent']
🧠 Running Agent with Goal: Using the 'troubleshooter_agent' tool, analyze the data...
========================================
🚨 ALERT CREATED IN EXTERNAL SYSTEM (Simulated Salesforce/Jira API)
Target Customer ID: CUST_A
Action Summary: CUST_A revenue declined by 75%...
========================================
==================================
🔥 Final Orchestration Result from Gemini:
The revenue decline in the WEST region for Product_Line_X is primarily due to
CUST_A's 75% revenue reduction and CUST_B's complete inactivity after August...
==================================
发生什么事了?
- 连接:代理使用PAT身份验证连接到Snowflake MCP服务器
- 工具发现:列出可用工具(您创建的Cortex代理)
- 分析:Gemini客服致电
troubleshooter_agent通过MCP工具 - 雪花加工:Cortex Agent使用Cortex Analyst查询语义视图并分析收入模式
- 结果:代理收到将CUST_A和CUST_B标识为问题区域的发现
- 行动:代理触发外部警报(模拟),以便销售团队跟进
- 合成:Gemini提供结合所有见解的自然语言摘要
项目结构
mcp-client-demo/
├── README.md # This file
├── setup.sql # Snowflake database and MCP server setup
├── agent_test_mcp_gemini.py # Main demo script
├── .gitignore # Git ignore file
└── venv_mcp_gemini/ # Python virtual environment (not tracked)
关键技术
- LangChain & LangGraph:代理编排框架-实现代理工作流的核心
- 模型上下文协议(MCP):AI代理工具集成的开放标准
- 雪花管理MCP服务器:安全、有管理的MCP实施
- 皮质剂:雪花的代理编排系统
- 皮质分析员:用于语义数据的SQL自然语言
- LLM由您选择:Gemini、OpenAI GPT-4、Claude或任何LangChain支持的模型
安全最佳实践
- ⚠️ 从不提交代币:保持
SNOWFLAKE_AUTH_TOKEN和LLM API密钥超出版本控制 - 🔒 使用OAuth进行生产部署。使用硬编码令牌可能会导致令牌泄漏。
- 🛡️ 对MCP服务器和工具访问应用最小权限RBAC
- 🔑 定期旋转令牌
- 📋 看 MCP安全建议
故障排除
SSL证书错误
certificate verify failed: Hostname mismatch
解决方案:确保您的主机名使用连字符,而不是下划线(例如。, aperez-aws1 不 aperez_aws1)
认证失败
PAT_INVALID error
解决方案:
- 验证您的PAT令牌是否正确且未过期
- 确保用户具有访问MCP服务器的适当权限
Gemini API利率限制
429 Resource exhausted
解决方案:脚本将自动重试。如果持续存在,请在两次运行之间等待几秒钟。
定制
交换LLM
此演示使用Gemini,但您可以轻松使用任何其他LLM。只需在中更改模型初始化 agent_test_mcp_gemini.py:
对于OpenAI:
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
model="gpt-4",
temperature=0,
openai_api_key=os.getenv("OPENAI_API_KEY")
)
对于拟人克劳德:
from langchain_anthropic import ChatAnthropic
model = ChatAnthropic(
model="claude-3-5-sonnet-20241022",
temperature=0,
anthropic_api_key=os.getenv("ANTHROPIC_API_KEY")
)
对于Azure OpenAI:
from langchain_openai import AzureChatOpenAI
model = AzureChatOpenAI(
azure_deployment="your-deployment-name",
api_version="2024-02-15-preview",
temperature=0
)
更改分析提示
修改 analysis_prompt 变量in agent_test_mcp_gemini.py:
analysis_prompt = (
"Your custom business question here..."
)
添加更多模拟数据
编辑 setup.sql 并向中添加更多INSERT语句 REVENUE_FACT:
INSERT INTO REVENUE_FACT (CUSTOMER_ID, REGION, PRODUCT_LINE, SALES_REP_ID, REVENUE_USD, SALE_DATE)
VALUES ('CUST_NEW', 'NORTH', 'Product_Line_Z', 'ABC', 30000.00, '2025-12-01');
创建其他工具
在中向MCP服务器添加更多工具 setup.sql:
CREATE OR REPLACE MCP SERVER SALES_INSIGHT_SERVER
FROM SPECIFICATION $$
tools:
- name: "troubleshooter_agent"
type: "CORTEX_AGENT_RUN"
identifier: "MCP_DEMO.SALES_DATA.REVENUE_TROUBLESHOOTER_AGENT"
description: "Revenue analysis agent"
- name: "your_new_tool"
type: "SYSTEM_EXECUTE_SQL" # or other type
description: "Your tool description"
$$;
了解更多
许可证
本项目按原样提供,用于演示目的。
贡献
欢迎问题和拉取请求!请随时提供改进或其他示例。
联系
如有疑问或反馈,请在此存储库上打开一个问题。