by isaacwasserman
Provides a Model Context Protocol server that connects to Snowflake, enabling execution of SQL queries, schema exploration, and dynamic insight aggregation through a set of tools and memo resources.
A server implementation that exposes Snowflake database operations via Model Context Protocol tools. It lets clients run read‑only SELECT statements, optionally perform write operations, list databases/schemas/tables, describe table structures, and append data insights that appear in a continuously updated memo resource.
npx -y @smithery/cli install mcp_snowflake_server --client claude
SNOWFLAKE_USER
, SNOWFLAKE_PASSWORD
, etc.).uvx run mcp_snowflake_server
or the npx command shown in the serverConfig
).--allow-write
).append_insight
updates memo://insights
in real time.context://table/{table_name}
).--allow-write
flag.Q: Are write operations enabled by default?
A: No. Write tools (write_query
, create_table
) require the --allow-write
flag.
Q: How are credentials supplied?
A: Via command‑line arguments, a TOML connections file, or environment variables (SNOWFLAKE_*
).
Q: Can I limit which databases are exposed?
A: Yes, exclusion patterns can be set in runtime_config.json
or via CLI flags.
Q: What does memo://insights
contain?
A: An aggregated list of textual insights added through the append_insight
tool.
Q: Is prefetching required for per‑table context resources?
A: Prefetch must be enabled; otherwise only the memo resource is available.
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: "--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}"]
]
}
}
"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"
]
}
}
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"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
# 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}"]
]
}
}
"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
tool updates the memo://insights
resource dynamically.MIT
Please log in to share your review and rating for this MCP.
{ "mcpServers": { "snowflake": { "command": "npx", "args": [ "-y", "mcp_snowflake_server", "--account", "<ACCOUNT>", "--warehouse", "<WAREHOUSE>", "--user", "<USER>", "--password", "<PASSWORD>", "--role", "<ROLE>", "--database", "<DATABASE>", "--schema", "<SCHEMA>" ], "env": {} } } }
Explore related MCPs that share similar capabilities and solve comparable challenges
by googleapis
An MCP server that streamlines database tool development by handling connection pooling, authentication, observability, and secure access, allowing agents to interact with databases via natural language.
by bytebase
Provides a universal gateway that lets MCP‑compatible clients explore and query MySQL, PostgreSQL, SQL Server, MariaDB, and SQLite databases through a single standardized interface.
by designcomputer
Enables secure interaction with MySQL databases via the Model Context Protocol, allowing AI applications to list tables, read contents, and execute queries safely.
by benborla
Provides read‑only access to MySQL databases for large language models, allowing schema inspection and safe execution of SQL queries.
by ClickHouse
Enables AI assistants to run read‑only ClickHouse queries, list databases and tables, and execute embedded chDB queries through an MCP interface.
by chroma-core
Offers an MCP server exposing Chroma's vector database capabilities for LLM applications, supporting collection and document management, multiple embedding functions, and flexible client types such as in‑memory, persistent, HTTP, and cloud.
by kiliczsh
Enables LLMs to interact with MongoDB databases via a standardized interface, offering schema inspection, query execution, aggregation, and write capabilities, with optional read‑only mode and smart ObjectId handling.
by domdomegg
Provides read and write access to Airtable bases for AI systems, enabling inspection of schemas and manipulation of records.
by XGenerationLab
A Model Context Protocol (MCP) server that enables natural language queries to databases