关于 Snowflake MCP Server
Snowflake MCP Server 是一个通过 MCP 连接 Snowflake 数据库的服务,支持执行 SQL 查询并将数据洞察与表结构作为资源提供。默认禁用写操作,适合需要读取和分析 Snowflake 数据的用户。
主要功能
- 01通过工具执行 SELECT 查询
- 02列出数据库、模式、表并查看表结构
- 03通过 append_insight 维护数据洞察备忘
- 04可选的写操作与建表工具
- 05支持按数据库、模式或表设置排除规则
适用场景
- 01让 AI 助手查询 Snowflake 数据并分析结果
- 02浏览数据库结构并了解表的列定义
- 03记录分析过程中发现的数据洞察
MCP 相关
作为 MCP 服务运行,向客户端暴露 SQL 查询等工具以及 memo://insights 和表结构资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Snowflake MCP 服务
概述
一种 Model Context Protocol(MCP)服务实现,可与 Snowflake 数据库交互。此服务可通过工具运行 SQL 查询,并将数据洞察和架构上下文作为资源公开。
组件
资源
-
memo://insights
持续更新的备忘录,汇总已发现的数据洞察。
通过append_insight工具添加新洞察时,会自动更新。 -
context://table/{table_name}
(如果启用了预取)按表提供架构摘要,包括列和注释,并作为独立资源公开。
工具
此服务公开以下工具:
查询工具
-
read_query
执行SELECT查询以读取数据库中的数据。
输入:query(字符串):要执行的SELECTSQL 查询
**返回:**由对象数组组成的查询结果
-
write_query(仅在使用--allow-write时启用)
执行INSERT、UPDATE或DELETE查询。
输入:query(字符串):SQL 修改查询
**返回:**受影响的行数或确认信息
-
create_table(仅在使用--allow-write时启用)
在数据库中创建新表。
输入:query(字符串):CREATE TABLESQL 语句
**返回:**表创建确认信息
架构工具
-
list_databases
列出 Snowflake 实例中的所有数据库。
**返回:**数据库名称数组 -
list_schemas
列出指定数据库中的所有架构。
输入:database(字符串):数据库名称
**返回:**架构名称数组
-
list_tables
列出指定数据库和架构中的所有表。
输入:database(字符串):数据库名称schema(字符串):架构名称
**返回:**表元数据数组
-
describe_table
查看指定表的列信息。
输入:table_name(字符串):完全限定的表名(database.schema.table)
**返回:**列定义数组,包含名称、类型、是否可为空、默认值和注释
分析工具
append_insight
向备忘录资源添加新的数据洞察。
输入:insight(字符串):分析过程中发现的数据洞察
**返回:**洞察添加确认信息
**效果:**触发memo://insights资源更新
与 Claude Desktop 搭配使用
通过 Smithery 安装
通过 Smithery 为 Claude Desktop 自动安装 Snowflake Server:
npx -y @smithery/cli install mcp_snowflake_server --client claude
通过 UVX 安装
传统配置(单独参数)
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12", // Optional: specify Python version <=3.12
"mcp_snowflake_server",
"--account", "your_account",
"--warehouse", "your_warehouse",
"--user", "your_user",
"--password", "your_password",
"--role", "your_role",
"--database", "your_database",
"--schema", "your_schema"
// Optionally: "--private_key_path", "your_private_key_absolute_path"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
TOML 配置(推荐)
"mcpServers": {
"snowflake_production": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "production"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
},
"snowflake_staging": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "staging"
]
}
}
本地安装
-
安装
uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
- 使用 Snowflake 凭据创建
.env文件:
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
-
[可选] 修改
runtime_config.json,为数据库、架构或表设置排除模式。 -
在本地测试:
uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
- 将服务添加到
claude_desktop_config.json:
传统配置(使用环境变量)
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12", // Optional
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
TOML 配置(推荐)
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12",
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server",
"--connections-file", "/absolute/path/to/snowflake_connections.toml",
"--connection-name", "development"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
注意事项
- 默认情况下,写入操作处于禁用状态。使用
--allow-write显式启用。 - 此服务支持通过排除模式筛除特定数据库、架构或表。
- 启用预取后,此服务会公开额外的按表提供的上下文资源。
append_insight工具会动态更新memo://insights资源。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
