MCP Directory

How to add Snowflake MCP Server to Windsurf

Query Snowflake databases over MCP — read/write SQL, schema discovery, and data-insight memos. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 183 · stdio · apikey

Windsurf config for Snowflake MCP Server

npx -y @smithery/cli install mcp_snowflake_server --client claude
{
  "mcpServers": {
    "snowflake-mcp-server": {
      "command": "uvx",
      "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"
      ]
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the Snowflake MCP Server config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5Snowflake MCP Server's tools become available to Cascade.

Before you start

  • A Snowflake account with credentials (account, user, warehouse, role, database, schema)
  • Authentication via password, private key path, or external-browser authenticator
  • uv / uvx (or Python <=3.12) to run the server
  • An MCP client such as Claude Desktop

What Snowflake MCP Server can do in Windsurf

read_query

Execute SELECT queries to read data from the database. Input: query (string). Returns query results as an array of objects.

write_query

Execute INSERT, UPDATE, or DELETE queries. Enabled only with --allow-write. Input: query (string). Returns number of affected rows or confirmation.

create_table

Create new tables in the database. Enabled only with --allow-write. Input: query (CREATE TABLE SQL statement). Returns confirmation of table creation.

list_databases

List all databases in the Snowflake instance. Returns an array of database names.

list_schemas

List all schemas within a specific database. Input: database (string). Returns an array of schema names.

list_tables

List all tables within a specific database and schema. Input: database (string), schema (string). Returns an array of table metadata.

describe_table

View column information for a specific table. Input: table_name (fully qualified database.schema.table). Returns column definitions with names, types, nullability, defaults, and comments.

append_insight

Add new data insights to the memo resource. Input: insight (string). Returns confirmation and triggers an update of the memo://insights resource.

Security

By default, write operations are disabled; enable them explicitly with --allow-write, which turns on write_query and create_table. Snowflake credentials (password, private key path, or external-browser authentication) are supplied via command-line args, environment variables, or a TOML connections file. The server can filter out specific databases, schemas, or tables via exclusion patterns, and supports --exclude_tools to disable individual tools.

Snowflake MCP Server + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the Snowflake MCP Server config there under the "mcpServers" key and restart the client.

Is Snowflake MCP Server safe to use with Windsurf?

By default, write operations are disabled; enable them explicitly with --allow-write, which turns on write_query and create_table. Snowflake credentials (password, private key path, or external-browser authentication) are supplied via command-line args, environment variables, or a TOML connections file. The server can filter out specific databases, schemas, or tables via exclusion patterns, and supports --exclude_tools to disable individual tools.

Are write operations enabled by default?

No. Write operations are disabled by default. You must start the server with --allow-write to enable the write_query and create_table tools.

How do I provide Snowflake credentials?

Via individual command-line arguments (--account, --user, --password, etc.), environment variables / a .env file, or a TOML connections file referenced with --connections-file and --connection-name. Password, private key path, or external-browser authentication are supported.

Can I restrict which databases, schemas, or tables are visible?

Yes. The server supports filtering out specific databases, schemas, or tables via exclusion patterns (e.g. configured in runtime_config.json), and individual tools can be disabled with --exclude_tools.

View repo Full Snowflake MCP Server page