snowflake-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SNOWFLAKE_ROLE | No | Default role to use. | |
| SNOWFLAKE_USER | No | Snowflake username. | |
| SNOWFLAKE_TOKEN | No | Programmatic access token (PAT) or OAuth token. | |
| SNOWFLAKE_SCHEMA | No | Default schema to use. | |
| SNOWFLAKE_ACCOUNT | No | Snowflake account identifier (e.g., xyz12345.us-east-1). | |
| SNOWFLAKE_DATABASE | No | Default database to use. | |
| SNOWFLAKE_MAX_ROWS | No | Maximum number of rows returned by a query before truncation. | 1000 |
| SNOWFLAKE_PASSWORD | No | Snowflake password. | |
| SNOWFLAKE_WAREHOUSE | No | Default virtual warehouse to use. | |
| SNOWFLAKE_MCP_READONLY | No | Set to '1' to enable read-only safety mode, disabling all DDL/DML mutation capabilities. | 0 |
| SNOWFLAKE_AUTHENTICATOR | No | Authentication method, e.g. 'externalbrowser' for SSO/browser authentication. | |
| SNOWFLAKE_QUERY_TIMEOUT | No | Query timeout in seconds. | 120 |
| SNOWFLAKE_PRIVATE_KEY_PATH | No | Path to the private key for RSA key-pair JWT authentication. | |
| SNOWFLAKE_PRIVATE_KEY_PASSPHRASE | No | Passphrase for the private key, if encrypted. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| queries_queryB | Execute a SQL SELECT or read-only query on Snowflake and return structured rows with metadata. |
| queries_execute_dmlB | Execute a data modification SQL statement (INSERT, UPDATE, DELETE, MERGE, CREATE). Requires confirmation. |
| queries_cancel_queryA | Cancel an active running Snowflake query by its Query ID. Requires confirmation. |
| queries_get_query_historyB | Retrieve recent query execution history for the current account/user. |
| queries_get_query_planA | Generate the EXPLAIN execution plan for a SQL query without executing it. |
| queries_get_query_operator_statsB | Retrieve operator-level execution statistics and profiling data for a past Query ID. |
| queries_begin_transactionA | Begin an explicit transaction on the active session. |
| queries_commit_transactionA | Commit the current active transaction on the session. |
| queries_rollback_transactionA | Rollback the current active transaction on the session. Requires confirmation. |
| databases_list_databasesC | List all available databases accessible to the current role. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| databases_describe_databaseB | Describe properties, owner, retention time, and comment of a database. |
| databases_create_databaseC | Create a new database in Snowflake. |
| databases_clone_databaseB | Create a zero-copy clone of a database in Snowflake. |
| databases_drop_databaseA | Drop a database in Snowflake. Requires confirmation flag. |
| databases_undrop_databaseA | Restore a recently dropped database using Time Travel. |
| databases_get_database_ddlB | Retrieve the exact CREATE DATABASE DDL definition. |
| schemas_list_schemasB | List all schemas within a specific database or the current active database. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| schemas_describe_schemaA | Describe schema properties, owner, and retention settings. |
| schemas_create_schemaC | Create a new schema inside a specified database. |
| schemas_clone_schemaB | Create a zero-copy clone of a schema. |
| schemas_drop_schemaB | Drop a schema in Snowflake. Requires confirmation flag. |
| schemas_undrop_schemaB | Restore a recently dropped schema using Time Travel. |
| tables_list_tablesB | List tables in a database schema with row counts and bytes. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| tables_list_viewsB | List views in a database schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| tables_describe_tableB | Describe column definitions, data types, nullability, and primary keys for a table or view. |
| tables_get_table_ddlB | Retrieve the exact CREATE OR REPLACE TABLE/VIEW DDL definition for an object. |
| tables_sample_tableC | Preview sample rows from a table (default 10 rows). |
| tables_create_tableC | Create a table in Snowflake with specified column definitions SQL. |
| tables_drop_tableB | Drop a table in Snowflake. Requires confirmation flag. |
| tables_undrop_tableA | Restore a recently dropped table using Time Travel. |
| tables_truncate_tableA | Truncate all data rows from a table while preserving schema. Requires confirmation. |
| tables_clone_tableB | Create a zero-copy clone of an existing table. |
| warehouses_list_warehousesB | List virtual warehouses in the account with size, state, and auto-suspend configurations. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| warehouses_describe_warehouseA | Describe details and running state of a specific virtual warehouse. A name in double quotes, such as a list row's quoted_name, must match exactly. |
| warehouses_create_warehouseC | Create a new virtual warehouse in Snowflake. |
| warehouses_drop_warehouseB | Drop a virtual warehouse. Requires confirmation. |
| warehouses_resume_warehouseB | Resume a suspended virtual warehouse. |
| warehouses_suspend_warehouseA | Suspend an active virtual warehouse to save compute costs. |
| warehouses_resize_warehouseB | Change warehouse compute size (XSMALL, SMALL, MEDIUM, LARGE, XLARGE, 2XLARGE, etc.). |
| warehouses_get_warehouse_load_historyC | Get execution load, queuing, and provisioning history for a warehouse. |
| stages_list_stagesB | List internal and external stages available in the active database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| stages_describe_stageB | Describe stage location URL, storage integration, and file format properties. |
| stages_create_stageC | Create an internal named stage in Snowflake. |
| stages_drop_stageA | Drop a stage in Snowflake. Requires confirmation. |
| stages_list_stage_filesB | List files inside a Snowflake stage location (e.g. '@MY_STAGE/path/'). |
| stages_remove_stage_fileB | Remove a file from a stage location. Requires confirmation. |
| tasks_list_tasksB | List tasks in a database or schema with schedule, state, and predecessor info. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| tasks_describe_taskA | Describe task definition, schedule, warehouse, and definition SQL. |
| tasks_create_taskC | Create a scheduled or serverless task in Snowflake. |
| tasks_drop_taskA | Drop a task in Snowflake. Requires confirmation. |
| tasks_resume_taskC | Resume a suspended task. |
| tasks_suspend_taskB | Suspend an active scheduled task. |
| tasks_execute_taskB | Trigger an immediate one-time execution of a task. Requires confirmation. |
| streams_list_streamsB | List table/view streams in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| streams_describe_streamA | Describe stream metadata, source table, and stale status. |
| streams_create_streamC | Create a CDC stream on a table or view. |
| streams_drop_streamB | Drop a stream. Requires confirmation. |
| streams_read_stream_changesB | Query unconsumed CDC changes recorded in a stream (default 10 rows). |
| dynamic_tables_list_dynamic_tablesC | List dynamic tables with lag targets, refresh mode, and last refresh status. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| dynamic_tables_describe_dynamic_tableA | Describe dynamic table definition, target lag, warehouse, and query text. |
| dynamic_tables_refresh_dynamic_tableB | Trigger an immediate manual refresh of a dynamic table. |
| dynamic_tables_resume_dynamic_tableC | Resume scheduling and lag monitoring for a dynamic table. |
| dynamic_tables_suspend_dynamic_tableB | Suspend automated refresh and lag evaluation for a dynamic table. |
| dynamic_tables_list_iceberg_tablesB | List Apache Iceberg tables in the account, database, or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| dynamic_tables_describe_iceberg_tableB | Describe schema, catalog integration, and external volume of an Iceberg table. |
| dynamic_tables_list_external_volumesB | List external cloud storage volumes configured for Apache Iceberg tables. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| dynamic_tables_list_catalog_integrationsA | List catalog integrations (Polaris, AWS Glue, Object Storage) configured in Snowflake. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| pipes_list_pipesB | List Snowpipes configured in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| pipes_describe_pipeC | Describe pipe definition and COPY statement. |
| pipes_create_pipeC | Create a Snowpipe for continuous ingestion. |
| pipes_drop_pipeB | Drop a Snowpipe. Requires confirmation. |
| pipes_get_pipe_statusA | Get execution and health status of a Snowpipe (pending file count, last ingested timestamp). |
| alerts_list_alertsB | List configured alerts with condition queries, schedules, and state. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| alerts_describe_alertB | Describe alert condition SQL, action SQL, schedule, and warehouse. |
| alerts_create_alertB | Create an alert with schedule, condition SQL, and action SQL. Destructive actions require confirm=True. |
| alerts_drop_alertA | Drop an alert in Snowflake. Requires confirmation. |
| alerts_resume_alertC | Resume a suspended alert. |
| alerts_suspend_alertB | Suspend an active alert. |
| governance_get_current_contextA | Retrieve current active session context (current user, role, warehouse, database, schema, and account). |
| governance_list_connectionsA | List available connection profiles configured in ~/.snowflake/connections.toml and show active profile. |
| governance_use_connectionB | Dynamically switch the active Snowflake session to a different connection profile from ~/.snowflake/connections.toml. |
| governance_list_rolesC | List roles available in the Snowflake account. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| governance_describe_roleA | Describe role properties and assigned grants. A name in double quotes, such as a list row's quoted_name, must match exactly. |
| governance_create_roleC | Create a new role in Snowflake. |
| governance_drop_roleB | Drop a role in Snowflake. Requires confirmation. |
| governance_list_usersB | List users in the Snowflake account with login status and default roles. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| governance_describe_userA | Describe user properties, email, disabled status, and default warehouse/role. |
| governance_create_userC | Create a new Snowflake user with default role and warehouse. |
| governance_list_grants_to_roleA | List privileges granted to a specific role. |
| governance_list_grants_to_userB | List roles granted to a specific user. |
| network_list_network_policiesB | List network policies configured in the account. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| network_describe_network_policyB | Describe allowed IP lists, blocked IP lists, and comments for a network policy. |
| network_list_network_rulesB | List network rules defined in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| network_describe_network_ruleB | Describe mode (INGRESS, INTERNAL_STAGE, EGRESS), type (IPV4, AWSVPCEID, HOST_PORT), and value list of a network rule. |
| network_list_password_policiesB | List password security policies defined in the account or database. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| network_describe_password_policyB | Describe password policy constraints (min length, lockout time, history, age). |
| compute_services_list_streamlitsB | List Streamlit applications hosted in Snowflake. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| compute_services_describe_streamlitA | Describe Streamlit application root location, stage, and query warehouse. |
| compute_services_list_compute_poolsB | List Snowpark Container Services (SPCS) compute pools. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| compute_services_describe_compute_poolB | Describe compute pool instance family, min/max nodes, active nodes, and state. |
| compute_services_resume_compute_poolA | Resume an idle or suspended SPCS compute pool. |
| compute_services_suspend_compute_poolA | Suspend an active SPCS compute pool to stop node provisioning costs. |
| compute_services_list_servicesB | List container services running on SPCS compute pools. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| compute_services_list_image_repositoriesB | List OCI image repositories in Snowflake. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| tags_list_tagsB | List object tags defined in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| tags_describe_tagA | Describe tag properties, allowed values, and comment. A name in double quotes, such as a list row's quoted_name, must match exactly. |
| tags_get_object_tag_referencesB | Get tag key/value assignments on a specific database object. |
| tags_set_object_tagC | Set or assign a tag value on a Snowflake object (TABLE, SCHEMA, DATABASE, etc.). |
| horizon_get_object_lineageB | Retrieve upstream source and downstream dependent object lineage from Snowflake Horizon. |
| horizon_get_column_lineageB | Trace origin and transformation lineage for a column using Snowflake Horizon Access History. |
| horizon_list_masking_policiesB | List column masking policies in the account, database, or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| horizon_describe_masking_policyB | Describe signature, return type, and body of a masking policy. |
| horizon_list_row_access_policiesA | List row access policies defined in the account, database, or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| horizon_describe_row_access_policyB | Describe signature, filter expression, and comment of a row access policy. |
| programmability_list_proceduresC | List stored procedures in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_describe_procedureA | Describe procedure signature, return type, language, and definition body. |
| programmability_list_functionsB | List user-defined functions (UDFs) in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_describe_functionB | Describe UDF function signature, return type, language, and body. |
| programmability_list_secretsB | List security secrets (API keys, OAuth credentials) stored in Snowflake. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_describe_secretA | Describe secret metadata, type (GENERIC_STRING, OAUTH2), and owner without exposing secret value. |
| programmability_list_sequencesB | List auto-increment sequences in a database or schema. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_list_integrationsB | List external integrations (API, Storage, Notification, Security integrations). Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_list_event_tablesB | List event tables used for application logging, tracing, and SPCS telemetry. Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| programmability_list_notification_integrationsC | List notification integrations configured for alerts, tasks, and cloud messaging (SNS, PubSub, Webhooks). Each row also has quoted_name, the name in double quotes, and, when the row has a database and schema, quoted_qualified_name. |
| cortex_completeC | Run LLM completion using Snowflake Cortex AI (e.g., 'llama3.3-70b', 'mistral-large2', 'snowflake-arctic'). |
| cortex_summarizeB | Summarize English text using Snowflake Cortex AI. |
| cortex_sentimentB | Analyze sentiment of text returning score from -1.0 (most negative) to 1.0 (most positive). |
| cortex_extract_answerB | Extract direct answer to a question from unstructured source document/text. |
| cortex_translateC | Translate text from a source language to a target language using Snowflake Cortex AI. |
| cortex_searchC | Query a Snowflake Cortex Search Service index over unstructured text. |
| cortex_embed_text_768B | Generate 768-dimensional dense vector embeddings for text using Snowflake Cortex AI. |
| cortex_analyst_queryC | Ask a natural language analytical question using Cortex Analyst semantic models. |
| recipes_health_checkA | Composite recipe: Run health check on connection, active session, warehouse state, and credit consumption. |
| recipes_inspect_table_with_sampleB | Composite recipe: Describe table schema, row count, column types, and preview sample rows in 1 call. |
| recipes_profile_tableB | Composite recipe: Profile table metadata, row count, and column inventory. |
| recipes_warehouse_scale_and_executeB | Composite recipe: Safely scale up a warehouse, run a heavy query, and optionally restore previous size. Requires confirmation. |
| recipes_clone_table_recipeA | Composite recipe: Clone table with Time Travel timestamp or statement ID in 1 call. |
| recipes_export_query_to_stageC | Composite recipe: Unload query results to a stage as Parquet or CSV files. |
| recipes_account_usage_summaryA | Composite recipe: Summary of warehouse compute credits and storage consumption over the past 7 days. |
| recipes_discover_schema_lineageB | Composite recipe: Discover all tables and views in a schema along with their column definitions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 140 tools
Most tools are separated by resource prefixes (databases_, tables_, warehouses_, etc.) and clear descriptions, so many choices are unambiguous. However, several composite recipes overlap heavily with base tools (e.g. recipes_profile_table vs recipes_inspect_table_with_sample vs tables_describe_table/tables_sample_table), and a few list tools overlap, such as programmability_list_integrations vs programmability_list_notification_integrations.
The dominant pattern is category_verb_object in snake_case, which is highly predictable across most of the surface. There are minor deviations and awkward names such as queries_query, cortex_complete, recipes_health_check, recipes_clone_table_recipe, and the typo compute_services_list_streamlits.
At 140 tools, the surface is far beyond a practical, well-scoped set for agent selection. Even for a broad platform like Snowflake, this volume creates excessive choice overload and many tools could be consolidated into fewer parameterized operations.
Coverage is broad for querying, listing, describing, and some lifecycle operations across databases, schemas, tables, warehouses, tasks, streams, pipes, alerts, and governance objects. However, there are notable gaps: no grant/revoke operations, no alter-table/alter-object tools, no create/drop for dynamic tables or compute pools, no create for network policies, and no stage file upload/download.