by isaacwasserman
mcp-snowflake-server is a Model Context Protocol (MCP) server that enables Language Models (LLMs) to interact with Snowflake databases, allowing for secure and controlled data operations.
mcp-snowflake-server is an MCP (Model Context Protocol) server implementation designed to facilitate interaction between Language Models (LLMs) and Snowflake databases. It allows LLMs to perform secure and controlled data operations by exposing Snowflake functionalities through a set of tools and resources.
mcp-snowflake-server can be installed and used with Claude Desktop via Smithery or UVX, or by installing it locally. Installation typically involves configuring Snowflake credentials and adding the server to your Claude Desktop configuration. The server exposes various tools that can be called by LLMs to interact with the Snowflake database.
memo://insights
resource that aggregates discovered data insights, updated automatically via an append_insight
tool.context://table/{table_name}
) when prefetch is enabled.--allow-write
flag for activation.SELECT
queries.append_insight
tool to record and aggregate data insights, aiding in automated analysis and report generation.--allow-write
flag.memo://insights
resource? It is a continuously updated memo that aggregates discovered data insights. It gets updated automatically when new insights are appended via the append_insight
tool..env
file with Snowflake credentials and configuring your Claude Desktop application.A Model Context Protocol (MCP) server implementation that provides database interaction with Snowflake. This server enables running SQL queries via tools and exposes data insights and schema context as resources.
memo://insights
A continuously updated memo aggregating discovered data insights.
Updated automatically when new insights are appended via the append_insight
tool.
context://table/{table_name}
(If prefetch enabled) Per-table schema summaries, including columns and comments, exposed as individual resources.
The server exposes the following tools:
read_query
Execute SELECT
queries to read data from the database.
Input:
query
(string): The SELECT
SQL query to executewrite_query
(enabled only with --allow-write
)
Execute INSERT
, UPDATE
, or DELETE
queries.
Input:
query
(string): The SQL modification querycreate_table
(enabled only with --allow-write
)
Create new tables in the database.
Input:
query
(string): CREATE TABLE
SQL statementlist_databases
List all databases in the Snowflake instance.
Returns: Array of database names
list_schemas
List all schemas within a specific database.
Input:
database
(string): Name of the databaselist_tables
List all tables within a specific database and schema.
Input:
database
(string): Name of the databaseschema
(string): Name of the schemadescribe_table
View column information for a specific table.
Input:
table_name
(string): Fully qualified table name (database.schema.table
)append_insight
insight
(string): Data insight discovered from analysismemo://insights
resourceTo install Snowflake Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp_snowflake_server --client claude
"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: "--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}"]
]
}
}
Install Claude AI Desktop App
Install uv
:
curl -LsSf https://astral.sh/uv/install.sh | sh
.env
file with your Snowflake credentials:SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
[Optional] Modify runtime_config.json
to set exclusion patterns for databases, schemas, or tables.
Test locally:
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}"]
]
}
}
--allow-write
.append_insight
tool updates the memo://insights
resource dynamically.MIT
Reviews feature coming soon
Stay tuned for community discussions and feedback