Snowflake MCP Service 使用说明

项目简介

Snowflake MCP Service 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为 Claude 等大型语言模型 (LLM) 提供访问 Snowflake 数据库的能力。通过此服务,Claude 可以执行 SQL 查询,获取 Snowflake 中的数据,从而扩展其知识范围和数据分析能力。

主要功能点

  • 安全地执行 Snowflake SQL 查询: 允许 Claude 通过工具调用执行 SQL 查询,获取 Snowflake 数据库中的数据。
  • 自动数据库连接管理: 服务器自动处理与 Snowflake 数据库的连接,包括首次查询时建立连接、连接保活、超时重连和服务器停止时关闭连接,无需手动管理数据库连接的生命周期。
  • 支持密码和密钥对认证: 支持 Snowflake 的密码认证和更安全的密钥对认证方式,用户可以根据安全需求选择合适的认证方式。
  • 详细的日志记录: 提供全面的日志记录,方便开发者监控服务器运行状态和排查问题。
  • 错误处理和报告: 能够捕获和报告 SQL 查询执行过程中的错误,并将错误信息返回给客户端。

安装步骤

  1. 克隆仓库: 首先,你需要将 GitHub 仓库 'snowflake-mcp' 克隆到本地:
    git clone https://github.com/davidamom/snowflake-mcp.git
  2. 安装依赖: 进入克隆的仓库目录,并使用 pip 安装项目依赖:
    cd snowflake-mcp
    pip install -r requirements.txt

服务器配置

为了让 MCP 客户端(例如 Claude)能够连接到 Snowflake MCP Service,你需要在客户端的配置文件中添加服务器配置信息。以 'claude_desktop_config.json' 为例,你需要配置 'mcpServers' 字段,指定服务器名称、启动命令和参数。

MCP 客户端配置示例 (JSON 格式):

{
  "mcpServers": {
    "snowflake": {
      "command": "/path/to/python3",  // Python 解释器路径,请替换为你实际的 Python 3 解释器路径
      "args": ["/path/to/snowflake-mcp/server.py"] // 服务器脚本路径,请替换为你克隆的 snowflake-mcp 仓库中 server.py 脚本的路径
    }
  }
}

参数说明:

  • '"snowflake"': 服务器名称,可以自定义,用于在客户端中标识该服务器。
  • '"command"': 必填。Python 3 解释器的完整路径。你需要根据你的操作系统和 Python 安装位置进行修改。
    • 例如,在 macOS 或 Linux 上,通常为 '/usr/bin/python3' 或 '/usr/local/bin/python3'。
    • 在 Windows 上,可能是 'C:\Users\YourUsername\anaconda3\python.exe' 或 'C:\Python39\python.exe'。
  • '"args"': 必填。一个字符串数组,包含服务器启动脚本的路径。这里需要填写你克隆的 'snowflake-mcp' 仓库中 'server.py' 脚本的完整路径。

Snowflake 数据库配置:

Snowflake MCP Service 需要连接到你的 Snowflake 数据库才能工作。数据库连接信息通过 '.env' 文件配置。在克隆的 'snowflake-mcp' 仓库根目录下,创建名为 '.env' 的文件,并按照以下格式填写你的 Snowflake 数据库连接信息:

# Snowflake Configuration - Basic Info
SNOWFLAKE_USER=your_snowflake_username          # 你的 Snowflake 用户名
SNOWFLAKE_ACCOUNT=YourAccount.Region          # 你的 Snowflake Account,例如: MyOrg.US-WEST-2
SNOWFLAKE_DATABASE=your_snowflake_database      # 你要连接的 Snowflake 数据库名
SNOWFLAKE_WAREHOUSE=your_snowflake_warehouse    # 你要使用的 Snowflake Warehouse 名称

# Authentication - 选择一种认证方式

# 方式 1: 密码认证 (不推荐生产环境使用)
# SNOWFLAKE_PASSWORD=your_snowflake_password      # 你的 Snowflake 密码

# 方式 2: 密钥对认证 (推荐)
# SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8     # RSA 私钥文件路径,请替换为你实际的私钥文件路径
# SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_key_passphrase   # (可选) 私钥密码,如果你的私钥文件设置了密码,请填写

配置说明:

  • 'SNOWFLAKE_USER': 你的 Snowflake 用户名。
  • 'SNOWFLAKE_ACCOUNT': 你的 Snowflake Account 标识符,可以在 Snowflake Web UI 的 URL 中找到。
  • 'SNOWFLAKE_DATABASE': 你要连接的 Snowflake 数据库名称。
  • 'SNOWFLAKE_WAREHOUSE': 你要使用的 Snowflake Warehouse 名称,用于执行 SQL 查询。
  • 'SNOWFLAKE_PASSWORD': (密码认证) 你的 Snowflake 密码。不推荐在生产环境中使用密码认证,密钥对认证更安全。
  • 'SNOWFLAKE_PRIVATE_KEY_FILE': (密钥对认证) 你的 RSA 私钥文件 ( '.p8' 文件) 的完整路径。你需要先在 Snowflake 中配置密钥对认证。
  • 'SNOWFLAKE_PRIVATE_KEY_PASSPHRASE': (密钥对认证) 如果你的私钥文件设置了密码,请填写私钥密码。

请务必根据你的 Snowflake 账号信息和选择的认证方式,正确配置 '.env' 文件。

基本使用方法

Snowflake MCP Service 设计为与 MCP 客户端自动协同工作。一旦你完成了客户端和服务器的配置,并在客户端中启用了 "snowflake" 服务器,客户端就能自动启动和管理 Snowflake MCP Service。

通常情况下,你不需要手动启动 'server.py' 脚本。MCP 客户端会在需要时自动启动服务器。

如果你需要进行开发测试,可以手动运行 'server.py' 脚本来启动服务器:

python server.py

但这仅用于开发测试,正常使用时应由 MCP 客户端自动管理服务器的生命周期。

启动后,当 Claude 等 MCP 客户端需要访问 Snowflake 数据时,它会通过 "execute_query" 工具调用 Snowflake MCP Service,服务会将 SQL 查询发送到 Snowflake 数据库执行,并将结果返回给客户端。

信息

分类

数据库与文件