trackmcp
Back to directory
isaacwasserman

mcp-snowflake-server

View on GitHub

[](https://mseep.ai/app/isaacwasserman-mcp-snowflake-server) Python-based implementation.

169 stars PythonServers & Infrastructure Updated Nov 4, 2025

Documentation

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:

    Returns: Query results as array of objects

    • `write_query` (enabled only with `--allow-write`)

    Execute `INSERT`, `UPDATE`, or `DELETE` queries.

    Input:

      Returns: Number of affected rows or confirmation

      • `create_table` (enabled only with `--allow-write`)

      Create new tables in the database.

      Input:

        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:

          Returns: Array of schema names

          • `list_tables`

          List all tables within a specific database and schema.

          Input:

            Returns: Array of table metadata

            • `describe_table`

            View column information for a specific table.

            Input:

              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:

                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:

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

                Installing via UVX

                Traditional Configuration (Individual Parameters)

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

                bash
                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
                # Alternatively, use external browser authentication:
                # SNOWFLAKE_AUTHENTICATOR="externalbrowser"

                4. [Optional] Modify `runtime_config.json` to set exclusion patterns for databases, schemas, or tables.

                5. Test locally:

                bash
                uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server

                6. Add the server to your `claude_desktop_config.json`:

                Traditional Configuration (Using Environment Variables)

                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}"]
                    ]
                  }
                }
                json
                "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.

                License

                MIT

                Frequently asked questions

                What is mcp-snowflake-server?

                mcp-snowflake-server is [](https://mseep.ai/app/isaacwasserman-mcp-snowflake-server) Python-based implementation.

                How do I install mcp-snowflake-server?

                Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

                Is mcp-snowflake-server open source?

                Yes — it is hosted on GitHub at https://github.com/isaacwasserman/mcp-snowflake-server and has 169 stars.

                Related MCP tools

                Run your own MCP server? See who uses it and what to fix.

                Measure it with TrackMCP