Snowflake (community)

Snowflake (community)

Inspect schemas and run SQL against a Snowflake account from an AI agent.

Score 47(?)Community (isaacwasserman)GPL-3.0185Verified Top MCPs for Databases →

Quick answer

What it does

Connects to a Snowflake account over stdio and exposes eight tools: list_databases, list_schemas, list_tables, describe_table, read_query, append_insight, plus write_query and create_table when --allow-write is set.

Best for

  • Schema discovery
  • Analytical query drafting
  • Cross-database joins inside one account
  • Information schema audits

Not for

  • Write-heavy DML from an LLM
  • Cost-sensitive workloads without a per-user resource monitor

Source: top-mcps.com/mcp/snowflake — verified Sep 2026

Setup recipe

Pick your client, then follow the three steps.

  1. 1

    Install

    claude_desktop_config.json
    {
      "mcpServers": {
        "snowflake": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account",
            "<account>",
            "--user",
            "<user>",
            "--warehouse",
            "<warehouse>",
            "--role",
            "<role>",
            "--database",
            "<database>",
            "--schema",
            "<schema>"
          ],
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    Paste under mcpServers. Fully quit and reopen Claude after editing.

    CLI or .mcp.json
    # export SNOWFLAKE_ACCOUNT=your_account_identifier
    # export SNOWFLAKE_USER=your_user
    # export SNOWFLAKE_ROLE=READ_ONLY_AGENT_ROLE
    # export SNOWFLAKE_WAREHOUSE=XS_AGENT_WH
    # export SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
    claude mcp add snowflake -- uvx mcp_snowflake_server --account <account> --user <user> --warehouse <warehouse> --role <role> --database <database> --schema <schema>

    Run from your repo. Commit .mcp.json to share with your team.

    .cursor/mcp.json
    {
      "mcpServers": {
        "snowflake": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account",
            "<account>",
            "--user",
            "<user>",
            "--warehouse",
            "<warehouse>",
            "--role",
            "<role>",
            "--database",
            "<database>",
            "--schema",
            "<schema>"
          ],
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    Global path: ~/.cursor/mcp.json. Reload window after editing.

    .vscode/mcp.json
    {
      "servers": {
        "snowflake": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account",
            "<account>",
            "--user",
            "<user>",
            "--warehouse",
            "<warehouse>",
            "--role",
            "<role>",
            "--database",
            "<database>",
            "--schema",
            "<schema>"
          ],
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    VS Code uses the "servers" key (not "mcpServers").

    ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "snowflake": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account",
            "<account>",
            "--user",
            "<user>",
            "--warehouse",
            "<warehouse>",
            "--role",
            "<role>",
            "--database",
            "<database>",
            "--schema",
            "<schema>"
          ],
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    Open via Cascade → hammer icon → Configure.

    cline_mcp_settings.json
    {
      "mcpServers": {
        "snowflake": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account",
            "<account>",
            "--user",
            "<user>",
            "--warehouse",
            "<warehouse>",
            "--role",
            "<role>",
            "--database",
            "<database>",
            "--schema",
            "<schema>"
          ],
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    Open via the Cline sidebar → MCP Servers → Edit.

    ~/.continue/config.json
    {
      "experimental": {
        "modelContextProtocolServers": [
          {
            "transport": {
              "type": "stdio",
              "command": "uvx",
              "args": [
                "mcp_snowflake_server",
                "--account",
                "<account>",
                "--user",
                "<user>",
                "--warehouse",
                "<warehouse>",
                "--role",
                "<role>",
                "--database",
                "<database>",
                "--schema",
                "<schema>"
              ],
              "env": {
                "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
                "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
                "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
                "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
                "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
              }
            }
          }
        ]
      }
    }

    Continue uses modelContextProtocolServers with a transport block.

    ~/.codex/config.toml
    # ~/.codex/config.toml
    [mcp_servers.snowflake]
    command = "uvx"
    args = [
      "mcp_snowflake_server",
      "--account",
      "<account>",
      "--user",
      "<user>",
      "--warehouse",
      "<warehouse>",
      "--role",
      "<role>",
      "--database",
      "<database>",
      "--schema",
      "<schema>",
    ]
    env = { SNOWFLAKE_ACCOUNT = "${SNOWFLAKE_ACCOUNT}", SNOWFLAKE_USER = "${SNOWFLAKE_USER}", SNOWFLAKE_ROLE = "${SNOWFLAKE_ROLE}", SNOWFLAKE_WAREHOUSE = "${SNOWFLAKE_WAREHOUSE}", SNOWFLAKE_PRIVATE_KEY_PATH = "${SNOWFLAKE_PRIVATE_KEY_PATH}" }

    Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

    ~/.config/zed/settings.json
    {
      "context_servers": {
        "snowflake": {
          "command": {
            "path": "uvx",
            "args": [
              "mcp_snowflake_server",
              "--account",
              "<account>",
              "--user",
              "<user>",
              "--warehouse",
              "<warehouse>",
              "--role",
              "<role>",
              "--database",
              "<database>",
              "--schema",
              "<schema>"
            ]
          },
          "env": {
            "SNOWFLAKE_ACCOUNT": "${SNOWFLAKE_ACCOUNT}",
            "SNOWFLAKE_USER": "${SNOWFLAKE_USER}",
            "SNOWFLAKE_ROLE": "${SNOWFLAKE_ROLE}",
            "SNOWFLAKE_WAREHOUSE": "${SNOWFLAKE_WAREHOUSE}",
            "SNOWFLAKE_PRIVATE_KEY_PATH": "${SNOWFLAKE_PRIVATE_KEY_PATH}"
          }
        }
      }
    }

    Zed calls them "context_servers". Settings live-reload on save.

    ChatGPT → Apps directory

    Snowflake (community) doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

  2. 2

    Set required secrets

    Set SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_ROLE, SNOWFLAKE_WAREHOUSE, SNOWFLAKE_PRIVATE_KEY_PATH in your shell environment before launching your MCP client.

  3. 3

    Try a minimum working prompt

    Minimum working prompt pending verification. Try any prompt from the MCP’s README once installed.

Tools & permissions

ToolDescriptionArgsSide effects
read_queryExecute a SELECT query and return rows.query: stringRead
write_queryExecute INSERT, UPDATE, or DELETE. Registered only with --allow-write.query: stringWrite
create_tableExecute a CREATE TABLE statement. Registered only with --allow-write.query: stringWrite
list_databasesList all databases in the Snowflake account.—Read
list_schemasList schemas within a database.database: stringRead
list_tablesList tables within a database and schema.database: string, schema: stringRead
describe_tableReturn column names, types, nullability, defaults, and comments for a fully qualified table.table_name: stringRead
append_insightAppend a discovered insight to the memo://insights resource.insight: stringWrite

Security & scope

Access scope
Read-only
Sandbox
Connects to a Snowflake account using key-pair, password, or external-browser auth. Read-only at the MCP tool layer unless --allow-write is passed; pair with a SELECT-only role and a resource-monitored XS warehouse to bound spend.
Gotchas
  • Snowflake is billed per warehouse-second. Always attach a resource monitor to the warehouse the MCP uses.
  • Static passwords in env are leak-prone — prefer key-pair auth and a key path the OS keychain can protect.
  • A privileged role connected here can drop tables through read_query regardless of the tool split. Scope to a SELECT-only role even on staging accounts.
  • --allow-write registers write_query and create_table for the whole session; there is no per-call confirmation step.
  • The repository ships a GPL-3.0 LICENSE while the README claims MIT. Treat it as GPL-3.0 until the maintainer reconciles them.

Agent prompt pack

— copy into Claude, Cursor, or ChatGPT.
Paste into Claude, Cursor, or ChatGPT. Edit the [brackets] before sending.
Recommend the best MCP servers for [task: e.g. databases work] in [client: Claude].

Constraints:
- Prefer tools that are [official | open-source | read-only] — pick what matters for my use case.
- Exclude MCPs that require [e.g. a paid plan, OAuth-only flows, remote-only transport].
- Return at most 3 picks, ranked.

For each pick include:
1. One-sentence rationale.
2. The ready-to-paste install snippet for my client.
3. Any required secrets I need to create before installing.

Cross-check the top-mcps.com listing: https://top-mcps.com/top-mcps-for-databases
Compare Snowflake (community) against a real alternative. Swap the second MCP in [brackets] if you want a different match.
Compare Snowflake (community) MCP vs [Snowflake (official) MCP] for the following job: [describe the job, e.g. "let an agent create GitHub issues on bug triage"].

Judge them on:
- Setup time and complexity (what a new user hits first).
- Auth model (none / API key / OAuth 2.1) and credential risk.
- Transport (stdio / Streamable HTTP / SSE) and where the server runs.
- Required secrets and the blast radius if they leak.
- Operational risk in an unattended agent loop.
- Which one is "good enough" for a weekend prototype vs. production.

End with one sentence: which should I pick for my scenario, which is: [my scenario].

References:
- https://top-mcps.com/mcp/snowflake
- top-mcps.com listing for Snowflake (official)
Asks the agent to install and verify. Works inside Claude Code, Cursor Agent, Codex CLI.
Install the Snowflake (community) MCP server for my [client: Claude] at the default config path for that client.

Use the exact install snippet published at https://top-mcps.com/mcp/snowflake (fetch https://top-mcps.com/mcp/snowflake.json for the canonical server.json if you can read URLs).

Before finishing:
1. Create the required secrets (SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_ROLE, SNOWFLAKE_WAREHOUSE, SNOWFLAKE_PRIVATE_KEY_PATH) and put them in the appropriate env block — do not hard-code them.
2. Restart or reload the client so it picks up the new server.
3. Verify the server is connected (green / running state) and at least one tool is listed.
4. If anything fails, read the client's MCP logs and report the exact error — do not silently retry.

Confirm when done and list the tools the server now exposes.

Frequently asked questions

What changed

— 2 updates tracked.
  1. Refreshed install snippets and fact sheet; verified for 2026.

  2. Initial directory listing.

More Databases MCPs

Other tools in the same category worth evaluating.

Postgres MCP ProPRO

Production-grade Postgres MCP with index advice, EXPLAIN, and health checks.

database, sql, postgres, performance
5 minMedium
SQLite

Local SQLite database access with full read/write support.

database, sqlite, local, storage
2 minLow

Full Supabase access: database, auth, storage, and edge functions.

supabase, database, backend, postgres
5 minLow

Compared with Snowflake (community)

Side-by-side breakdowns for the choices people most often weigh against this MCP.

Exploring Top MCPs for Databases? See all Databases MCPs →