What It Provides
An admin configures which of the following tool types are exposed when they create the MCP server object in Snowflake (up to 50 tools per server):| Tool Type | What It Does |
|---|---|
| Cortex Search | Runs unstructured search queries against a Cortex Search Service. |
| Cortex Analyst | Turns natural language questions into SQL using a Cortex Analyst semantic view. |
| SQL Execution | Runs SQL directly against Snowflake. Read-only by default. |
| Cortex Agent | Invokes a Cortex Agent and returns its full run, including intermediate steps. |
| Custom Tools | Wraps an existing user-defined function or stored procedure as a callable tool. |
Prerequisites
- A paid Snowflake account. Free and trial accounts don’t have the entitlements needed to create or connect to MCP server objects.
- A Snowflake user with enough privileges to create a warehouse, database, schema, role, and the MCP server object itself (typically
ACCOUNTADMIN, or a role explicitly granted those privileges).
Setting Up the MCP Server in Snowflake
If your organization already has an MCP server object configured in Snowflake, skip to Connecting to Airia. Otherwise, a Snowflake admin needs to create one first.Create a role and grant it access
USAGE on a Cortex Search Service or SELECT on the tables a SQL tool should query.Create the MCP server object
tools for any of the tool types above, then grant USAGE on the finished server to every role that should be able to use it.Connecting to Airia
Snowflake supports two authentication options: a Programmatic Access Token, or an admin-configured OAuth integration. Both give an agent the same access, so pick whichever fits how your organization wants to manage credentials. See Tenant vs. Personal Level App Credentials if you’re not sure which one you need.Option A: Programmatic access token
Option B: OAuth integration
An OAuth integration lets everyone in your organization sign in with their own Snowflake user, while an admin only has to set up the connection once. This requiresACCOUNTADMIN (or an equivalent role) to create a security integration.
Connection Details
Whichever option you use, adding Snowflake to a Gateway or Deployment asks for four fields:| Field | What To Enter |
|---|---|
| Account URL | Your Snowflake account URL, in the form myorg-myaccount.snowflakecomputing.com. |
| Database | The database where the MCP server object was created, for example MCP_DB. |
| Schema | The schema where the MCP server object was created, for example PUBLIC. |
| MCP Server Name | The name of the MCP server object itself, for example MCP_DEMO_SERVER. |
Limitations
DEFAULT_ROLEandDEFAULT_WAREHOUSEmust be set on the connecting user, this applies to both authentication options but OAuth sessions fail outright without them.- No support for MCP resources, prompts, roots, notifications, or sampling.
- Responses aren’t streamed.
- A single server can expose at most 50 tools.
- SQL and custom tool responses are capped at 250 KB. Cortex Agent responses include every intermediate step and can be considerably larger.
Troubleshooting
The connection is rejected no matter what you enter
The connection is rejected no matter what you enter
Confirm the Snowflake account is on a paid plan. Free and trial accounts can’t create or connect to MCP server objects, and this produces the same rejection as a misconfigured connection.
OAuth succeeds but the connection still fails
OAuth succeeds but the connection still fails
If your Snowflake account has a network policy in place (check with
SHOW NETWORK POLICIES IN ACCOUNT), Airia’s egress IPs need to be added to the allowed list. Contact Airia support for the current IP range. This applies to both authentication options, but is easy to miss when OAuth sign-in itself appears to succeed.OAuth fails with an invalid_client error
OAuth fails with an invalid_client error
This almost always means the Client ID or Client Secret saved in Airia no longer matches your security integration, for example after it was recreated or the secret was rotated. Re-run
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<integration_name>') in Snowflake and update the credentials in Airia.The connection works, but tools fail or return no data
The connection works, but tools fail or return no data
Snowflake enforces access control at both the server and tool level, so a successful connection doesn’t automatically grant access to everything a tool touches. Check that the connected role has been separately granted whatever each tool needs, such as
USAGE on a Cortex Search Service or SELECT on the underlying tables.