LABSCO SUMMARY
A thin, direct path from a question to a Snowflake result set.
There is no schema-discovery layer here and no allowlist of statements: what the assistant writes is what runs. That makes the database user you put in SNOWFLAKE_USER the real permission boundary, which is also the simplest one to reason about — grant read-only and the blast radius is a slow query.
What it is
A Python server that holds one Snowflake connection and executes the SQL an assistant sends it, returning results or the error.
What you get
- SQL executed against your Snowflake database and the results handed back
- The connection opened on the first query rather than at startup, so bad credentials surface with a clear error
- Connection state tracked, timeouts handled, and a dropped connection reconnected automatically
- Connections closed and resources released when the server stops
Requirements
A .env file with SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT, SNOWFLAKE_DATABASE and SNOWFLAKE_WAREHOUSE. The client launches server.py with your Python interpreter, both as absolute paths. Access is bounded by the Snowflake user you configure — the author's own note is that a read-only user is the right choice if you only need to read.
Setup effort
Build from source — git clone https://github.com/datawiz168/mcp-snowflake-service.git
USE CASES
Answering a data question without opening a SQL client
Ask in the thread, let the model write the SELECT, and read the rows back in the same place.
Giving an assistant read access without giving it your account
Point the connection at a Snowflake user that only has read permissions; the server cannot exceed what that user can do.
Iterating on a query that keeps failing
Errors come back as errors rather than empty results, so the next attempt is informed rather than blind.
Working across a long session
A connection that times out is re-established on the next query instead of ending the session.
BEFORE YOU INSTALL
What to know first
Requires
- Python 3.10+
- A Snowflake user, account, database and warehouse for the .env file
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/datawiz168/mcp-snowflake-service.git
cd mcp-snowflake-service
pip install -r requirements.txtCreate a .env file in that folder with SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT, SNOWFLAKE_DATABASE and SNOWFLAKE_WAREHOUSE
MCP Clients
Claude Desktop
{
"mcpServers": {
"snowflake": {
"command": "C:\\Users\\<YOUR_USERNAME>\\anaconda3\\python.exe",
"args": [
"<YOUR_PATH_TO_MCP_SNOWFLAKE>\\server.py"
]
}
}
}Both paths are yours: command is your Python interpreter (on macOS or Linux, for example /usr/bin/python3) and args is server.py in your clone — the clone folder is mcp-snowflake-service.
The configuration on this page does not set SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT, SNOWFLAKE_DATABASE and SNOWFLAKE_WAREHOUSE. The project reads all five from the .env file that the last installation step creates in the project root, your mcp-snowflake-service folder.