Snowflake MCP Server
Overview
A Model Context Protocol (MCP) server implementation that provides database interaction with Snowflake. This server enables running SQL queries with tools and intereacting with a memo of data insights presented as a resource.
Components
Resources
The server exposes a single dynamic resource:
memo://insights
: A continuously updated data insights memo that aggregates discovered insights during analysis- Auto-updates as new insights are discovered via the append-insight tool
Tools
The server offers six core tools:
Query Tools
-
read_query
- Execute SELECT queries to read data from the database
- Input:
query
(string): The SELECT SQL query to execute
- Returns: Query results as array of objects
-
write_query
(with--allow-write
flag)- Execute INSERT, UPDATE, or DELETE queries
- Input:
query
(string): The SQL modification query
- Returns:
{ affected_rows: number }
-
create_table
(with--allow-write
flag)- Create new tables in the database
- Input:
query
(string): CREATE TABLE SQL statement
- Returns: Confirmation of table creation
Schema Tools
-
list_tables
- Get a list of all tables in the database
- No input required
- Returns: Array of table names
-
describe-table
- View column information for a specific table
- Input:
table_name
(string): Name of table to describe (can be fully qualified)
- Returns: Array of column definitions with names and types
Analysis Tools
append_insight
- Add new data insights to the memo resource
- Input:
insight
(string): data insight discovered from analysis
- Returns: Confirmation of insight addition
- Triggers update of memo://insights resource
Usage with Claude Desktop
Installing via Smithery
To install Snowflake Server for Claude Desktop automatically via Smithery:
1npx -y @smithery/cli install mcp_snowflake_server --client claude
Installing via UVX
1# Add the server to your claude_desktop_config.json 2"mcpServers": { 3 "snowflake_pip": { 4 "command": "uvx", 5 "args": [ 6 "mcp_snowflake_server", 7 "--account", 8 "the_account", 9 "--warehouse", 10 "the_warehouse", 11 "--user", 12 "the_user", 13 "--password", 14 "their_password", 15 "--role", 16 "the_role" 17 "--database", 18 "the_database", 19 "--schema", 20 "the_schema", 21 # Optionally: "--allow_write" (but not recommended) 22 # Optionally: "--log_dir", "/absolute/path/to/logs" 23 # Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL" 24 # Optionally: "--exclude_tools", "{tool name}", ["{other tool name}"] 25 ] 26 } 27}
Installing locally
1# Add the server to your claude_desktop_config.json 2"mcpServers": { 3 "snowflake_local": { 4 "command": "uv", 5 "args": [ 6 "--directory", 7 "/absolute/path/to/mcp_snowflake_server", 8 "run", 9 "mcp_snowflake_server", 10 "--account", 11 "the_account", 12 "--warehouse", 13 "the_warehouse", 14 "--user", 15 "the_user", 16 "--password", 17 "their_password", 18 "--role", 19 "the_role" 20 "--database", 21 "the_database", 22 "--schema", 23 "the_schema", 24 # Optionally: "--allow_write" (but not recommended) 25 # Optionally: "--log_dir", "/absolute/path/to/logs" 26 # Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL" 27 # Optionally: "--exclude_tools", "{tool name}", ["{other tool name}"] 28 ] 29 } 30}