https://github.com/isaacwasserman/mcp-snowflake-server
https://github.com/isaacwasserman/mcp-snowflake-server
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/isaacwasserman/mcp-snowflake-server
- Owner: isaacwasserman
- Created: 2024-12-13T20:30:59.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-12-13T20:48:11.000Z (10 months ago)
- Last Synced: 2024-12-13T21:23:14.376Z (10 months ago)
- Language: Python
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-servers - mcp-snowflake-server - Snowflake MCP server with read/write operations and insight tracking via the MCP protocol. ([Read more](/details/mcp-snowflake-server.md)) `snowflake` `database` `mcp` `data-access` (Database & Messaging MCP Servers)
- awesome-mcp-list - isaacwasserman/mcp-snowflake-server - snowflake-server?style=social)](https://github.com/isaacwasserman/mcp-snowflake-server): Integrates with Snowflake with read/write operations and insight tracking. (Uncategorized / Uncategorized)
- mcp-index - Snowflake Server - Provides database interaction with Snowflake, enabling SQL queries and aggregating data insights. Exposes schema context as resources for enhanced data accessibility. (Cloud Services)
- awesome-mcp-zh - isaacwasserman/mcp-snowflake-server
- best-of-mcp-servers - GitHub - 41% open ยท โฑ๏ธ 05.08.2025) (Databases)
- awesome-mcp-servers - isaacwasserman/mcp-snowflake-server - Snowflake integration implementing read and (optional) write operations as well as insight tracking (Legend / ๐๏ธ <a name="databases"></a>Databases)
- awesome-mcp-servers - **mcp-snowflake-server** - Python-based (actively maintained) `database` `http` `git` `github` `python` `pip install git+https://github.com/isaacwasserman/mcp-snowflake-server` (Database)
- awesome-mcp-servers - **mcp-snowflake-server** - Python-based (actively maintained) `database` `http` `git` `github` `python` `pip install git+https://github.com/isaacwasserman/mcp-snowflake-server` (Database)
- Awesome-MCP-Servers-directory - Snowflake - Snowflake database integration with read/write capabilities and insight tracking (Databases)
- awesome-mcp-servers - Snowflake - Snowflake database integration with read/write capabilities and insight tracking (Community Servers)
- awesome-mcp-servers - Snowflake - Snowflake database integration with read/write capabilities and insight tracking. (๐๏ธ <a name="databases"></a>Databases)
- awesome-mcp-servers - Snowflake MCP Server - An MCP server enabling SQL queries, data insight aggregation, and schema interaction with Snowflake databases (Table of Contents / Databases)
- awesome-mcp-servers - Snowflake MCP Server - An MCP server enabling SQL queries, data insight aggregation, and schema interaction with Snowflake databases (Table of Contents / Databases)
- awesome-mcp-servers - isaacwasserman/mcp-snowflake-server - Snowflake integration implementing read and (optional) write operations as well as insight tracking (Legend / ๐๏ธ <a name="databases"></a>Databases)
- awesome-mcp - isaacwasserman/mcp-snowflake-server - Snowflake integration implementing read and (optional) write operations as well as insight tracking (MCP Servers / ๐๏ธ Databases)
README
[](https://mseep.ai/app/isaacwasserman-mcp-snowflake-server)
# 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](https://smithery.ai/server/mcp_snowflake_server):
```bash
npx -y @smithery/cli install mcp_snowflake_server --client claude
```---
### Installing via UVX
#### Traditional Configuration (Individual Parameters)
```json
"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)
```json
"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](https://claude.ai/download)
2. Install `uv`:
```bash
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
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
```4. [Optional] Modify `runtime_config.json` to set exclusion patterns for databases, schemas, or tables.
5. Test locally:
```bash
uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
```6. Add the server to your `claude_desktop_config.json`:
#### Traditional Configuration (Using Environment Variables)
```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}"]
]
}
}
```#### TOML Configuration (Recommended)
```json
"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}"]
]
}
}
```---
## Notes
- By default, **write operations are disabled**. Enable them explicitly with `--allow-write`.
- The server supports filtering out specific databases, schemas, or tables via exclusion patterns.
- The server exposes additional per-table context resources if prefetching is enabled.
- The `append_insight` tool updates the `memo://insights` resource dynamically.---
## License
MIT