MCP Connector

Query Snowflake Data and Access Schema Context

An MCP server for Snowflake - query data, explore schema, and accumulate insights, with write access opt-in.

Works with snowflake

91
Spark score
out of 100
Updated 9 months ago
Version 0.4.0
Models
universal

Add to Favorites

Why it matters

Execute SQL queries against Snowflake databases to retrieve data and access schema context. This asset enables structured data interaction and analytics.

Outcomes

What it gets done

01

Execute SQL SELECT, INSERT, UPDATE, and DELETE queries.

02

Retrieve database schema, table structures, and metadata.

03

Index and access analytics data and schema summaries as resources.

04

Manage Snowflake connections with various authentication methods.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-snowflake | bash

Capabilities

Tools your agent gets

read_query

Execute SELECT queries to read data from the database

write_query

Execute INSERT, UPDATE, or DELETE queries (requires --allow-write flag)

create_table

Create new tables in the database (requires --allow-write flag)

list_databases

List all databases in the Snowflake instance

list_schemas

List all schemas in a specific database

list_tables

List all tables in a specific database and schema

describe_table

View column information for a specific table

append_insight

Add new analytics data to the insights resource

Overview

Snowflake MCP Server

This MCP server exposes Snowflake SQL querying, schema introspection, and a running insights memo, with write operations (INSERT/UPDATE/DELETE/CREATE TABLE) opt-in via --allow-write. Use it when an AI assistant needs to query Snowflake or explore its schema. Leave write access off (the default) for read-only analysis.

What it does

An MCP server providing Snowflake database interaction, running SQL queries via tools and exposing data insights and schema context as resources. Query tools: read_query executes SELECT statements; write_query (only enabled with --allow-write) executes INSERT/UPDATE/DELETE; create_table (also --allow-write only) runs CREATE TABLE statements. Schema tools: list_databases, list_schemas (given a database), list_tables (given a database and schema), and describe_table (given a fully-qualified database.schema.table name, returning column names, types, nullability, defaults, and comments). An analysis tool, append_insight, adds a data insight discovered during analysis to a continuously updated memo://insights resource, which aggregates all appended insights automatically. If prefetching is enabled, per-table schema summaries (columns and comments) are also exposed as individual context://table/{table_name} resources. Write operations are disabled by default and must be explicitly opted into via --allow-write, and specific databases, schemas, or tables can be excluded from server access via configured exclusion patterns.

When to use - and when NOT to

Use it when an AI assistant needs to query Snowflake data, explore database/schema/table structure, or accumulate discovered insights into a persistent memo during analysis. Write operations (INSERT/UPDATE/DELETE/CREATE TABLE) are off by default and require explicitly passing --allow-write - leave this off for read-only analysis use cases to avoid unintended data modification.

Capabilities

Schema introspection forms a strict drill-down chain - list_databases feeds the database name into list_schemas, whose output feeds list_tables, whose output feeds describe_table - so an assistant with no prior knowledge of the account's structure can walk from nothing down to a single table's column definitions using only the outputs of each prior call.

How to install

npx -y @smithery/cli install mcp_snowflake_server --client claude

Or via uvx with individual connection parameters (--account, --warehouse, --user, --password, --role, --database, --schema, optionally --private_key_path, --allow_write, --log_dir, --log_level, --exclude_tools), or the recommended TOML-based configuration pointing --connections-file at a snowflake_connections.toml file and selecting a --connection-name (allowing multiple named environments like production/staging/development in one client config). Local installation uses uv, a .env file with SNOWFLAKE_* credentials including a private-key path for key-pair auth (or SNOWFLAKE_AUTHENTICATOR=externalbrowser for browser-based auth instead), and an optional runtime_config.json for exclusion patterns, verified with a local test run before wiring the server into claude_desktop_config.json.

Who it's for

Data analysts and engineers who want to query Snowflake, explore its schema, and accumulate analysis insights conversationally through Claude Desktop, with write access opt-in and off by default for safety. Distributed under the MIT License, with its own security posture reviewed under the MseeP.ai security assessment program.

Source README

MseeP.ai Security Assessment Badge

Snowflake MCP Server


Overview

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.


Components

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.


Tools

The server exposes the following 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 (enabled only with --allow-write)
    Execute INSERT, UPDATE, or DELETE queries.
    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 TABLE SQL statement
      Returns: Confirmation of table creation
Schema Tools
  • 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 database
    • schema (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
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
      Effect: Triggers update of memo://insights resource

Usage with Claude Desktop

Installing via Smithery

To install Snowflake Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install mcp_snowflake_server --client claude

Installing via UVX

Traditional Configuration (Individual Parameters)
"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}"]
    ]
  }
}
TOML Configuration (Recommended)
"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"
    ]
  }
}

Installing Locally

  1. Install Claude AI Desktop App

  2. Install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Create a .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"
  1. [Optional] Modify runtime_config.json to set exclusion patterns for databases, schemas, or tables.

  2. Test locally:

uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
  1. Add the server to your claude_desktop_config.json:
Traditional Configuration (Using Environment Variables)
"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}"]
    ]
  }
}
TOML Configuration (Recommended)
"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}"]
    ]
  }
}

Notes

  • 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_insight tool updates the memo://insights resource dynamically.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.