
MCP Server for Snowflake

2025.04.18
4
Python数据库查询数据分析数据库
mcp-server-snowflake 是一个基于 Model Context Protocol (MCP) 的服务,专门用于对 Snowflake 数据库执行只读操作。该工具允许 Claude 安全地查询 Snowflake 数据而不会修改任何信息。它提供了多种工具来查询 Snowflake 数据,包括列出数据库、视图、描述视图结构以及执行自定义的只读 SQL 查询。该服务适用于需要安全访问 Snowflake 数据库并进行数据分析的场景。
View on GitHub
Overview
基本能力
产品定位
mcp-server-snowflake 是一个专门用于对 Snowflake 数据库执行只读操作的 MCP 服务,旨在安全地查询 Snowflake 数据而不会修改任何信息。
核心功能
- 使用服务账户认证和私钥安全连接到 Snowflake
- 提供 MCP 兼容的处理程序用于查询 Snowflake 数据
- 只读操作,带有安全检查以防止数据修改
- 支持 Python 3.12+
- 基于 Stdio 的 MCP 服务器,便于与 Claude Desktop 集成
适用场景
- 需要安全访问 Snowflake 数据库并进行数据分析的场景
- 需要列出数据库、视图或描述视图结构的场景
- 需要执行自定义只读 SQL 查询的场景
工具列表
- list_databases: 列出所有可访问的 Snowflake 数据库
- list_views: 列出指定数据库和模式中的所有视图
- describe_view: 获取特定视图的详细信息,包括列和 SQL 定义
- query_view: 从视图中查询数据,可选择行限制
- execute_query: 执行自定义只读 SQL 查询(仅 SELECT),结果格式化为 markdown 表格
常见问题解答
- 如何确保安全性? 该服务强制执行只读操作(仅允许 SELECT 语句),自动添加 LIMIT 子句以防止大型结果集,并使用服务账户认证进行安全连接。
- 如何保护我的凭证? 确保
.env
文件安全,并且不要将其提交到版本控制。.gitignore
文件已配置为排除它。
使用教程
使用依赖
- Python 3.12 或更高版本
- 具有配置服务账户(用户名 + 私钥)的 Snowflake 账户
- uv 包管理器(推荐)
安装教程
-
克隆此仓库:
git clone https://github.com/yourusername/mcp-server-snowflake.git cd mcp-server-snowflake
-
安装包:
uv pip install -e .
-
基于
.env.example
创建.env
文件,并填写您的 Snowflake 凭证:SNOWFLAKE_ACCOUNT=youraccount.region SNOWFLAKE_USER=your_service_account_username SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/to/your/rsa_key.p8 SNOWFLAKE_WAREHOUSE=your_warehouse SNOWFLAKE_DATABASE=your_database SNOWFLAKE_SCHEMA=your_schema SNOWFLAKE_ROLE=your_role
调试方式
-
运行服务器:
uv run snowflake-mcp
-
在 Claude Desktop 中集成:
- 转到 Settings → MCP Servers
- 添加新服务器,填写 uv 可执行文件的完整路径
-
保存服务器配置
-
示例查询:
- "Can you list all the databases in my Snowflake account?"
- "List all views in the MARKETING database"
- "Describe the structure of the CUSTOMER_ANALYTICS view in the SALES database"
- "Show me sample data from the REVENUE_BY_REGION view in the FINANCE database"
- "Run this SQL query: SELECT customer_id, SUM(order_total) as total_spend FROM SALES.ORDERS GROUP BY customer_id ORDER BY total_spend DESC LIMIT 10"
- "Query the MARKETING database to find the top 5 performing campaigns by conversion rate"