Snowflake MCP协议服务器添加福利群:解决AI开发者的「MCP实战痛点」一个模型上下文协议(MCP)服务器,为任何兼容 MCP 的客户端提供访问 Snowflake 数据库的能力。
该服务器实现了模型上下文协议,允许任何 MCP 客户端:
MCP 是一种标准协议,允许应用程序与 AI 模型和外部服务进行通信。它使 AI 模型能够访问其训练数据之外的工具和数据源,通过标准化的通信接口扩展其能力。关键特性包括:
Snowflake-MCP 服务器由以下几个关键组件组成:
系统通过以下通信流程工作:
.env 文件中的凭据与 Snowflake 进行认证该架构允许 AI 应用程序与 Snowflake 数据库之间的无缝集成,同时保持安全性和高效的连接管理。
git clone https://github.com/davidamom/snowflake-mcp.git

pip install -r requirements.txt
以下是 Claude Desktop 的配置示例,但该服务器适用于任何兼容 MCP 的客户端。每个客户端可能有自己的配置方法:
{
"mcpServers": {
"snowflake": {
"command": "C:\\Users\\YourUsername\\path\\to\\python.exe",
"args": ["C:\\path\\to\\snowflake-mcp\\server.py"]
}
}
}

配置参数:
command: Python 解释器的完整路径。请根据您的 Python 安装位置进行修改。args: 服务器脚本的完整路径。请根据您克隆仓库的位置进行修改。不同操作系统的示例路径:
Windows:
{
"mcpServers": {
"snowflake": {
"command": "C:\\Users\\YourUsername\\anaconda3\\python.exe",
"args": ["C:\\Path\\To\\snowflake-mcp\\server.py"]
}
}
}

MacOS/Linux:
{
"mcpServers": {
"snowflake": {
"command": "/usr/bin/python3",
"args": ["/path/to/snowflake-mcp/server.py"]
}
}
}

在项目根目录下创建 .env 文件并添加以下配置:
# Snowflake 配置 - 基本信息 SNOWFLAKE_USER=your_username # 您的 Snowflake 用户名 SNOWFLAKE_ACCOUNT=YourAccount.Region # 示例:MyOrg.US-WEST-2 SNOWFLAKE_DATABASE=your_database # 您的数据库 SNOWFLAKE_WAREHOUSE=your_warehouse # 您的仓库 # 认证 - 选择一种方法
该 MCP 服务器支持两种认证方法:
密码认证
SNOWFLAKE_PASSWORD=your_password # 您的 Snowflake 密码
密钥对认证
SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8 # 私钥文件的路径 SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_passphrase # 可选:如果密钥已加密,则提供密码
对于密钥对认证,您必须首先在 Snowflake 中设置密钥对认证:
有关设置密钥对认证的说明,请参阅 Snowflake 密钥对认证文档。
如果同时配置了两种认证方法,服务器将优先使用密钥对认证。
服务器提供自动连接管理功能:
自动连接初始化
连接维护
连接清理
当与您的 MCP 客户端配置好后,服务器将自动启动。在正常操作中不需要手动启动。一旦服务器运行,您的 MCP 客户端将能够执行 Snowflake 查询。
对于开发测试,您可以使用以下命令手动启动服务器:
python server.py
注意:正常使用时不需要手动启动服务器。MCP 客户端通常会根据配置管理服务器的启动和关闭。
您也可以使用 Docker 运行服务器。推荐在生产环境中使用此方法,以确保在不同平台上的一致性执行。
docker build -t snowflake-mcp .
{
"mcpServers": {
"snowflake-docker": {
"command": "docker",
"args": [
"run",
"-i",
"snowflake-mcp"
],
"env": {
"SNOWFLAKE_USER": "your_username",
"SNOWFLAKE_ACCOUNT": "your_account",
"SNOWFLAKE_DATABASE": "your_database",
"SNOWFLAKE_WAREHOUSE": "your_warehouse",
"SNOWFLAKE_PASSWORD": "your_password"
}
}
}
}

注意:Docker 实现使用 stdio 进行通信,因此不需要暴露端口。
如果使用 Docker 进行密钥对认证,您需要挂载您的私钥文件:
docker run -i -v /path/to/your/key.p8:/app/rsa_key.p8:ro snowflake-mcp
并相应地更新您的配置:
{
"mcpServers": {
"Snowflake-Docker": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"/path/to/your/key.p8:/app/rsa_key.p8:ro",
//可选
"-v",
"/path/to/export/dir/:/export/"
"snowflake-mcp"
],
"env": {
"SNOWFLAKE_USER": "your_username",
"SNOWFLAKE_ACCOUNT": "your_account",
"SNOWFLAKE_DATABASE": "your_database",
"SNOWFLAKE_WAREHOUSE": "your_warehouse",
"SNOWFLAKE_PRIVATE_KEY_FILE": "/app/rsa_key.p8"
}
}
}
}

实现由几个关键类和模块组成:
连接生命周期经过精心管理以确保可靠性:
服务器向 MCP 客户端公开以下工具:
execute_query - 在 Snowflake 上执行 SQL 查询并返回结果
export_to_csv - 在 Snowflake 上执行 SQL 查询并返回结果
该实现遵循 MCP 协议实现和 Snowflake 数据库交互的最佳实践。
该项目采用 MIT 许可证 授权。详情请参阅 LICENSE 文件。
版权所有 (c) 2025 David Amom