Snowflake

by isaacwasserman

165 stars
647 downloads
Not rated
GitHub

About

Snowflake database integration with read/write capabilities and insight tracking

Details

Author
isaacwasserman
Repository
isaacwasserman/mcp-snowflake-server
GitHub stars
165
Downloads
647
License
GNU General Public License v3.0
Categories
Database, Community, Other, Productivity, Design, Developer Tools, AI, Cloud Service, Project Management, Infrastructure
Tags
#data-science

- Execute SELECT queries with the read_query tool
- Write operations (INSERT, UPDATE, DELETE) via write_query (requires --allow-write)
- Create tables with the create_table tool (requires --allow-write)
- List databases, schemas, and tables with schema discovery tools
- Describe table columns including names, types, nullability, defaults, and comments
- Append and aggregate data insights in a dynamic memo://insights resource
- Support for TOML-based multi-connection configuration

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Snowflake
    Command (node, npx, python, etc.) uvx
    Arguments
    • Argument 1 --python=3.12
    • Argument 2 mcp_snowflake_server
    • Argument 3 --account
    • Argument 4 your_account
    • Argument 5 --warehouse
    • Argument 6 your_warehouse
    • Argument 7 --user
    • Argument 8 your_user
    • Argument 9 --password
    • Argument 10 your_password
    • Argument 11 --role
    • Argument 12 your_role
    • Argument 13 --database
    • Argument 14 your_database
    • Argument 15 --schema
    • Argument 16 your_schema

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

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_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}"]
    ]
  }
}

---

1. Install Claude AI Desktop App

2. Install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

3. 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

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}"]
]
}
}
```

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

Execute `INSERT`, `UPDATE`, or `DELETE` queries. Input: query (string): The SQL modification query. Returns: Number of affected rows or confirmation.

create_table

Create new tables in the database. Input: query (string): `CREATE TABLE` SQL 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 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.

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.

The server exposes the following tools:

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "snowflake": {
            "cwd": null,
            "env": {},
            "args": [
                "--python=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"
            ],
            "shell": false,
            "command": "uvx"
        }
    }
}

Linux

{
    "cwd": null,
    "env": [],
    "args": [
        "--python=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"
    ],
    "shell": false,
    "command": "uvx"
}

Macos

{
    "cwd": null,
    "env": [],
    "args": [
        "--python=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"
    ],
    "shell": false,
    "command": "uvx"
}

Windows

{
    "cwd": null,
    "env": [],
    "args": [
        "--python=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"
    ],
    "shell": false,
    "command": "uvx"
}

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

3. Create a .env file with your Snowflake credentials:

```bash
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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.