read_queryLABSCO SUMMARY
A warehouse you can ask about before you query it.
Schema browsing, the query itself and somewhere to keep the finding all live in one connection — and the destructive half stays absent until you start the server with the flag that adds it.
What it is
A server over a Snowflake connection. Reads are always available; the write and create-table tools exist only when the server was started with --allow-write. Alongside the tools it exposes per-table schema summaries and a running insights memo as MCP resources.
What you get
- read_query runs a SELECT and returns rows as objects
- Schema navigation without SQL: list_databases, list_schemas, list_tables, and describe_table for column names, types, nullability, defaults and comments
- append_insight adds a finding to a memo the server keeps updated at memo://insights, so what you learned outlives the session
- Per-table schema summaries are exposed as resources when prefetch is on, so context arrives without a round trip
- write_query and create_table cover INSERT, UPDATE, DELETE and CREATE TABLE — present only when the server was launched with
--allow-write
Requirements
A Snowflake account and connection details for it. The server is read-only unless you start it with --allow-write, which is the switch that turns on write_query and create_table.
Setup effort
Add the configuration to your client
USE CASES
Finding the table you need
Walk databases, schemas and tables, then read the columns with their types and comments.
Answering a data question without hand-writing SQL
The SELECT is generated and run in one step, and the rows come back as objects.
Keeping what you learned
Findings append to a memo the server exposes as a resource, so the next session starts from them.
Making a controlled change
Writes only exist when the server was launched with --allow-write, so a read-only deployment cannot be talked into one.
8 tools
Listed in project docs. Your client may show a different list.
write_querycreate_tablelist_databaseslist_schemaslist_tablesdescribe_tableappend_insightBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
uvx on PATH
Optional
- SNOWFLAKE_ACCOUNT in your environment
- SNOWFLAKE_USER in your environment
- SNOWFLAKE_PASSWORD in your environment
- SNOWFLAKE_PRIVATE_KEY_PATH in your environment
Where it runs
Both documented setups run the server on your machine.
INSTALLATION
Connect your client
MCP Clients
Claude Desktop — TOML connections file
{
"mcpServers": {
"snowflake_production": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file",
"<YOUR_PATH_TO_SNOWFLAKE_CONNECTIONS>",
"--connection-name",
"production"
]
}
}
}<YOUR_PATH_TO_SNOWFLAKE_CONNECTIONS> is the path to your Snowflake connections file, and production is a sample; yours is a connection name defined in that file. The connection details come from that file.
The SNOWFLAKE_* environment variables are for the project's local install, where they go in a .env file; neither block here uses them — each passes the connection as arguments.
Claude Desktop — separate connection settings
{
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--account",
"<YOUR_ACCOUNT>",
"--warehouse",
"<YOUR_WAREHOUSE>",
"--user",
"<YOUR_USER>",
"--password",
"<YOUR_PASSWORD>",
"--role",
"<YOUR_ROLE>",
"--database",
"<YOUR_DATABASE>",
"--schema",
"<YOUR_SCHEMA>"
]
}
}
}The SNOWFLAKE_* environment variables are for the project's local install, where they go in a .env file; neither block here uses them — each passes the connection as arguments.