This tutorial was written for local testing and experimentation of Snowflake MCP with Claude using the latest Snowflake-hosted MCP service.
Snowflake Native MCP Service – April 2026
When you use Claude with Snowflake MCP:
- You authenticate via OAuth in your browser (your IP talks to Snowflake)
- Anthropic’s servers exchange the auth code for a token (Anthropic’s IP talks to Snowflake)
- Anthropic’s servers execute SQL via the MCP server using that token (Anthropic’s IP talks to Snowflake)
- Results flow back through Anthropic to your browser
Important: Your data passes through Anthropic’s infrastructure. Scope the role’s access accordingly.
Create Snowflake Hosted MCP Server
In this case, we named our MCP “CLAUDE_MCP_SERVER”
CREATE MCP SERVER <your_database>.<your_schema>.CLAUDE_MCP_SERVER
FROM SPECIFICATION $$
tools:
- title: "SQL Execution Tool"
name: "sql_exec_tool"
type: "SYSTEM_EXECUTE_SQL"
description: "A tool to execute SQL queries against the connected Snowflake database."
$$; What tools are supported?
The supported tool types for MCP servers are:
| Type | Description |
|---|---|
CORTEX_SEARCH_SERVICE_QUERY | Cortex Search Service tool |
CORTEX_ANALYST_MESSAGE | Cortex Analyst tool (requires a semantic view) |
SYSTEM_EXECUTE_SQL | SQL execution tool |
CORTEX_AGENT_RUN | Cortex Agent tool |
GENERIC | Custom tool for UDFs and stored procedures |
Grant access to the MCP server:
GRANT USAGE ON MCP SERVER <your_database>.<your_schema>.CLAUDE_MCP_SERVER TO ROLE CLAUDE; Create a Network Rule for Claude to Snowflake Access
-- Create a network rule for Anthropic's IP range
CREATE NETWORK RULE <your_database>.<your_schema>.ANTHROPIC_CLAUDE
MODE = INGRESS
TYPE = IPV4
VALUE_LIST = ('160.79.106.0/24');
-- Add the rule to your existing network policy
ALTER NETWORK POLICY <your_network_policy>
ADD ALLOWED_NETWORK_RULE_LIST = (<your_database>.<your_schema>) Snowflake now natively supports MCP without needing to install the server locally. To connect to Snowflake MCP from Claude, simply open Claude, open Connectors, and locate the web Snowflake connector.
To acquire your Oauth secret and token requries administrative permissions into your Snowflake org. You need to set up a Snowflake Oauth for MCP to work with Claude first.
- Acquire and enter your Snowflake server Oauth URL in the following format:
https://<account>.snowflakecomputing.com/api/v2/databases/<db>/schemas/<schema>/mcp-servers/<name>
https://<org-account>.snowflakecomputing.com/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<mcp_name> - Paste the OAuth Client ID
- Paste the OAuth Cllient Secrete
IMPORTANT SECURITY NOTE
For what ever reason, Anthropic did not add a ROLE parameter to specify the scope you use for access. This presents a problem for organizations that intend to restrict and control the scope of access for Claude with RBS. Someone with elevated permissions can technically allow Claude to access data that is un-intentional. This is the opened case with Anthropic:
Install Snowflake MCP Server Locally
The following instructions are not
Test UVX with official Snowflake MCP server for self-hosted. To install and run your Snowflake MCP server locally, you will want to configure Python for MCP. These templates were built on a Windows 11 machine for testing and experimentation purposes.
uvx --from "git+https://github.com/Snowflake-Labs/mcp" mcp-server-snowflake --help Claude Desktop Configuration Template for Self Hosted MCP
Create/update your Claude Desktop config at: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mcp-server-snowflake": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Snowflake-Labs/mcp",
"mcp-server-snowflake",
"--service-config-file",
"C:/path/to/your/snowflake-config.yaml"
],
"env": {
"SNOWFLAKE_PAT": "your_token_here",
"SNOWFLAKE_ACCOUNT": "your_account_here",
"SNOWFLAKE_USER": "your_username_here"
}
}
}
} Securing your credentials: If you intend to run this on your computer beyond testing and experimentation, we recommend installing environment variables. If your Snowflake user has elevated permissions, including but not limited to AccountAdmin or SystemAdmin roles, do not store your credentials locally in your config.json
Setting Environment Variables:
# Set permanent environment variables
[Environment]::SetEnvironmentVariable("SNOWFLAKE_PAT", "your_token", "User")
[Environment]::SetEnvironmentVariable("SNOWFLAKE_ACCOUNT", "your_account", "User")
[Environment]::SetEnvironmentVariable("SNOWFLAKE_USER", "your_username", "User") Troubleshooting Commands
Check Python Environment
# Check all Python installations
where python
Get-Command python -All
# Check installed packages
pip list
# Check UV installation
uv pip list Test MCP Server Connection
# Test server manually (without Claude)
uvx --from "git+https://github.com/Snowflake-Labs/m