MCP Server for Snowflake
Provides tools for querying Snowflake databases, including listing databases and views, describing views, and executing read-only SQL queries (SELECT, SHOW, DESCRIBE, EXPLAIN, WITH).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server for SnowflakeList all databases in my Snowflake account."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for Snowflake
A Model Context Protocol (MCP) server for performing read-only operations against Snowflake databases. This tool enables Claude to securely query Snowflake data without modifying any information.
Features
Flexible authentication to Snowflake using either:
Service account authentication with private key
External browser authentication for interactive sessions
Connection pooling with automatic background refresh to maintain persistent connections
Support for querying multiple views and databases in a single session
Support for multiple SQL statement types (SELECT, SHOW, DESCRIBE, EXPLAIN, WITH)
MCP-compatible handlers for querying Snowflake data
Read-only operations with security checks to prevent data modification
Support for Python 3.12+
Stdio-based MCP server for easy integration with Claude Desktop
Available Tools
The server provides the following tools for querying Snowflake:
list_databases: List all accessible Snowflake databases
list_views: List all views in a specified database and schema
describe_view: Get detailed information about a specific view including columns and SQL definition
query_view: Query data from a view with an optional row limit
execute_query: Execute custom read-only SQL queries (SELECT, SHOW, DESCRIBE, EXPLAIN, WITH) with results formatted as markdown tables
Installation
Prerequisites
Python 3.12 or higher
A Snowflake account with either:
A configured service account (username + private key), or
A regular user account for browser-based authentication
uv package manager (recommended)
Steps
Clone this repository:
git clone https://github.com/yourusername/snowflake-mcp-server.git cd snowflake-mcp-serverInstall the package:
uv pip install -e .Create a
.envfile with your Snowflake credentials:Choose one of the provided example files based on your preferred authentication method:
For private key authentication:
cp .env.private_key.example .envThen edit the
.envfile to set your Snowflake account details and path to your private key.For external browser authentication:
cp .env.browser.example .envThen edit the
.envfile to set your Snowflake account details.
Usage
Running with uv
After installing the package, you can run the server directly with:
uv run snowflake-mcp
# Or you can be explicit about using stdio transport
uv run snowflake-mcp-stdioThis will start the stdio-based MCP server, which can be connected to Claude Desktop or any MCP client that supports stdio communication.
When using external browser authentication, a browser window will automatically open prompting you to log in to your Snowflake account.
Claude Desktop Integration
In Claude Desktop, go to Settings → MCP Servers
Add a new server with the full path to your uv executable:
"snowflake-mcp-server": { "command": "uv", "args": [ "--directory", "/<path-to-code>/snowflake-mcp-server", "run", "snowflake-mcp" ] }Or explicitly specify the stdio transport:
"snowflake-mcp-server": { "command": "uv", "args": [ "--directory", "/<path-to-code>/snowflake-mcp-server", "run", "snowflake-mcp-stdio" ] }You can find your uv path by running
which uvin your terminalSave the server configuration
Example Queries
When using with Claude, you can ask questions like:
"Can you list all the databases in my Snowflake account?"
"List all views in the MARKETING database"
"Describe the structure of the CUSTOMER_ANALYTICS view in the SALES database"
"Show me sample data from the REVENUE_BY_REGION view in the FINANCE database"
"Run this SQL query: SELECT customer_id, SUM(order_total) as total_spend FROM SALES.ORDERS GROUP BY customer_id ORDER BY total_spend DESC LIMIT 10"
"Query the MARKETING database to find the top 5 performing campaigns by conversion rate"
"Compare data from views in different databases by querying SALES.CUSTOMER_METRICS and MARKETING.CAMPAIGN_RESULTS"
Configuration
Connection pooling behavior can be configured through environment variables:
SNOWFLAKE_CONN_REFRESH_HOURS: Time interval in hours between connection refreshes (default: 8)
Example .env configuration:
# Set connection to refresh every 4 hours
SNOWFLAKE_CONN_REFRESH_HOURS=4Authentication Methods
Private Key Authentication
This method uses a service account and private key for non-interactive authentication, ideal for automated processes.
Create a key pair for your Snowflake user following Snowflake documentation
Set
SNOWFLAKE_AUTH_TYPE=private_keyin your.envfileProvide the path to your private key in
SNOWFLAKE_PRIVATE_KEY_PATH
External Browser Authentication
This method opens a browser window for interactive authentication.
Set
SNOWFLAKE_AUTH_TYPE=external_browserin your.envfileWhen you start the server, a browser window will open asking you to log in
After authentication, the session will remain active for the duration specified by your Snowflake account settings
Security Considerations
This server:
Enforces read-only operations (only SELECT, SHOW, DESCRIBE, EXPLAIN, and WITH statements are allowed)
Automatically adds LIMIT clauses to prevent large result sets
Uses secure authentication methods for connections to Snowflake
Validates inputs to prevent SQL injection
⚠️ Important: Keep your .env file secure and never commit it to version control. The .gitignore file is configured to exclude it.
Development
Static Type Checking
mypy mcp_server_snowflake/Linting
ruff check .Formatting
ruff format .Running Tests
pytestContributing
Contributions are welcome! Please feel free to submit a Pull Request.
Technical Details
This project uses:
Snowflake Connector Python for connecting to Snowflake
MCP (Model Context Protocol) for interacting with Claude
Pydantic for data validation
python-dotenv for environment variable management
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynamike/snowflake-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server