Skip to main content
Activation required. AI access management must be enabled for your tenant before you can use it. To get started, contact the C1 support team for a walkthrough.
Early access. The Snowflake MCP servers are in early access while we gather feedback. If your Snowflake setup differs from what this guide describes, contact the C1 support team.
The Snowflake MCP servers let you govern access to your Snowflake account — running SQL statements, inspecting databases, schemas, tables, and warehouses, and using Cortex AI features — as tools your AI clients call through C1. C1 publishes several Snowflake servers, and they all connect the same way:
  • Snowflake (Data) — run SQL statements and inspect schemas, tables, databases, and warehouses.
  • Snowflake (Admin) — manage accounts, databases, and warehouses.
  • Snowflake Cortex — Cortex Analyst natural-language questions over governed data, and Cortex Search.
  • Snowflake Cortex Inference — the Cortex large language model completion API.
Set up the Snowflake side once, then register each server you want to use.

How C1 connects to Snowflake

C1 hosts the Snowflake MCP servers, so your users’ AI clients only ever see MCP tools — they never call Snowflake directly. When an AI client calls one of these tools, C1 makes the matching request to the Snowflake API using the credentials you configure here, then returns the result to the AI client. The credentials you set up below are what C1 uses to call Snowflake on your users’ behalf.

Before you begin

  • AI access management must be enabled for your tenant. See Enable AI access management.
  • You need the ACCOUNTADMIN role in Snowflake, or a role with the privileges to create the objects below. Only ACCOUNTADMIN has the CREATE INTEGRATION privilege by default. See CREATE SECURITY INTEGRATION in the Snowflake documentation.
  • You need your Snowflake account URL, including the scheme, such as https://myorg-myaccount.snowflakecomputing.com. Find it in Snowsight under your account details, or see Account identifiers.

Create a Snowflake role for C1

Snowflake OAuth has no per-API or per-resource scopes. There is no read scope or write scope to grant. What a tool can reach is decided entirely by the Snowflake role it runs as, and by what that role has been granted. This is true whichever authentication method you choose, so start here. Create the role and grant it only what your users need. A role needs USAGE on every container in the path plus the privilege on the object itself — USAGE alone does not grant access to data:
Tools need a warehouse to run queries, so USAGE on a warehouse is required for anything that executes SQL. To widen or narrow what tools can reach later, change the grants on this role rather than the server configuration. See Overview of Access Control.

Choose how users authenticate

Snowflake supports two methods, and the right one depends on a single question: do the people using the AI client have their own Snowflake accounts?
  • Per-user OAuth. Each person authorizes with their own Snowflake account, so every tool call runs under that user’s Snowflake identity and returns only what their role allows. Snowflake attributes each query to the individual. Choose this when your users are Snowflake users.
  • Programmatic access token. You issue one token for a service user, and every tool call reaches Snowflake as that single identity. Choose this when your users don’t have Snowflake accounts, or when you want all AI activity to run through one service identity.
For a deeper comparison of shared versus per-user credentials, see Configure authentication.
Create a custom OAuth client in Snowflake, then grant your role to the people who will use the server. Each user authorizes once from their AI client.

Create a Snowflake OAuth security integration

Run this in Snowsight as ACCOUNTADMIN.
1
Create the security integration. Set OAUTH_CLIENT_TYPE to 'CONFIDENTIAL', because C1 holds the client secret in a protected backend.
Set the redirect URI to exactly https://accounts.conductor.one/auth/callback. Snowflake requires a TLS-protected redirect URI, and the value must not include query parameters.
2
Retrieve the client ID and secret. Pass the integration name in uppercase.
The result is a JSON object. Copy the oauth_client_id and oauth_client_secret values — you enter both in C1. Snowflake also returns oauth_client_secret_2, a second secret you can use to rotate credentials without downtime. See SYSTEM$SHOW_OAUTH_CLIENT_SECRETS.
3
Grant the role to everyone who will use the server. A user can only authorize as a role they already hold, so this step is what makes per-user OAuth work.
Your Snowflake OAuth security integration is ready. Keep the client ID and secret for Register the server with OAuth.OAUTH_REFRESH_TOKEN_VALIDITY is measured in seconds. For a custom client, Snowflake accepts 86400 seconds (1 day) through 7776000 seconds (90 days), and defaults to 90 days. When the refresh token expires, users reconnect their Snowflake account.
Snowflake prevents the ACCOUNTADMIN, ORGADMIN, GLOBALORGADMIN, and SECURITYADMIN roles from authenticating over OAuth by default. Authorizing as one of those roles fails, which is a common first-time setup problem. Use a purpose-built role instead. To change this behavior, an account administrator sets the OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST account parameter to FALSE, which we do not recommend for an AI integration. See CREATE SECURITY INTEGRATION.

Register the server with OAuth

With your Snowflake role and OAuth security integration ready, register the server and provide your credentials.
1
Follow Register an MCP server and select the Snowflake server you want from the catalog, such as Snowflake (Data).
2
Enter your Snowflake account URL, such as https://myorg-myaccount.snowflakecomputing.com.
3
When you configure authentication, choose per-user OAuth and enter the security integration’s client ID and client secret.To pin every session to one Snowflake role, add the session:role:<ROLE_NAME> scope, replacing <ROLE_NAME> with an uppercase Snowflake role name. Leave Snowflake token type empty — it applies only to programmatic access tokens.
4
Save your changes. The first time a user calls a Snowflake tool from their AI client, they’re prompted to connect their Snowflake account.
Repeat for each Snowflake server you want to use. The same security integration and account URL apply to all of them.

How OAuth credentials are shared

Each user authorizes with their own Snowflake account, so tool calls run under that user’s Snowflake identity and the role they consented to. Snowflake attributes each query to the individual user, and C1 also attributes each call in the AI tool usage audit log.

Manage your OAuth credentials

  • Rotate the client secret. SYSTEM$SHOW_OAUTH_CLIENT_SECRETS returns two secrets, so you can move C1 to the second one and then rotate the first without interrupting users.
  • Change what tools can reach. Adjust the grants on c1_mcp_role. Tools return Snowflake’s own permission error when the role lacks a privilege.
  • Revoke access for one person. Revoke the role from that user with REVOKE ROLE c1_mcp_role FROM USER jsmith.
  • Revoke access for everyone. Disable the integration with ALTER SECURITY INTEGRATION c1_mcp_oauth SET ENABLED = FALSE.
  • Scope changes take effect on the next authorization. Existing connections keep the role they were granted until the user reconnects.

Discover and govern tools

After you register the server, C1 runs tool discovery against Snowflake. Discovered tools appear on the server’s Tools tab. Each tool starts as either Pending review or automatically Approved, depending on the option chosen when the server was set up or your tenant’s default tool settings in AI > MCP > Settings. See Require tool approval and Default tool classification. Before anyone can call a Snowflake tool, it must be approved, added to a toolset, and bound to an access profile. Continue to Govern tools and toolsets to set this up.
Tool discovery runs even if your credentials are incorrect, so seeing discovered tools doesn’t confirm that authentication is working. You confirm your Snowflake credentials when an approved user successfully calls a Snowflake tool from their AI client.