Snowflake MCP 服务
模型上下文协议 (MCP) 服务器,为任何兼容 MCP 的客户端提供对 Snowflake 数据库的访问。
该服务器实现了模型上下文协议,以允许任何 MCP 客户端:
在 Snowflake 数据库上执行 SQL 查询
自动处理数据库连接生命周期(连接、超时重新连接、关闭)
处理查询结果和错误
安全地执行数据库操作
使用密码或密钥对身份验证进行连接
架构概述
什么是 MCP(模型上下文协议)?
MCP 是一种标准协议,允许应用程序与 AI 模型和外部服务进行通信。它使 AI 模型能够访问训练数据以外的工具和数据源,从而通过标准化通信接口扩展其功能。主要功能包括:
基于stdio通信(标准输入/输出)
结构化工具定义和发现
标准化工具调用机制
结构化结果传输
系统组件
Snowflake-MCP 服务器由几个关键组件组成:
MCP 服务器- 实现 MCP 协议并处理客户端请求的中央组件
Snowflake 连接管理器- 管理数据库连接,包括创建、维护和清理
查询处理器——在 Snowflake 上执行 SQL 查询并处理结果
身份验证管理器- 处理不同的身份验证方法(密码或私钥)
通信流程
该系统通过以下通信流程工作:
MCP 客户端(例如 Claude 或其他兼容 MCP 的应用程序)向 MCP 服务器发送请求
MCP 服务器使用
.env文件中的凭证向 Snowflake 进行身份验证MCP 服务器在 Snowflake 上执行 SQL 查询
Snowflake 将结果返回给 MCP 服务器
MCP 服务器格式化并将结果发送回 MCP 客户端
该架构允许AI应用程序和Snowflake数据库之间的无缝集成,同时保持安全性和高效的连接管理。
Related MCP server: Database MCP Server
安装
克隆此存储库
安装依赖项
配置
MCP 客户端配置示例
以下是 Claude Desktop 的示例配置,但此服务器可与任何兼容 MCP 的客户端兼容。每个客户端可能有自己的配置方法:
配置参数:
command:Python 解释器的完整路径。请根据您的 Python 安装位置进行修改。args:服务器脚本的完整路径。请根据您克隆存储库的位置进行修改。
不同操作系统的示例路径:
视窗:
MacOS/Linux:
雪花配置
在项目根目录下创建.env文件,并添加以下配置:
身份验证选项
此 MCP 服务器支持两种身份验证方法:
密码验证
SNOWFLAKE_PASSWORD=your_password # Your Snowflake password密钥对认证
SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8 # Path to private key file SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_passphrase # Optional: passphrase if key is encrypted对于密钥对认证,您必须首先使用 Snowflake 设置密钥对认证:
生成密钥对,并向 Snowflake 注册公钥
将私钥文件安全地存储在您的机器上
在配置中提供私钥文件的完整路径
有关设置密钥对认证的说明,请参阅Snowflake 文档中的密钥对认证。
如果两种认证方式都配置了,服务器会优先进行密钥对认证。
连接管理
服务器提供自动连接管理功能:
自动连接初始化
收到第一个查询时创建连接
验证连接参数
连接维护
跟踪连接状态
处理连接超时
如果连接丢失则自动重新连接
连接清理
服务器停止时正确关闭连接
适当释放资源
用法
标准用法
使用您的 MCP 客户端配置后,服务器将自动启动。正常运行时无需手动启动。服务器运行后,您的 MCP 客户端将能够执行 Snowflake 查询。
对于开发测试,您可以使用以下方式手动启动服务器:
注意:正常使用时无需手动启动服务器。MCP 客户端通常会根据配置管理服务器的启动和关闭。
Docker 使用
您也可以使用 Docker 运行服务器。建议在生产环境中使用此方法,以确保在不同平台上的执行一致性。
构建 Docker 镜像:
配置您的 MCP 客户端以使用 Docker。示例配置:
注意:Docker 实现使用 stdio 进行通信,因此不需要公开端口。
如果使用 Docker 的密钥对身份验证,则需要挂载您的私钥文件:
并相应地更新您的配置:
特征
安全的 Snowflake 数据库访问
灵活的身份验证(密码或密钥对身份验证)
强大的错误处理和报告
自动连接管理
查询执行和结果处理
与任何符合 MCP 标准的客户端兼容
技术细节
核心组件
该实现由几个关键的类和模块组成:
**server.py——**包含 MCP 服务器实现的主入口点。
SnowflakeConnection - 处理所有 Snowflake 数据库操作的类,包括:
连接建立和重新连接
查询执行和事务管理
连接维护和清理
**SnowflakeMCPServer——**实现 MCP 协议的主服务器类:
向 MCP 框架注册可用的工具
处理来自客户端的工具调用请求
管理连接的生命周期
连接生命周期
连接生命周期经过精心管理以确保可靠性:
初始化- 当收到第一个查询时,连接被延迟创建
验证- 在尝试连接之前验证连接参数
监控——定期测试连接的有效性
恢复- 如果连接丢失或超时,则自动重新连接
清理- 服务器关闭时正确释放资源
MCP 工具接口
服务器向 MCP 客户端公开以下工具:
执行查询- 在 Snowflake 上执行 SQL 查询并返回结果
输入:SQL 查询字符串
输出:结构化格式的查询结果
export_to_csv - 在 Snowflake 上执行 SQL 查询并返回结果
输入:SQL 查询字符串
输出:导出的行数。输出文件的文件路径
此实现遵循 MCP 协议实现和 Snowflake 数据库交互的最佳实践。
执照
版权所有 (c) 2025 David Amom