1. Conduid
  2. Data
  3. Snowflake MCP Server
MCP server · Data

Snowflake MCP Server

MCP Server for connecting to Snowflake with read-only questions

Unclaimed MIT last commit 11 months ago data
54Fair

Scored 2 days ago · breakdown

About Snowflake MCP Server

Snowflake MCP Server is an MCP server published by dynamike in the Data category: mCP Server for connecting to Snowflake with read-only questions.

The repository has 14 stars and 11 forks, with the last commit 11 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

Install
npx snowflake-mcp-server
Claude Code
claude mcp add snowflake-mcp-server -- npx -y snowflake-mcp-server
npx
npx -y snowflake-mcp-server
uvx
uvx mcp-snowflake-server-nsp
pip
pip install mcp-snowflake-server-nsp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (5)

describe_viewGet detailed information about a specific view including columns and SQL definition

Parameters not published.

execute_queryExecute custom read-only SQL queries (SELECT, SHOW, DESCRIBE, EXPLAIN, WITH) with results formatted as markdown tables

Parameters not published.

list_databasesList all accessible Snowflake databases

Parameters not published.

list_viewsList all views in a specified database and schema

Parameters not published.

query_viewQuery data from a view with an optional row limit

Parameters not published.

Ask AI

✦

Ask AI about Snowflake MCP Server

Powered by Claude · Grounded in docs

I know everything about Snowflake MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository yesterday. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

0.2.00.2.0 · 8 Apr 2025What's Changed Support externalbrowser auth and utilize connection pooling with Snowflake by @dynamike in https://github.com/dynamike/mcp-server-snowflake/pull/4 New Contributors @dynamike made their first contribution in…
0.1.0Initial Release · 8 Apr 2025What's Changed Add missing closing brace to example server config in readme by @griffithsbs in https://github.com/dynamike/mcp-server-snowflake/pull/1 Allow read-only queries that do not start with SELECT keyword by @griffithsbs in…

README

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

  1. Clone this repository:

    git clone https://github.com/yourusername/snowflake-mcp-server.git
    cd snowflake-mcp-server
    
  2. Install the package:

    uv pip install -e .
    
  3. Create a .env file 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 .env
    

    Then edit the .env file to set your Snowflake account details and path to your private key.

    For external browser authentication:

    cp .env.browser.example .env
    

    Then edit the .env file 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-stdio

This 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

  1. In Claude Desktop, go to Settings → MCP Servers

  2. 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"
       ]
    }
    
  3. You can find your uv path by running which uv in your terminal

  4. Save 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=4

Authentication Methods

Private Key Authentication

This method uses a service account and private key for non-interactive authentication, ideal for automated processes.

  1. Create a key pair for your Snowflake user following Snowflake documentation
  2. Set SNOWFLAKE_AUTH_TYPE=private_key in your .env file
  3. Provide the path to your private key in SNOWFLAKE_PRIVATE_KEY_PATH

External Browser Authentication

This method opens a browser window for interactive authentication.

  1. Set SNOWFLAKE_AUTH_TYPE=external_browser in your .env file
  2. When you start the server, a browser window will open asking you to log in
  3. 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

pytest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Technical Details

This project uses:

README fetched from the repository yesterday. The original is authoritative.

Questions

About Snowflake MCP Server

How do I install Snowflake MCP Server?

Run npx snowflake-mcp-server, then add the server to your MCP client's configuration.

Is Snowflake MCP Server safe to use with an AI agent?

Its trust score is 54 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Snowflake MCP Server still maintained?

The last commit was 11 months ago and 8 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.