Snowflake MCP Service

Snowflake MCP Service

一个模型上下文协议(Model Context Protocol,MCP)服务器,为任何兼容 MCP 的客户端提供对 Snowflake 数据库的访问,允许执行 SQL 查询并自动管理连接。

Category
访问服务器

README

Snowflake MCP 服务

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

GitHub repo License: MIT

该服务器实现了模型上下文协议,允许任何 MCP 客户端:

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

架构概述

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

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

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

系统组件

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

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

alt text

通信流程

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

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

alt text

这种架构允许 AI 应用程序和 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 配置 - 基本信息
SNOWFLAKE_USER=your_username          # 您的 Snowflake 用户名
SNOWFLAKE_ACCOUNT=YourAccount.Region  # 示例: MyOrg.US-WEST-2
SNOWFLAKE_DATABASE=your_database      # 您的数据库
SNOWFLAKE_WAREHOUSE=your_warehouse    # 您的仓库

# 身份验证 - 选择一种方法

身份验证选项

此 MCP 服务器支持两种身份验证方法:

  1. 密码身份验证

    SNOWFLAKE_PASSWORD=your_password      # 您的 Snowflake 密码
    
  2. 密钥对身份验证

    SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8     # 私钥文件的路径
    SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_passphrase   # 可选:如果密钥已加密,则为密码
    

    对于密钥对身份验证,您必须首先设置与 Snowflake 的密钥对身份验证:

    • 生成密钥对并将公钥注册到 Snowflake
    • 将私钥文件安全地存储在您的机器上
    • 在配置中提供私钥文件的完整路径

    有关设置密钥对身份验证的说明,请参阅 Snowflake 关于密钥对身份验证的文档

如果配置了两种身份验证方法,服务器将优先使用密钥对身份验证。

连接管理

服务器提供自动连接管理功能:

  • 自动连接初始化

    • 在收到第一个查询时创建连接
    • 验证连接参数
  • 连接维护

    • 跟踪连接状态
    • 处理连接超时
    • 如果连接丢失,自动重新连接
  • 连接清理

    • 在服务器停止时正确关闭连接
    • 适当释放资源

用法

当使用您的 MCP 客户端配置时,服务器将自动启动。 正常操作中不需要手动启动。 服务器运行后,您的 MCP 客户端将能够执行 Snowflake 查询。

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

python server.py

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

特性

  • 安全的 Snowflake 数据库访问
  • 灵活的身份验证(密码或密钥对身份验证)
  • 强大的错误处理和报告
  • 自动连接管理
  • 查询执行和结果处理
  • 与任何符合 MCP 的客户端兼容

技术细节

核心组件

该实现由几个关键类和模块组成:

  • server.py - 包含 MCP 服务器实现的主入口点。
  • SnowflakeConnection - 处理所有 Snowflake 数据库操作的类,包括:
    • 连接建立和重新连接
    • 查询执行和事务管理
    • 连接维护和清理
  • SnowflakeMCPServer - 实现 MCP 协议的主服务器类:
    • 向 MCP 框架注册可用工具
    • 处理来自客户端的工具调用请求
    • 管理连接的生命周期

连接生命周期

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

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

MCP 工具接口

服务器向 MCP 客户端公开以下工具:

  • execute_query - 在 Snowflake 上执行 SQL 查询并返回结果
    • 输入:SQL 查询字符串
    • 输出:结构化格式的查询结果

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

许可证

License: MIT

本项目根据 MIT 许可证 获得许可。 有关详细信息,请参阅 LICENSE 文件。

版权所有 (c) 2025 David Amom

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选