Skip to main content

A simple Snowflake MCP server

Project description

MseeP.ai Security Assessment Badge

Snowflake MCP Server

smithery badge PyPI - Version


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

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

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"
# 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:
"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}"]
    ]
  }
}

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.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_mcp_snowflake_server-0.4.1.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_mcp_snowflake_server-0.4.1-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file mseep_mcp_snowflake_server-0.4.1.tar.gz.

File metadata

File hashes

Hashes for mseep_mcp_snowflake_server-0.4.1.tar.gz
Algorithm Hash digest
SHA256 544a083065f3f20ae239915466a82ccc754a24b454ff2a9322c7fc8b82856727
MD5 1244655348d143fc092a36ae7e75bcfb
BLAKE2b-256 fe5bf9c7ba71b1bb9ce2d716314b508d8d4917ab21429f7948d033862c78d69e

See more details on using hashes here.

File details

Details for the file mseep_mcp_snowflake_server-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mseep_mcp_snowflake_server-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8f638c093e3dfe0eeb7d7d297601dd0360ade94941dd2b0bf1b43d78c35ea741
MD5 7d0cbef3969584e358ce815d86adb058
BLAKE2b-256 d179a251dfd35c144250e57084498a254320c2921fbfe5044564a31dd7ca3d2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page