Production-grade Postgres MCP with index advice, EXPLAIN, and health checks.
- Home
- Top MCPs for Databases
- Snowflake (community)
Snowflake (community)
Inspect schemas and run SQL against a Snowflake account from an AI agent.
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
Install
claude_desktop_config.jsonjson{ "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.jsonshell# 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.jsonjson{ "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.jsonjsonc{ "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.jsonjson{ "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.jsonjson{ "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.jsonjson{ "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.tomlshell# ~/.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.jsonjsonc{ "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 directorynoneSnowflake (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
Set required secrets
Set
SNOWFLAKE_ACCOUNT,SNOWFLAKE_USER,SNOWFLAKE_ROLE,SNOWFLAKE_WAREHOUSE,SNOWFLAKE_PRIVATE_KEY_PATHin your shell environment before launching your MCP client. - 3
Try a minimum working prompt
Minimum working prompt pending verification. Try any prompt from the MCP’s README once installed.
Tools & permissions
| Tool | Description | Args | Side effects |
|---|---|---|---|
read_query | Execute a SELECT query and return rows. | query: string | Read |
write_query | Execute INSERT, UPDATE, or DELETE. Registered only with --allow-write. | query: string | Write |
create_table | Execute a CREATE TABLE statement. Registered only with --allow-write. | query: string | Write |
list_databases | List all databases in the Snowflake account. | — | Read |
list_schemas | List schemas within a database. | database: string | Read |
list_tables | List tables within a database and schema. | database: string, schema: string | Read |
describe_table | Return column names, types, nullability, defaults, and comments for a fully qualified table. | table_name: string | Read |
append_insight | Append a discovered insight to the memo://insights resource. | insight: string | Write |
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.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) 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)
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.Refreshed install snippets and fact sheet; verified for 2026.
Initial directory listing.
More Databases MCPs
Other tools in the same category worth evaluating.
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 →
