Token导航 LogoToken导航TokenDH.com
Snowflake MCP Service logo
开发工具stdio官方级别未说明来源级核验

Snowflake MCP Service

MCP Server

MCP server implementation for Snowflake integration

工具数

2

提示词数

0

GitHub Stars

5

资源数

0
数据库连接AI代理PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

davidamom

提供方

davidamom

最后核验

2026/5/18 02:52

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

Snowflake MCP服务

一个模型上下文协议(MCP)服务器,为任何兼容MCP的客户端提供访问Snowflake数据库的权限。

License: MIT

此服务器实现了模型上下文协议(Model Context Protocol),以便任何MCP客户端能够:

  • 在Snowflake数据库上执行SQL查询
  • 自动处理数据库连接的生命周期(连接、超时后重连、关闭)
  • 处理查询结果和错误
  • 安全地执行数据库操作
  • 使用密码或密钥对认证进行连接

架构概述

什么是MCP(模型上下文协议)?

MCP是一种标准协议,允许应用程序与人工智能模型和外部服务进行通信。它使人工智能模型能够访问超出其训练数据范围的工具和数据源,通过标准化的通信接口扩展其功能。主要特性包括:

  • 基于stdio通信(标准输入/输出)
  • 结构化工具定义与发现
  • 标准化工具调用机制
  • 结构化结果传输

系统组件

Snowflake-MCP服务器由几个关键组件构成:

  1. MCP 服务器 - 实现MCP协议并处理客户端请求的核心组件
  2. Snowflake 连接管理器 - 管理数据库连接,包括创建、维护和清理
  3. 查询处理器 - 在Snowflake上执行SQL查询并处理结果
  4. 认证管理器 - 支持不同的认证方法(密码或私钥)

alt text

信息流/沟通流程

该系统通过以下通信流程工作:

  1. 一个MCP客户端(如Claude或其他MCP兼容应用程序)向MCP服务器发送请求
  2. MCP服务器使用来自(指定位置的)凭据对Snowflake进行身份验证 .env 文件
  3. MCP服务器在Snowflake上执行SQL查询
  4. Snowflake 将结果返回给 MCP 服务器
  5. MCP服务器对结果进行格式化,并将其发送回MCP客户端

alt text

这种架构实现了人工智能应用与Snowflake数据库之间的无缝集成,同时确保了安全性和高效的连接管理。

安装

  1. 克隆此仓库
git clone https://github.com/davidamom/snowflake-mcp.git
  1. 安装依赖项
pip install -r requirements.txt

配置

MCP客户端配置示例

以下是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"]
    }
  }
}

Snowflake 配置

创建一个 .env 在项目根目录中创建文件并添加以下配置:

# Snowflake Configuration - Basic Info
SNOWFLAKE_USER=your_username          # Your Snowflake username
SNOWFLAKE_ACCOUNT=YourAccount.Region  # Example: MyOrg.US-WEST-2
SNOWFLAKE_DATABASE=your_database      # Your database
SNOWFLAKE_WAREHOUSE=your_warehouse    # Your warehouse
SNOWFLAKE_ROLE=your_role              # Your role

# Authentication - Choose one method

认证选项

此MCP服务器支持两种认证方法:

  1. 密码认证
   SNOWFLAKE_PASSWORD=your_password      # Your Snowflake password
  1. 密钥对认证
   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查询。

对于开发测试,您可以使用以下命令手动启动服务器:

python server.py

注:正常使用时无需手动启动服务器。MCP客户端通常会根据配置管理服务器的启动和关闭。

Docker 使用方法

你也可以使用 Docker 来运行服务器。这种方法建议用于生产环境,以确保在不同平台上的执行一致性。

  1. 构建Docker镜像:
docker build -t snowflake-mcp .
  1. 配置您的MCP客户端以使用Docker。配置示例:
{
  "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",
        "SNOWFLAKE_ROLE": "your_role"
        
      }
    }
  }
}

注: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",
        //optional
        "-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_ROLE": "your_role",
        "SNOWFLAKE_PRIVATE_KEY_FILE": "path_for_your_private_key",
        "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "your_password_for_private_key"
      }
    }
  }
}

特点/功能

  • 确保Snowflake数据库访问安全
  • 灵活的认证方式(密码或密钥对认证)
  • 强大的错误处理和报告功能
  • 自动连接管理
  • 查询执行和结果处理
  • 兼容任何符合MCP标准的客户端

技术细节

核心组件

实现过程包括几个关键的类和模块:

  • server.py 翻译成中文是“服务器.py”或保持原名(因为“server.py”在中文语境下通常直接使用,表示一个名为“server”的Python脚本文件)。如果要更具体地描述其用途,可能会说“服务器端Python脚本文件”或“服务器程序(Python)”,但直接翻译“server.py”为“服务器.py”已足够清晰 - 包含MCP服务器实现的主要入口点。
  • Snowflake 连接 - 处理所有Snowflake数据库操作的类,包括:

- 连接建立和重新连接 - 查询执行和事务管理 - 连接维护和清理

  • Snowflake MCP 服务器 - 实现MCP协议的主要服务器类:

- 在MCP框架中注册可用工具 - 处理来自客户端的工具调用请求 - 管理连接的生命周期

连接生命周期

连接生命周期经过精心管理,以确保可靠性:

  1. 初始化 - 当接收到第一个查询时,才会按需创建连接
  2. 验证 - 在尝试连接之前,会对连接参数进行验证
  3. 监测 - 定期测试连接的有效性
  4. 恢复 - 如果连接丢失或超时,则自动重新连接
  5. 清理 - 服务器关闭时正确释放资源

MCP工具接口

服务器向MCP客户端提供了以下工具:

  • 执行查询 - 在Snowflake上执行SQL查询并返回结果

- 输入:SQL 查询字符串 - 输出:以结构化格式呈现查询结果

  • 导出为CSV文件 - 在Snowflake上执行SQL查询并返回结果

- 输入:SQL 查询字符串 - 输出:导出的行数。输出文件的文件路径

此实现遵循了MCP协议实现和Snowflake数据库交互的最佳实践。

许可证

![License: MIT](https://opensource.org/licenses/MIT)

这个项目遵循以下许可协议: 麻省理工学院许可证(MIT License). 查看 许可证 文件中有详细信息。

版权所有 (c) 2025 David Amom

目录标签

目录标签

数据库连接AI代理PythonClaudedeveloper-tools本地部署SQL执行MCP协议Snowflake集成AI工具扩展

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP