返回 MCP 目录
public公开dns本地运行

snowflake-mcp-server

一个为Snowflake数据库提供只读查询功能的MCP服务器,支持多种认证方式和SQL查询操作,可与Claude集成实现安全数据访问。

article

README

🚀 Snowflake MCP 服务器

Snowflake MCP 服务器是一个基于 Model Context Protocol (MCP) 的工具,可对 Snowflake 数据库执行只读操作。它让 Claude 能够安全查询 Snowflake 数据,且不会对数据进行任何修改。

🚀 快速开始

在使用 Snowflake MCP 服务器前,你需要完成环境变量配置,并运行服务器。具体步骤如下:

  1. 在项目根目录创建一个 .env 文件,并添加以下内容:
SNOWFLAKE_AUTH_TYPE=private_key 或 external_browser
SNOWFLAKE_PRIVATE_KEY_PATH=私钥路径(如使用 private_key 身份验证)
SNOWFLAKE_ACCOUNT_NAME=账户名称
  1. 运行服务器:
python mcp_server_snowflake/main.py

✨ 主要特性

  • 灵活的身份验证:可通过服务账户和私有密钥进行身份验证,也能使用外部浏览器进行交互式会话身份验证,从而方便地连接到 Snowflake。
  • 连接池自动刷新:带有自动背景刷新的连接池,能保持持久连接,确保服务的稳定性。
  • 多视图和数据库查询:支持在单个会话中查询多个视图和数据库,满足多样化的数据查询需求。
  • 多类型 SQL 语句支持:支持多种 SQL 语句类型,包括 SELECT、SHOW、DESCRIBE、EXPLAIN、WITH。
  • MCP 兼容处理器:具备 MCP 兼容的处理器,可用于查询 Snowflake 数据。
  • 只读操作与安全检查:仅支持只读操作,并带有安全检查,有效防止数据被修改。
  • Python 版本适配:支持 Python 3.12 及以上版本。
  • 便于集成:基于标准输入输出 (stdio) 的 MCP 服务器,便于与 Claude Desktop 集成。

📦 安装指南

安装要求

python-dotenv
mypy
ruff
pytest
pydantic
snowflake-connector-python

安装步骤

pip install python-dotenv mypy ruff pytest pydantic snowflake-connector-python

📚 详细文档

功能模块

  • mcp_server_snowflake.mcp_server:MCP 服务器主逻辑。
  • mcp_server_snowflake.models:数据模型和验证。
  • mcp_server_snowflake.auth:身份验证处理。
  • mcp_server_snowflake.utils:工具函数和配置管理。

安全注意事项

  • 所有查询都会自动添加 LIMIT 子句,以防止处理大数据集带来的风险。
  • 禁止执行任何写入操作,如 INSERT、UPDATE、DELETE。
  • 输入验证严格过滤 SQL 注入风险。
  • 私钥和凭据不会持久化到磁盘。
  • 使用 HTTPS 进行与 Snowflake 的通信。

开发信息

代码检查工具

# 静态类型检查
mypy mcp_server_snowflake/

# 代码格式检查
ruff check .

# 代码自动格式化
ruff format .

# 单元测试
pytest

贡献指南

欢迎贡献!请随意提交 Pull Request。

🔧 技术细节

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端