Snowflake to Claude
Claude connects to a Snowflake-managed MCP server, not straight to every table. Snowflake still controls identity, roles, warehouses, grants and query history.
The short answer
What Claude reads from Snowflake
- MCP server tools
- Whatever the server exposes: a Cortex Agent, semantic view, Cortex Search service, function or procedure. Each needs its own grant.
- Approved reporting tables
- Gold tables in one schema, read through a read-only role. Bronze and silver tables are for building models, not answering questions.
- Table and column comments
- Comments on approved tables and key columns, so Claude reads the definition where it queries.
- Semantic definitions
- A semantic layer or Snowflake semantic views when the same metric keeps getting calculated different ways.
How we set it up
- 1
Create one narrow role
We grant USAGE on the reporting warehouse, the database, the schema that holds the MCP server and the server itself, then only what its tools need. Never ACCOUNTADMIN.
- 2
Create the OAuth integration
We copy the callback URL Claude shows, use it as OAUTH_REDIRECT_URI, restrict the integration to the connector role, and retrieve the client ID and secret.
- 3
Add the connector
On Team and Enterprise plans an owner adds it under Organization settings, then each member connects and signs into Snowflake individually.
- 4
Set defaults and verify the session
We set each user’s default role and warehouse, reconnect, and run a context query plus one narrow business query before calling it done.
What breaks, and how we handle it
- Connected does not mean it can query
- OAuth can finish with no default warehouse set. Claude then reaches Snowflake with no compute and the MCP session fails to start. We set the warehouse and check the role can use it.
- The PUBLIC schema is in the path
- If the MCP server lives in PUBLIC, the role needs USAGE on that schema even when the business tables live elsewhere.
- Old tokens keep old settings
- Changing grants or defaults after connecting does not prove the next call uses them. We disconnect and reconnect after every change.
- session:role:all is not every role
- The session starts with the user’s DEFAULT_ROLE. We set DEFAULT_SECONDARY_ROLES to empty so the session does not pick up other privileges.
- Queries that run for two days
- Snowflake’s default statement timeout is 172,800 seconds. We give AI queries their own warehouse with a timeout and a resource monitor.
What we build on top of the Snowflake data
- Read-only role on approved gold tables, with secondary roles off
- Dedicated AI warehouse with a statement timeout and resource monitor
- Comments on approved tables and key columns
- Masking policies on sensitive columns
- Dev schema and git review path for model changes
Common questions
Why does Claude say it is connected to Snowflake but cannot run a query?
Connected only means OAuth finished. Check the full MCP URL, the default warehouse and role, USAGE on the database, schema and MCP server, and the underlying tool grants. Then disconnect and reconnect.
Where do the OAuth client ID and secret come from?
From the Snowflake OAuth security integration created for Claude, using SYSTEM$SHOW_OAUTH_CLIENT_SECRETS. They identify the connector, not the employee, who still signs in with their own Snowflake account.
What role should Claude use in Snowflake?
A custom read-only role with USAGE on one warehouse and the approved schema, plus SELECT on its tables. Not ACCOUNTADMIN, SYSADMIN or a role that can write.
How do I stop Claude queries running up the Snowflake bill?
Give them their own warehouse, set STATEMENT_TIMEOUT_IN_SECONDS on it, and attach a resource monitor that notifies and then suspends. Resource monitors do not track serverless and AI services, so use budgets for those.
Can analysts change the data model with Claude?
Yes, through git. They build in a dev schema with a dev role, open a pull request, and someone reviews it before a service user deploys it to production.
Want Snowflake data you can trust?
Bring the Snowflake reports that don't match. We'll trace them to the source and show you where to start.