项目简介
本项目是一个基于 Model Context Protocol (MCP) 构建的服务器实现,专为集成 Snowflake Cortex Agents 设计。它作为一个中间层,允许支持 MCP 协议的大型语言模型 (LLM) 客户端调用 Snowflake Cortex Agent 的能力来处理用户查询,并能执行生成的 SQL 语句。
主要功能点
- Snowflake Cortex Agent 集成: 作为 MCP 工具暴露 Snowflake 的 Cortex Agent 功能,允许 LLM 直接利用 Cortex Agent 进行文本转 SQL、搜索等操作。
- SQL 执行能力: 能够执行 Cortex Agent 生成或由 LLM 指定的 SQL 语句,并将结果返回给 LLM。
- MCP 协议通信: 通过标准的 JSON-RPC 协议与 MCP 客户端(如 Claude Desktop)进行通信。
- 环境配置: 使用环境变量管理 Snowflake 连接信息和 Agent 配置,方便部署和维护。
安装步骤
-
克隆仓库: 从 GitHub 克隆本项目到本地。
git clone https://github.com/Snowflake-Labs/sfguide-mcp-cortex-agents.git cd sfguide-mcp-cortex-agents -
安装依赖: 安装项目所需的 Python 库。通常需要 'fastmcp', 'httpx', 'python-dotenv'。
pip install fastmcp httpx python-dotenv # 如果有 requirements.txt 文件,则使用 pip install -r requirements.txt -
设置环境变量: 创建或更新 '.env' 文件,或者在系统环境中设置以下变量:
- 'SNOWFLAKE_ACCOUNT_URL': 您的 Snowflake 账户 URL(例如:'https://<account_identifier>.snowflakecomputing.com')
- 'SNOWFLAKE_PAT': 您的 Snowflake 编程访问令牌 (Programmatic Access Token)
- 'SEMANTIC_MODEL_FILE': 用于 Cortex Agent Analyst 工具的语义模型文件路径
- 'CORTEX_SEARCH_SERVICE': 用于 Cortex Agent Search 工具的搜索服务名称
这些配置信息是连接和使用 Snowflake Cortex Agent 所必需的。请参考 Snowflake 文档获取详细信息。
服务器配置 (供 MCP 客户端使用)
本 MCP 服务器通过标准输入输出 (StdIO) 进行通信。为了让支持 MCP 的客户端(如 Claude Desktop)能够启动并连接到此服务器,您需要在客户端中添加一个 MCP 服务器配置。配置通常以 JSON 格式表示,包含服务器名称、通信方式以及启动命令。
以下是一个示例配置,您需要在客户端的相应界面或配置文件中添加:
{ "name": "cortex_agent", // 服务器的唯一名称,与代码中FastMCP初始化时一致 "description": "Snowflake Cortex Agent and SQL Execution Server", // 服务器的简要描述 "transport": { "type": "stdio", // 通信方式:标准输入输出 "command": ["python", "/path/to/your/cloned/repo/cortex_agents.py"] // 启动服务器的命令,请替换为实际文件路径 } // 客户端可能会根据服务器声明的能力(如工具列表)自动显示可用功能 }
请将 '/path/to/your/cloned/repo/cortex_agents.py' 替换为您实际克隆本项目后 'cortex_agents.py' 文件的完整路径。
基本使用方法
一旦服务器配置添加到 MCP 客户端并成功启动(客户端通常会自动管理服务器进程),客户端(如 LLM)就可以通过 MCP 协议调用服务器提供的工具。
本服务器主要提供了名为 'run_cortex_agents' 的工具。LLM 客户端可以通过发送相应的 MCP 请求来调用此工具,并传递一个查询字符串作为参数。
示例工具调用请求(由客户端生成,您无需手动执行):
{ "jsonrpc": "2.0", "method": "tool_code", "params": { "tool_name": "cortex_agent.run_cortex_agents", // 工具的完整名称 (服务器名.工具名) "tool_input": { "query": "给我查找2023年销售额最高的产品名称和销售额" // 用户或LLM的查询 } }, "id": "request-id-123" }
服务器接收到请求后,会执行 'run_cortex_agents' 函数,该函数会调用 Snowflake Cortex Agent API 处理查询,可能生成并执行 SQL,并将结果(文本响应、SQL、执行结果、引用信息等)通过 MCP 响应返回给客户端。LLM 客户端随后可以使用这些信息来生成最终回复给用户。
信息
分类
AI与计算