使用说明
项目简介
这是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为大型语言模型 (LLM) 客户端(例如 Claude Desktop)提供访问 Snowflake 数据仓库的能力。它允许 LLM 通过标准化的工具调用方式,安全、可控地执行对 Snowflake 数据库的只读查询,并将结果返回给用户。
主要功能点
- 灵活的身份验证: 支持使用服务账户密钥或外部浏览器进行 Snowflake 连接认证。
- 连接管理: 实现 Snowflake 连接池和自动后台刷新机制,保持连接的持久性。
- 多对象查询: 支持在单个会话中查询不同的数据库和模式下的视图。
- 支持的 SQL 类型: 允许执行特定类型的只读 SQL 语句,包括 'SELECT', 'SHOW', 'DESCRIBE', 'EXPLAIN', 'WITH'。
- 内置数据工具: 提供预定义的工具,用于:
- 列出所有可访问的数据库。
- 列出指定数据库和模式下的所有视图。
- 获取视图的详细信息(列、定义)。
- 查询视图数据(支持设置行数限制)。
- 执行自定义只读 SQL 查询(结果格式化为 Markdown 表格,并强制添加行数限制)。
- 安全性: 强制执行只读操作,验证查询类型,并自动限制结果集大小,保护底层数据。
安装步骤
- 前提条件:
- 需要安装 Python 3.12 或更高版本。
- 需要一个 Snowflake 账户,并配置好服务账户(用户名+私钥)或具备普通用户账户用于浏览器认证。
- 推荐安装 'uv' 包管理器(可从 https://github.com/astral-sh/uv 获取安装方法)。
- 克隆代码库:
git clone https://github.com/dynamike/snowflake-mcp-server.git cd snowflake-mcp-server - 安装项目:
如果您使用了 'uv':
如果您使用标准 'pip':uv pip install -e .pip install -e . - 配置 Snowflake 凭据:
项目提供了示例 '.env' 文件,请根据您的认证方式选择:
- 密钥认证: 复制 '.env.private_key.example' 为 '.env' ('cp .env.private_key.example .env'),然后编辑 '.env' 文件,填入您的 Snowflake 账户信息和私钥文件路径。
- 浏览器认证: 复制 '.env.browser.example' 为 '.env' ('cp .env.browser.example .env'),然后编辑 '.env' 文件,填入您的 Snowflake 账户信息。 重要: 请务必妥善保管您的 '.env' 文件,不要将其泄露或提交到版本控制中。
服务器配置
MCP 服务器与客户端通过标准输入/输出 (Stdio) 通信。要在您的 MCP 客户端(如 Claude Desktop)中启用此服务器,您需要在客户端的设置中添加服务器配置。配置通常是一个 JSON 对象,指定如何启动服务器进程。
以下是配置示例的解释,请根据您的实际安装路径和启动方式进行调整,并在客户端中按其要求填写到相应的配置字段中(请不要将以下内容直接复制到终端或代码中执行):
- 'server name': 服务器的标识名称,例如填写 '"snowflake-mcp-server"'。
- 'command': 启动服务器的可执行命令路径。如果您使用 'uv run',这里应填写 'uv' 命令的完整路径(在终端运行 'which uv' 可以找到)。
- 'args': 传递给 'command' 命令的参数列表。这是一个字符串数组。
- 如果您使用 'uv run snowflake-mcp':参数可能是 '["--directory", "/您的项目代码的完整路径/snowflake-mcp-server", "run", "snowflake-mcp"]'。
- 如果您使用 'uv run snowflake-mcp-stdio'(明确指定 stdio 传输):参数可能是 '["--directory", "/您的项目代码的完整路径/snowflake-mcp-server", "run", "snowflake-mcp-stdio"]'。
请查阅您的 MCP 客户端(如 Claude Desktop)的官方文档,了解如何添加和填写 MCP 服务器配置的详细步骤。
基本使用方法
成功配置并连接到您的 MCP 客户端后,您就可以通过与 LLM 交互来使用 Snowflake 功能了。LLM 会根据您的提问或指令,识别需要调用的 Snowflake 工具,并自动组织参数进行调用。
您可以尝试以下类型的指令:
- “帮我列出 Snowflake 里所有的数据库。”
- “查看 MARKETING 数据库里有哪些视图。”
- “描述一下 SALES.CUSTOMER_ANALYTICS 视图的结构。”
- “从 FINANCE.REVENUE_BY_REGION 视图中给我展示一些示例数据。”
- “运行这个 SQL 查询并显示结果:SELECT customer_id, COUNT(*) FROM ORDERS GROUP BY 1 LIMIT 5;”
- “查询 MARKETING 数据库,找出最近的三个广告活动。”
LLM 调用服务器工具后,服务器将执行相应的 Snowflake 查询,并将结果以文本或 Markdown 表格的形式返回给 LLM,LLM 再将结果呈现给您。
信息
分类
数据库与文件