mcp-snowflake-server
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 theappend_insighttool. -
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
ExecuteSELECTqueries to read data from the database.
Input:query(string): TheSELECTSQL query to execute
Returns: Query results as array of objects
-
write_query(enabled only with--allow-write)
ExecuteINSERT,UPDATE, orDELETEqueries.
Input:query(string): The SQL modification query
Returns: Number of affected rows or confirmation
-
create_table(enabled only with--allow-write)
Create new tables in the database.
Input:query(string):CREATE TABLESQL statement
Returns: Confirmation of table creation
-
list_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 database
Returns: Array of schema names
-
list_tables
List all tables within a specific database and schema.
Input:database(string): Name of the databaseschema(string): Name of the schema
Returns: Array of table metadata
-
describe_table
View column information for a specific table.
Input:table_name(string): Fully qualified table name (database.schema.table)
Returns: Array of column definitions with names, types, nullability, defaults, and comments
append_insight
Add new data insights to the memo resource.
Input:insight(string): Data insight discovered from analysis
Returns: Confirmation of insight addition
Effect: Triggers update ofmemo://insightsresource
To 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- Create a
.envfile 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.jsonto set exclusion patterns for databases, schemas, or tables. -
Test locally:
uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
- Add the server to your
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}"] ] } }
- By default, write operations are disabled. Enable them explicitly with
--allow-write. - The server supports filtering out specific databases, schemas, or tables via exclusion patterns.
- The server exposes additional per-table context resources if prefetching is enabled.
- The
append_insighttool updates thememo://insightsresource dynamically.
MIT
Features
Rate this server
Related MCP servers
- mcp-managersimple web ui to manage mcp (model context protocol) servers in the claude app
- mcpm.shCLI MCP package manager & registry for all platforms and all clients. Search & configure MCP servers. Advanced Router & Profile features.
- mcp_weather_server
- xiyan_mcp_serverA Model Context Protocol (MCP) server that enables natural language queries to databases
- world_bank_mcp_serverAn implementation of the Model Context Protocol for the World Bank open data API
- videocapture-mcpModel Context Protocol (MCP) server to capture images from an OpenCV-compatible webcam or video source