Snowflake
About
Snowflake database integration with read/write capabilities and insight tracking
Details
- Author
- isaacwasserman
- Repository
- isaacwasserman/mcp-snowflake-server
- GitHub stars
- 165
- Downloads
- 647
- License
- GNU General Public License v3.0
- Categories
- Database, Community, Other, Productivity, Design, Developer Tools, AI, Cloud Service, Project Management, Infrastructure
- Tags
- #data-science
Jump to
- Execute SELECT queries with the read_query tool
- Write operations (INSERT, UPDATE, DELETE) via write_query (requires --allow-write)
- Create tables with the create_table tool (requires --allow-write)
- List databases, schemas, and tables with schema discovery tools
- Describe table columns including names, types, nullability, defaults, and comments
- Append and aggregate data insights in a dynamic memo://insights resource
- Support for TOML-based multi-connection configuration
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
SnowflakeCommand (node, npx, python, etc.)uvxArguments-
Argument 1
--python=3.12 -
Argument 2
mcp_snowflake_server -
Argument 3
--account -
Argument 4
your_account -
Argument 5
--warehouse -
Argument 6
your_warehouse -
Argument 7
--user -
Argument 8
your_user -
Argument 9
--password -
Argument 10
your_password -
Argument 11
--role -
Argument 12
your_role -
Argument 13
--database -
Argument 14
your_database -
Argument 15
--schema -
Argument 16
your_schema
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
To install Snowflake Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp_snowflake_server --client claude
---
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12", // Optional: specify Python version <=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"
// Optionally: "--private_key_path", "your_private_key_absolute_path"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12",
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server",
"--connections-file", "/absolute/path/to/snowflake_connections.toml",
"--connection-name", "development"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
---
1. Install Claude AI Desktop App
2. Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
3. Create a .env file with your Snowflake credentials:
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
json"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12", // Optional
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
```
read_query
Execute `SELECT` queries to read data from the database. Input: query (string): The `SELECT` SQL query to execute. Returns: Query results as array of objects.
write_query
Execute `INSERT`, `UPDATE`, or `DELETE` queries. Input: query (string): The SQL modification query. Returns: Number of affected rows or confirmation.
create_table
Create new tables in the database. Input: query (string): `CREATE TABLE` SQL statement. Returns: Confirmation of table creation.
list_databases
List all databases in the Snowflake instance. Returns: Array of database names.
list_schemas
List all schemas within a specific database. Input: database (string): Name of the database. Returns: Array of schema names.
list_tables
List all tables within a specific database and schema. Input: database (string): Name of the database, schema (string): Name of the schema. Returns: Array of table metadata.
describe_table
View column information for a specific table. Input: table_name (string): Fully qualified table name (`database.schema.table`). Returns: Array of column definitions with names, types, nullability, defaults, and comments.
append_insight
Add new data insights to the memo resource. Input: insight (string): Data insight discovered from analysis. Returns: Confirmation of insight addition. Effect: Triggers update of `memo://insights` resource.
The server exposes the following tools:
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"snowflake": {
"cwd": null,
"env": {},
"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"
],
"shell": false,
"command": "uvx"
}
}
}
Linux
{
"cwd": null,
"env": [],
"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"
],
"shell": false,
"command": "uvx"
}
Macos
{
"cwd": null,
"env": [],
"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"
],
"shell": false,
"command": "uvx"
}
Windows
{
"cwd": null,
"env": [],
"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"
],
"shell": false,
"command": "uvx"
}
Snowflake MCP Server
---Overview
A Model Context Protocol (MCP) server implementation that provides database interaction with Snowflake. This server enables running SQL queries via tools and exposes data insights and schema context as resources.
---
Components
Resources
- memo://insights
A continuously updated memo aggregating discovered data insights.
Updated automatically when new insights are appended via the append_insight tool.
- context://table/{table_name}
(If prefetch enabled) Per-table schema summaries, including columns and comments, exposed as individual resources.
---
Tools
The server exposes the following tools:
Query Tools
- read_query
Execute SELECT queries to read data from the database.
Input:
- query (string): The SELECT SQL query to execute
Returns: Query results as array of objects
- write_query (enabled only with --allow-write)
Execute INSERT, UPDATE, or DELETE queries.
Input:
- query (string): The SQL modification query
Returns: Number of affected rows or confirmation
- create_table (enabled only with --allow-write)
Create new tables in the database.
Input:
- query (string): CREATE TABLE SQL statement
Returns: Confirmation of table creation
Schema Tools
- list_databases
List all databases in the Snowflake instance.
Returns: Array of database names
- list_schemas
List all schemas within a specific database.
Input:
- database (string): Name of the database
Returns: Array of schema names
- list_tables
List all tables within a specific database and schema.
Input:
- database (string): Name of the database
- schema (string): Name of the schema
Returns: Array of table metadata
- describe_table
View column information for a specific table.
Input:
- table_name (string): Fully qualified table name (database.schema.table)
Returns: Array of column definitions with names, types, nullability, defaults, and comments
Analysis Tools
- append_insight
Add new data insights to the memo resource.
Input:
- insight (string): Data insight discovered from analysis
Returns: Confirmation of insight addition
Effect: Triggers update of memo://insights resource
---
Usage with Claude Desktop
Installing via Smithery
To install Snowflake Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp_snowflake_server --client claude
---
Installing via UVX
Traditional Configuration (Individual Parameters)
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12", // Optional: specify Python version <=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"
// Optionally: "--private_key_path", "your_private_key_absolute_path"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
TOML Configuration (Recommended)
"mcpServers": {
"snowflake_production": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "production"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
},
"snowflake_staging": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "staging"
]
}
}
---
Installing Locally
1. Install Claude AI Desktop App
2. Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
3. Create a .env file with your Snowflake credentials:
```bash
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





