
Snowflake Labs MCP, the deprecated open-source Snowflake server
Deprecated Snowflake server for Cortex and SQL. Snowflake says to move to its managed MCP server.
This server is deprecated and no longer maintained, so use the Snowflake-managed MCP server instead. It let Claude, Cursor and other assistants query Cortex Analyst and Cortex Search, run SQL and manage Snowflake objects. If you still run it, the sample config lets the assistant write and drop data, so limit it before your next session.
Good for
- Teams still running it who need to plan a move to the managed server
- Admins who need to lock down its SQL tool until they move
- Data teams who relied on its per-statement SQL controls
Works in
4 supported · 1 with issues · 7 should work
Tap an app to see how to set it up and any known problems.
The README shows a config entry for it.
Known problems
- Closed
Fails with an SSL error on a corporate network behind Zscaler
Reported Jan 2026 · GitHub
The README shows how to add it under Cursor settings. GitHub
The README links a Snowflake guide for Copilot agent mode. GitHub
The README shows an entry for the Codex config file. GitHub
Not in the README, and two open reports affect long sessions and startup.
Known problems
- Open
Server crashes on startup with a fakeredis import error after sign-in
Workaround: Add --with fakeredis<2.26 to the uvx args in ~/.claude.json, then reconnect with /mcp.
Since Apr 2026 · GitHub
- Open
All tool calls fail after the login token expires until you restart
Workaround: Restart the MCP server to get a fresh session.
Since Mar 2026 · GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install OSS Snowflake MCP
Claude Code
- 1
Copy this prompt.
Add the OSS Snowflake MCP server to Claude Code. Run this command: claude mcp add mcp-server-snowflake -- uvx snowflake-labs-mcp --service-config-file <path_to_file>/tools_config.yaml --connection-name default Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv, Python 3.11+, tools_config.yaml, Snowflake connection.
Read-only mode: Want it to only read? In tools_config.yaml, set every sql_statement_permissions entry to False except Select, Describe and Use, and set object_manager to False. The sample config allows nearly everything, including Drop, Create and Delete.
This server is deprecated and no longer maintained; its README tells all users to move to the Snowflake-managed MCP server (https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-mcp), which runs in your Snowflake account, signs in with Snowflake OAuth and applies role-based access control per tool. Prefer that one. If you still want this server: it needs uv and Python 3.11 or newer, a tools_config.yaml that lists the Cortex services and tool groups to expose (see the README), and a connection named default in your Snowflake connections.toml. Replace <path_to_file> with the folder holding tools_config.yaml. Instead of a connection name you can pass connection flags or SNOWFLAKE_* environment variables. The server uses your Snowflake role's permissions. Tool groups are off until you set them to True in tools_config.yaml.
Built from the package data we hold. Not yet tested by us.
Tools
Runs a SQL statement in Snowflake
Runs SQL generated by your assistant against your Snowflake account. Which statement types are allowed is set in the server's configuration file, and it must be turned on there. Use it for ad hoc queries and approved changes.
Try: “Run a query that counts orders by month in SALES.PUBLIC.ORDERS”
Delete ·
run_snowflake_queryAsks questions about structured data through Cortex Analyst
Sends a natural-language question to a Cortex Analyst service built on a semantic view or semantic YAML file. It appears only when analyst services are configured. Use it for questions about your tables.
Try: “What was revenue by region last quarter?”
Network ·
cortex_analystSearches unstructured data through Cortex Search
Queries a Cortex Search service you configured, the kind used for retrieval over documents and text. It appears only when search services are configured. Use it to find passages in your own data.
Try: “Search our support tickets for refund complaints”
Network ·
cortex_searchHands a question to a Cortex Agent
Sends a query to a Cortex Agent you set up in Snowflake, which can work across structured and unstructured data. It appears only when agent services are configured.
Try: “Ask the sales agent which accounts are at risk”
Network ·
cortex_agentLists semantic views in an account, database or schema
Lists the Snowflake semantic views available at the scope you choose. Use it to find what data models exist.
Try: “List the semantic views in the SALES database”
Network ·
list_semantic_viewsDescribes one semantic view
Returns the description of a semantic view. Use it to understand what a view contains before querying it.
Try: “Describe the semantic view REVENUE_VIEW”
Network ·
describe_semantic_viewLists semantic dimensions
Shows the semantic dimensions in an account, database or schema. Use it to see what you can group or filter by.
Try: “Show the dimensions in the SALES schema”
Network ·
show_semantic_dimensionsLists semantic metrics
Shows the semantic metrics in an account, database or schema. Use it to see which measures you can ask for.
Try: “Show the metrics in the SALES schema”
Network ·
show_semantic_metricsGets the definition of a semantic view
Returns the DDL statement for a semantic view. Use it to see how a view is built or to recreate it elsewhere.
Try: “Get the DDL for REVENUE_VIEW”
Network ·
get_semantic_view_ddlQueries a semantic view directly
Runs a query against a Snowflake semantic view for the metrics and dimensions you choose. Use it to get answers from a governed data model.
Try: “Query REVENUE_VIEW for revenue by month”
Network ·
query_semantic_viewLists Snowflake objects of a given type
Lists objects such as databases, schemas, tables, views, warehouses, roles, stages and users. It must be enabled in the configuration. Use it to see what exists.
Try: “List the tables in the ANALYTICS schema”
Network ·
list_objectsDescribes one Snowflake object
Returns details of an object such as a table or warehouse. Use it to inspect columns or settings.
Try: “Describe the table ORDERS”
Network ·
describe_objectCreates a Snowflake object
Creates an object of a supported type, such as a database, schema, table or warehouse. It is governed by the create permission in the server's configuration. Use it for basic setup.
Try: “Create a schema named STAGING in the SALES database”
Write ·
create_objectCreates or updates a Snowflake object
Creates an object, or alters it if it already exists. It is governed by the create permission in the configuration. Use it to bring an object to a desired state.
Try: “Create or alter the view DAILY_SALES”
Write ·
create_or_alter_objectDeletes a Snowflake object
Drops an object of a supported type. It is governed by the drop permission in the server's configuration. Use it with care because it removes the object.
Try: “Drop the table TEMP_ORDERS”
Delete ·
drop_objectUsed by the assistant behind the scenes
Drafts a query for a semantic view
Helps the assistant write a query against a semantic view. Use it to build the query before running it.
Try: “Write a query for monthly revenue by region from REVENUE_VIEW”
Read ·
write_semantic_view_query_tool
Read from the source code
Pros and cons
Good
- Covers Cortex Analyst, Cortex Search, Cortex Agent and SQL in one local server.
- You choose which tools exist through a YAML config file.
- Respects the Snowflake role you connect with.
- Runs with any sign-in the Snowflake Python Connector supports.
Watch out
- Deprecated and no longer maintained.
- Sample config allows writes and drops.
- Tool calls fail after the login token expires until you restart.
- Cannot turn off secondary roles.
- Dependency caps block known security fixes.
- No prebuilt Docker image.
Permissions
high risk · 6 things to watch
High risk
The SQL tool can create, change and drop data when you use the sample config. Use a role that only has SELECT and set every write statement type to False in the config.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
Sample config allows writes and drops
The template turns on Create, Drop, Delete, Update, Insert, Merge and TruncateTable. Set them to False and connect with a role that only has SELECT. github.com
No longer maintained
Snowflake deprecated it, so more security fixes are unlikely and capped dependencies block known ones. Move to the managed server. github.com
Semantic view tools skip the statement filter
An open report says these tools bypass the statement permission check. Keep the role SELECT-only so the database refuses writes. github.com
Secondary roles widen what it can see
With DEFAULT_SECONDARY_ROLES set to ALL the session gets all your roles, even if you pass one. Use a dedicated user with no secondary roles. github.com
Old connector range allows a TLS bug
The allowed connector versions include ones hit by CVE-2026-15925. Upgrade snowflake-connector-python to 3.18.1 or later in your environment. github.com
Web mode listens on all interfaces
In sse or streamable-http mode it binds to every network address by default. Set SNOWFLAKE_MCP_HOST to 127.0.0.1 for local use. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | In tools_config.yaml set every write type under sql_statement_permissions (Insert, Update, Delete, Merge, Create, Alter, Drop, TruncateTable, Copy) to False, keep Unknown False, and connect with a role that only has SELECT grants. |
|---|---|
| Sign-in and keys | Uses the Snowflake Python Connector: password, programmatic access token, key pair, OAuth or SSO, set by flags, environment variables or connections.toml. |
Alternatives
Use the Snowflake-managed MCP server. It is the supported option, and its SQL tool is read-only by default.
| Server | Official | Runs | Sign-in | Can change things | GitHub stars |
|---|---|---|---|---|---|
| Snowflake-managed MCP | Official | Hosted | Account | – | – |
| Snowflake Labs MCP (this page)This page | Official | Local | Password or key | Yes | 303 |
What people say
People used it for natural-language SQL on Snowflake, and now mostly talk about moving off it.
What people like
- Some users relied on it for plain text-to-SQL with control over each statement type.
Common complaints
- Snowflake no longer maintains it and has told users to move.
- Long sessions break after the login token expires until you restart.
- There is no way to turn off secondary roles, so the assistant can see everything you can.
- Version caps on dependencies block known security fixes.
- Passing a private key as text does not work, only a key file path.
In their words
“This project is deprecated and no longer maintained. Please migrate to the official Snowflake MCP Server.”Snowflake-LabsGitHub issueDec 2025
“FYI - We are encouraging our users to try Snowflake-managed MCP server as it is first class to Snowflake.”sfc-gh-twhiteGitHub issueDec 2025
“I've been using this labs MCP for generic text-to-sql execution. Looks like the managed MCP server now has support for it. Hopefully support is added for granular control like with the different statements.”ainamdar-agGitHub issueFeb 2026
“If the user has DEFAULT_SECONDARY_ROLES = 'ALL', the LLM "sees" every database and schema the human user has access to.”GianniDmc
Questions
Is the Snowflake Labs MCP server deprecated?
Yes. The README says it is deprecated and no longer maintained, and asks all users to move to the Snowflake-managed MCP server. The last release in May 2026 only began the deprecation and updated dependencies.
How do I move to the managed MCP server?
Create the server in your Snowflake account with CREATE MCP SERVER, list the tools you want, then point your client at its URL and sign in with Snowflake OAuth. Remove the old entry from your client config afterwards. Steps are in the Snowflake-managed MCP server page and Snowflake's docs.
Is the managed server a full replacement?
Mostly. It covers Cortex Agent, Search, Analyst, SQL and custom tools, and its SQL tool is read-only by default. Users noted it first lacked per-statement-type control, so check that it meets your needs.
Is this an official Snowflake server?
It sits in Snowflake's own GitHub org and is written by Snowflake staff. Snowflake now calls it a community server and no longer supports it.
Can the SQL tool write or delete data?
Yes. The sample config allows inserts, updates, deletes, drops and creates. Set those to False and connect with a role that only has SELECT to keep it read-only.
Is it safe to keep running?
Only with limits. It gets no new fixes, so use a SELECT-only role, turn off write statement types and upgrade the Snowflake connector in your environment.
How do I sign in to Snowflake?
Use any method the Snowflake Python Connector supports. That means password, programmatic access token, key pair, OAuth or SSO.
Why do I get permission errors with a programmatic access token?
Tokens ignore secondary roles. Create the token for one role that can reach every service and object you configured.
Why do tool calls fail after a few hours?
The server signs in once at startup and never refreshes, so calls fail when the token expires. Restart the server. The managed server avoids this.
Why does it crash on startup with a fakeredis error?
A newer fakeredis release broke a dependency. Add --with fakeredis<2.26 to the uvx arguments in your client config.
Examples
Ask a Cortex Analyst service a business question in plain English.
Using the revenue analyst service, what were total sales by region last quarter?
Search documents indexed by a Cortex Search service.
Search the support docs service for articles about password reset errors and summarize the top three.
Run read-only SQL against a table.
Show me the 10 most recent rows in ANALYTICS.PUBLIC.ORDERS.
Explore and query a Semantic View.
List the semantic views in SALES_DB and query the dimensions and metrics in the orders view.
Information
updated Nov 2, 2026
- Publisher
- Snowflake (official)
- Package
snowflake-labs-mcp- Registry
- PyPI
- Transport
- stdio, SSE, Streamable HTTP
- Auth
- token in env
- Version
- 1.3.5
- License
- Apache-2.0
- Last commit
- May 15, 2026
- Open issues
- 22
- Listed in
- Official MCP registry
Other Snowflake MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 13Hide
- [DEPRECATED] Snowflake Cortex AI Model Context Protocol (MCP) Server · github.com
- Snowflake-managed MCP server · docs.snowflake.com
- Snowflake-managed MCP server release note · docs.snowflake.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com