article
README
🚀 Snowflake MCP 服务器
Snowflake MCP 服务器是一款用于对 Snowflake 数据库执行只读操作的模型上下文协议(MCP)服务器。它能让 Claude 在不修改任何信息的情况下,安全地查询 Snowflake 数据。
🚀 快速开始
Snowflake MCP 服务器可让 Claude 安全地对 Snowflake 数据库进行只读查询。以下为你介绍如何快速开启使用之旅:
安装
先决条件
- Python 3.12+
- Snowflake 账户(需具备只读权限)
安装步骤
- 复制
.env.example文件并重命名为.env。 - 配置环境变量:
cp .env.example .env
# 配置以下内容到.env文件中
SNOWFLAKE_AUTH_TYPE=private_key # 或 external_browser
SNOWFLAKE_ACCOUNT_NAME=your_account_name
SNOWFLAKE_USER_NAME=your_user_name
SNOWFLAKE_PRIVATE_KEY_PATH=path_to_your_private_key # 如果使用 private_key 认证
- 安装依赖:
pip install -r requirements.txt
运行服务器
python mcp_server_snowflake.py
与 Claude 桌面集成
- 在终端中运行服务器。
- 打开 Claude 桌面并连接到运行中的 MCP 服务器即可开始交互。
✨ 主要特性
- 灵活的身份验证:可通过以下方式连接到 Snowflake:
- 使用服务账户和私有密钥进行身份验证。
- 使用外部浏览器进行交互式会话身份验证。
- 连接池管理:带自动后台刷新,以保持长时间运行的连接。
- 丰富的操作支持:支持查询数据、显示数据库结构、描述查询计划、解释执行计划以及限制结果集大小等操作。
- 自动添加限制:自动添加
LIMIT子句以防止大数据集的返回。 - 输入验证:使用 Pydantic 进行输入验证以防止 SQL 注入。
📦 安装指南
先决条件
- Python 3.12+
- Snowflake 账户(需具备只读权限)
安装步骤
- 复制
.env.example文件并重命名为.env。 - 配置环境变量如下:
cp .env.example .env
# 配置以下内容到.env文件中
SNOWFLAKE_AUTH_TYPE=private_key # 或 external_browser
SNOWFLAKE_ACCOUNT_NAME=your_account_name
SNOWFLAKE_USER_NAME=your_user_name
SNOWFLAKE_PRIVATE_KEY_PATH=path_to_your_private_key # 如果使用 private_key 认证
- 安装依赖:
pip install -r requirements.txt
💻 使用示例
基础用法
运行服务器
python mcp_server_snowflake.py
与 Claude 桌面集成
- 在终端中运行服务器。
- 打开 Claude 桌面并连接到运行中的 MCP 服务器即可开始交互。
📚 详细文档
配置选项
环境变量配置
SNOWFLAKE_CONN_REFRESH_HOURS:设置连接的自动刷新间隔(默认为24)。
SNOWFLAKE_CONN_REFRESH_HOURS=4 # 设置为4小时
认证方式
私有密钥认证
- 在 Snowflake 中创建用户并生成密钥对,具体操作请参考 Snowflake 文档。
- 配置环境变量:
SNOWFLAKE_AUTH_TYPE=private_key
SNOWFLAKE_PRIVATE_KEY_PATH=/path/to/your/private-key.pem
外部浏览器认证
- 配置环境变量:
SNOWFLAKE_AUTH_TYPE=external_browser
- 启动服务器后,浏览器会自动打开进行身份验证。
安全注意事项
- 仅允许执行读取操作(SELECT、SHOW、DESCRIBE、EXPLAIN 和 WITH 语句)。
- 输入经过严格验证以防止 SQL 注入攻击。
- 确保
.env文件的安全性,避免泄露敏感信息。 - 使用 HTTPS 进行通信以确保数据传输安全。
开发细节
静态类型检查
mypy mcp_server_snowflake/
代码格式化
ruff format .
执行测试
pytest
🔧 技术细节
- 使用 Snowflake Connector Python 进行数据库连接。
- 基于 MCP 协议 实现与 Claude 的交互。
- 使用 Pydantic 进行数据验证。
- 使用 python-dotenv 管理环境变量。
Scan to join WeChat group