Skip to main content
Glama
faressoft

snowflake-mcp

by faressoft

Snowflake MCP Server

A Model Context Protocol (MCP) server that enables AI agents to execute SQL queries against Snowflake databases.

Users can use natural language to query Snowflake databases, like:

  • "Get me the top 10 products by revenue"

  • "Show me the total revenue for the last 30 days"

  • "Describe the structure of the orders table"

  • "Explore the database and summarize what data is available"

  • "Build a query to find customers who haven't ordered in 90 days"

Features

  • Execute SQL queries directly from AI agents like Cursor, Claude Desktop, etc.

  • Schema Discovery: Browse databases, schemas, tables, and views

  • Table Inspection: Describe table structures, view sample data, check row counts

  • Query Safety: Readonly mode, row limits, and query timeouts

  • Multiple Output Formats: Table, JSON, or CSV

  • Query Explanation: Get execution plans for queries

  • MCP Prompts: Guided workflows for common tasks

  • Support for both password and SSO (browser-based) authentication

  • Configurable default warehouse, database, schema, and role

Related MCP server: Snowflake Developer MCP Server

Prerequisites

  • Node.js 18 or later

Usage

Cursor

Add to your Cursor MCP settings (~/.cursor/mcp.json):

{
  "mcpServers": {
    "snowflake": {
      "command": "npx",
      "args": ["-y", "snowflake-mcp"],
      "env": {
        "SNOWFLAKE_ACCOUNT": "your-org-your-account",
        "SNOWFLAKE_USERNAME": "your-username",
        "SNOWFLAKE_AUTHENTICATOR": "externalbrowser",
        "SNOWFLAKE_WAREHOUSE": "your-warehouse",
        "SNOWFLAKE_DATABASE": "your-database",
        "SNOWFLAKE_SCHEMA": "your-schema"
      }
    }
  }
}

A browser window will open for authentication on first query.

Password Authentication

{
  "mcpServers": {
    "snowflake": {
      "command": "npx",
      "args": ["-y", "snowflake-mcp"],
      "env": {
        "SNOWFLAKE_ACCOUNT": "your-org-your-account",
        "SNOWFLAKE_USERNAME": "your-username",
        "SNOWFLAKE_PASSWORD": "your-password",
        "SNOWFLAKE_ROLE": "your-role",
        "SNOWFLAKE_WAREHOUSE": "your-warehouse",
        "SNOWFLAKE_DATABASE": "your-database",
        "SNOWFLAKE_SCHEMA": "your-schema",
        "SNOWFLAKE_READONLY": "true"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "snowflake": {
      "command": "npx",
      "args": ["-y", "snowflake-mcp"],
      "env": {
        "SNOWFLAKE_ACCOUNT": "your-org-your-account",
        "SNOWFLAKE_USERNAME": "your-username",
        "SNOWFLAKE_AUTHENTICATOR": "externalbrowser"
      }
    }
  }
}

Configuration

Variable

Required

Default

Description

SNOWFLAKE_ACCOUNT

Yes

-

Your Snowflake account identifier (e.g., ORG-ACCOUNT)

SNOWFLAKE_USERNAME

Yes

-

Snowflake username

SNOWFLAKE_AUTHENTICATOR

No

externalbrowser

Authentication method: externalbrowser (SSO) or snowflake (password)

SNOWFLAKE_PASSWORD

Conditional

-

Required if authenticator is snowflake, not needed for externalbrowser

SNOWFLAKE_ROLE

No

-

Role to use for the session (uses account default if not set)

SNOWFLAKE_WAREHOUSE

No

-

Warehouse to use (uses account default if not set)

SNOWFLAKE_DATABASE

No

-

Database to use (uses account default if not set)

SNOWFLAKE_SCHEMA

No

-

Schema to use (uses account default if not set)

SNOWFLAKE_READONLY

No

false

Set to true to block write operations (INSERT, UPDATE, DELETE, etc.)

Finding Your Connection Settings

You can find your connection settings in Snowsight (Snowflake's web interface):

  1. Sign in to Snowsight

  2. Click on your username in the bottom-left corner to open the user menu

  3. Select Connect a tool to Snowflake

  4. Open the Config File tab

  5. Select the Warehouse, Database, Schema you want to use

  6. Copy values from the generated config file

Available Tools

Query Execution

execute_query

Execute a SQL query against Snowflake.

Parameter

Type

Required

Default

Description

query

string

Yes

-

The SQL query to execute

max_rows

number

No

100

Maximum number of rows to return

timeout

number

No

-

Query timeout in seconds

format

string

No

table

Output format: table, json, or csv

explain_query

Get the execution plan for a SQL query without running it.

Parameter

Type

Required

Description

query

string

Yes

The SQL query to explain

Connection

test_connection

Test the connection to Snowflake and return connection info including current user, role, warehouse, database, schema, and version.

Schema Discovery

list_databases

List all accessible databases in Snowflake.

list_schemas

List all schemas in a database.

Parameter

Type

Required

Description

database

string

No

Database name (uses current if not specified)

list_tables

List all tables in a schema.

Parameter

Type

Required

Description

database

string

No

Database name

schema

string

No

Schema name

list_views

List all views in a schema.

Parameter

Type

Required

Description

database

string

No

Database name

schema

string

No

Schema name

Table Inspection

describe_table

Get detailed information about a table's structure including columns, types, and constraints.

Parameter

Type

Required

Description

table

string

Yes

Table name (can include database.schema.table)

get_table_sample

Get a sample of rows from a table to understand its data.

Parameter

Type

Required

Default

Description

table

string

Yes

-

Table name

limit

number

No

5

Number of sample rows to return

get_table_row_count

Get the total number of rows in a table.

Parameter

Type

Required

Description

table

string

Yes

Table name

get_primary_keys

Get primary key columns for a table.

Parameter

Type

Required

Description

table

string

Yes

Table name

MCP Resources

schema://current

Returns information about the current database schema, including:

  • Current database and schema names

  • List of all tables

  • List of all views

Access this resource to get a quick overview of the connected schema without running queries.

MCP Prompts

analyze_table

Analyze a table's structure, sample data, and get query suggestions.

Parameter

Type

Required

Description

table_name

string

Yes

The table to analyze

explore_database

Explore and summarize the structure of a database.

Parameter

Type

Required

Description

database_name

string

No

Database to explore (uses current if not specified)

query_builder

Help build a SQL query based on natural language description.

Parameter

Type

Required

Description

description

string

Yes

Natural language description of desired query

tables

string

No

Comma-separated list of relevant tables

Security Considerations

  • SSO authentication is recommended for production use as it avoids storing passwords in configuration files

  • Readonly mode (SNOWFLAKE_READONLY=true) is recommended when you only need to query data

  • Never commit configuration files containing credentials to version control

  • Consider using environment variables or a secrets manager for sensitive values

  • The server executes queries with the permissions of the configured Snowflake user—ensure appropriate access controls are in place

  • The max_rows parameter helps prevent accidentally returning massive result sets

License

MIT License

Available Tools

11 tools
describe_tableA

Get detailed information about a table's structure including columns, types, and constraints

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesTable name (can include database.schema.table)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It implies a read-only operation ('Get detailed information') and lists what is included, but does not mention permissions, failure behavior, or whether row data is excluded. It is adequate for a simple metadata lookup but lacks explicit reassurances.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the purpose. No filler or redundant phrasing, earning the maximum score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter and no output schema, the description explains the main return content (columns, types, constraints). It is complete enough for a metadata tool, though it could be more explicit about whether primary keys or indexes are included. The description adds value beyond a bare minimum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a complete description for the single parameter (table name with optional database.schema qualifier), and the description adds no additional parameter context. Since schema coverage is 100%, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed table structure (columns, types, constraints), which is specific and distinguishes it from siblings like get_row_count or get_primary_keys. The verb 'Get' and resource 'table structure' are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (use when you need table structure) but does not explicitly compare to alternatives or state when not to use. No mention of when to prefer describe_table over get_primary_keys or list_tables, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_queryC

Execute a SQL query against Snowflake and return the results

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SQL query to execute
formatNoOutput format: table, json, or csv (default: table)table
timeoutNoQuery timeout in seconds
max_rowsNoMaximum number of rows to return (default: 100)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior, but only states that it executes SQL and returns results. It fails to disclose that arbitrary SQL (including writes/destructive statements) can be run, that there are default limits (max_rows=100, timeout), or what the response structure looks like. This is a significant transparency gap for a tool that can potentially modify data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Execute a SQL query against Snowflake and return the results.' Every word contributes meaning, with no fluff or redundancy. It is appropriately concise for a general-purpose tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 4 parameters and no output schema, the description is notably incomplete. It doesn't mention possible side effects of executing arbitrary SQL, result format defaults, row limits, or error behavior. For a tool that can run any query, the lack of safety and result-shape context leaves the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter having a clear description. The tool description itself adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate. The schema already documents query, format, timeout, and max_rows effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a SQL query against Snowflake and returns results, using a specific verb and resource. While it doesn't explicitly distinguish from sibling tools by name, its general-purpose nature is evident compared to the more specialized table inspection and metadata tools listed as siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as explain_query for query plans or get_table_sample for quick data previews. It neither states use cases nor excludes scenarios, leaving the agent to infer when this general SQL execution tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_queryA

Get the execution plan for a SQL query without running it

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SQL query to explain

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It does disclose the most critical trait—that the query is not executed—which implies no side effects. However, it omits other potentially relevant details such as whether it requires any special permissions, what happens for invalid SQL, or the exact format of the returned execution plan. This meets the minimum viable threshold but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that precisely conveys the tool's purpose and key behavior. There is no redundancy or filler—every word contributes meaning, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema) and the clear statement of a read-only behavior, the description is largely complete. It might benefit from briefly noting the return format or typical use cases, but the current text covers the essential context for an agent to invoke it correctly. It does not leave major unknowns about when or why to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage with a description for the single parameter 'query'. The tool description adds the phrase 'SQL query' and 'execution plan', which reinforces the parameter's purpose but does not add new syntactic or format details beyond what the schema states. This aligns with the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets an execution plan for a SQL query, using the specific verb 'Get' and identifying the resource (execution plan for a SQL query). It also distinguishes itself from the sibling execute_query by explicitly noting it does so 'without running it', eliminating ambiguity about its function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the user wants a query plan without execution, which clearly separates it from execute_query. While it doesn't explicitly name alternatives or state exclusions, the context of sibling tools and the phrase 'without running it' provide clear usage context. This is slightly above baseline as the intended use case is clear from the description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_primary_keysB

Get primary key columns for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesTable name (can include database.schema.table)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only restates the purpose. It does not disclose output format, behavior for tables without primary keys, error handling, or any other behavioral traits. The agent must guess the return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the function without unnecessary verbiage. It is concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple one-parameter scope, the description is mostly adequate. However, it does not specify the exact return format (e.g., array of column names) or edge cases like tables with no primary key, so it falls short of full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the 'table' parameter (100% coverage), including the ability to specify database.schema.table. The description adds no additional semantic detail beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and clearly identifies the resource ('primary key columns for a table'). It distinguishes from sibling tools that focus on row counts, table lists, or generic describe operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like describe_table, and does not mention any exclusions or preferred contexts. Agents are left to infer suitability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_table_row_countA

Get the total number of rows in a table

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesTable name (can include database.schema.table)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states the operation without caveats. It does not mention performance implications, exactness, or error handling, though it clearly indicates a read-only fetch of a count.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the action and target. There is no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool, the description is nearly sufficient: it names the operation and parameter. However, the lack of return-type details and usage alternatives leaves minor gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage for the single 'table' parameter, including its format. The description adds no further parameter semantics, so it is at the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('total number of rows in a table'), clearly distinguishing it from sibling tools that list tables, describe schemas, or sample data. It unambiguously conveys the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description simply restates the function without indicating e.g. that get_table_sample should be used for row previews or describe_table for schema details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_table_sampleB

Get a sample of rows from a table to understand its data

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of sample rows to return (default: 5)
tableYesTable name (can include database.schema.table)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'sample' but does not clarify whether rows are random, ordered, or limited by the limit parameter, nor does it state that this is a read-only operation. This ambiguity could mislead an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the core purpose without unnecessary words. Every word contributes meaning, making it highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and does not compensate for the absence of an output schema or annotations. It fails to explain the nature of the sample (e.g., limit behavior, randomness) or offer any context about when this tool is preferable to siblings, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for both parameters, each with a clear description. The tool description adds no additional parameter semantics beyond what the schema already offers, which meets the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a sample of rows from a table to understand its data. It uses a specific verb ('get') and resource ('sample of rows from a table'), effectively distinguishing it from siblings like get_table_row_count and describe_table.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools (e.g., describe_table, execute_query), it lacks explicit context about appropriate use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_databasesA

List all accessible databases in Snowflake

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It mentions 'accessible' databases, implying permission-based scoping, but does not explicitly state that the operation is read-only or describe return format, pagination, or other behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that states the tool's purpose without redundant words. It is front-loaded with the action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless listing tool, the description conveys the core function sufficiently. However, since there is no output schema, it could be more explicit about what is returned (e.g., database names and properties), leaving a slight gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so schema coverage is 100% by default. The description appropriately implies no inputs are needed, and the baseline of 4 applies for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (list), the resource (databases), the scope (all accessible), and the environment (Snowflake). It is distinct from sibling tools such as list_tables and list_schemas by explicitly naming 'databases' as the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention related tools or scenarios, leaving the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_schemasA

List all schemas in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNoDatabase name (uses current database if not specified)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, but 'List' clearly signals a read-only operation with no side effects. It does not explicitly discuss permissions or edge cases, but for a simple listing operation, the behavior is unambiguous enough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, immediately stating the core function with no filler words. It is optimally concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity and full schema coverage, the description is nearly sufficient. It does not specify the return format (e.g., list of strings), but for a simple listing tool this is generally expected. The lack of an output schema slightly reduces completeness, but the description covers the essential action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers the single parameter ('database') fully, so the description does not need to add parameter details. Baseline of 3 applies because schema coverage is 100% and the description adds no extra semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a specific resource ('all schemas in a database'), clearly distinguishing it from sibling tools like list_tables and list_views. It unambiguously states what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or exclusions, leaving the agent to infer usage solely from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tablesB

List all tables in a schema

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name
databaseNoDatabase name

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description provides minimal behavioral information. It does not disclose pagination, permissions, or how the database parameter affects results, leaving the agent with only the name and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, front-loading the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description omits the database parameter and return format. With no output schema and no annotations, the description could provide more context on how schema and database relate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the input schema with 100% coverage, so the baseline is 3. The description does not add further detail about parameter usage beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'list' with resource 'tables' and scope 'in a schema', clearly distinguishing from sibling tools like list_views, list_databases, and list_schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like list_views or list_schemas. The description does not mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_viewsC

List all views in a schema

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name
databaseNoDatabase name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of conveying behavior. It only states 'list', implying a read-only operation, but fails to disclose whether both parameters are required, what happens with invalid schema names, or the output format. This is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It succinctly captures the primary action without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although this is a simple listing tool, the description omits essential context. The presence of a 'database' parameter is unexplained, the requiredness of the schema parameter is ambiguous (required parameters are 0, yet the description says 'in a schema'), and without an output schema, the return format is unknown. This incompleteness could lead to incorrect invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters ('Schema name' and 'Database name'), so the description's contribution is minimal. It adds that views are listed within a schema, but does not clarify the relationship between schema and database parameters. Since schema coverage is 100%, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all views in a schema' clearly identifies the action (list) and resource (views), which distinguishes it from sibling tools like list_tables or list_schemas. However, the phrase 'in a schema' is slightly ambiguous given the presence of a 'database' parameter, leaving the exact scope unclear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as list_tables or list_schemas. It does not mention any prerequisites, exclusions, or specific use cases, leaving the agent to infer appropriateness.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionA

Test the connection to Snowflake and return connection info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the tool tests the connection and returns info, but does not disclose whether this is a read-only operation, if it requires special permissions, what network calls occur, or what specific connection info is returned. This lack of detail leaves the agent guessing about side effects and output contents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb and resource. Every word contributes to communicating the purpose, with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and no output schema, the description is minimally sufficient, but it leaves the 'connection info' unspecified. Without annotations or an output schema, a more detailed description of what info is returned (e.g., version, user, warehouse) would help the agent understand the tool's usefulness and result handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is trivially simple. The description need not add parameter details. With no params, the baseline is 4 and the description adequately aligns with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool tests the connection to Snowflake and returns connection info. This distinguishes it from siblings like list_tables, execute_query, and describe_table, which all target specific data operations rather than connectivity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is given, but the purpose is clear: it is for verifying Snowflake connectivity. Since siblings are all data operations, the context implies this is a preflight check, but the description does not state when to prefer this over tools like execute_query or explain_query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.1.0
    • First observeddescribe_table
    • First observedexecute_query
    • First observedexplain_query
    • First observedget_primary_keys
    • First observedget_table_row_count
    • First observedget_table_sample
    • First observedlist_databases
    • First observedlist_schemas
    • First observedlist_tables
    • First observedlist_views
    • First observedtest_connection

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: listing vs describing vs sampling vs querying vs explaining. No overlapping tools that could cause confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get_*, list_*, describe_*, test_*, execute_*, explain_*). No mixed conventions or varied verb styles.

Tool Count5/5

11 tools is well within the ideal 3-15 range and maps neatly to the domain of Snowflake exploration and querying. Each tool earns its place without bloat.

Completeness5/5

Covers the full read-side workflow: connection testing, database/schema/table/view enumeration, schema inspection, row counts, primary keys, sampling, query execution, and query planning. No critical gaps for an exploration/query-focused server.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    Not graded
    maintenance
    Enables AI assistants to securely connect to Snowflake data warehouses and execute SQL queries through natural language interactions. Supports multiple authentication methods and provides formatted query results with built-in security controls.
    1
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform comprehensive Snowflake database operations including DDL, DML, and warehouse management. It allows users to query data, manage database objects, and configure permissions using natural language commands.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to securely access Snowflake data warehouses through natural language, executing SQL queries and retrieving insights with support for multiple authentication methods.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language querying and management of Snowflake databases, including SQL execution, schema exploration, and warehouse monitoring.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/faressoft/snowflake-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server