MCP Server for Snowflake

MCP Server for Snowflake

site icon
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 包管理器(推荐)

安装教程

  1. 克隆此仓库: git clone https://github.com/yourusername/mcp-server-snowflake.git cd mcp-server-snowflake

  2. 安装包: uv pip install -e .

  3. 基于 .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

调试方式

  1. 运行服务器: uv run snowflake-mcp

  2. 在 Claude Desktop 中集成:

  3. 转到 Settings → MCP Servers
  4. 添加新服务器,填写 uv 可执行文件的完整路径
  5. 保存服务器配置

  6. 示例查询:

  7. "Can you list all the databases in my Snowflake account?"
  8. "List all views in the MARKETING database"
  9. "Describe the structure of the CUSTOMER_ANALYTICS view in the SALES database"
  10. "Show me sample data from the REVENUE_BY_REGION view in the FINANCE database"
  11. "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"
  12. "Query the MARKETING database to find the top 5 performing campaigns by conversion rate"

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。