Igloo MCP
Enables AI assistants to interact with Snowflake databases through SQL queries, table previews, and metadata operations. Features built-in safety checks that block destructive operations and intelligent error handling optimized for AI workflows.
README
Igloo MCP - Snowflake MCP Server for Agentic Native Workflows
Igloo MCP is a standalone MCP server for Snowflake operations, designed for agentic native workflows with AI assistants. Built from the ground up with SnowCLI integration for maximum simplicity and performance.
✨ Features
- 🛡️ SQL Safety: Blocks destructive operations (DELETE, DROP, TRUNCATE) with safe alternatives
- 🧠 Intelligent Errors: Compact mode (default) saves 70% tokens; verbose mode for debugging
- ⏱️ Agent-Controlled Timeouts: Configure query timeouts per-request (1-3600s)
- ✅ MCP Protocol Compliant: Standard exception-based error handling
- 🚀 Zero Vendoring: Imports from upstream, stays in sync
📖 See Release Notes for details.
Available MCP Tools
Igloo MCP Tools
execute_query- Execute SQL queries with safety checkspreview_table- Preview table contents with LIMIT supportbuild_catalog- Build comprehensive metadata catalog from Snowflake INFORMATION_SCHEMAget_catalog_summary- Get catalog overview with object counts and statisticsbuild_dependency_graph- Build dependency graph for data lineage analysistest_connection- Test Snowflake connection and profile validationhealth_check- Get system health status and configuration details
See MCP Documentation for details.
Installation
For End Users (Recommended)
Install from PyPI for stable releases:
uv pip install igloo-mcp
⚡ 5-Minute Quickstart
Get igloo-mcp running with Cursor in under 5 minutes!
Who this is for: Users new to Snowflake and MCP who want to get started quickly.
Prerequisites Check (30 seconds)
# Check Python version (need 3.12+)
python --version
# Check if Snowflake CLI is installed
snow --version
# If not installed, install it:
pip install snowflake-cli-labs
What you'll need:
- Snowflake account with username/password (or ask your admin)
- Cursor installed
- Your Snowflake account identifier (looks like:
mycompany-prod.us-east-1)
Step 1: Install igloo-mcp (1 minute)
# Install from PyPI
uv pip install igloo-mcp
# Verify installation
python -c "import igloo_mcp; print('igloo-mcp installed successfully')"
# Expected: igloo-mcp installed successfully
Note: igloo-mcp automatically installs
snowflake-cli-labsas a dependency
Step 2: Create Snowflake Profile (2 minutes)
# Create a profile with password authentication (easiest for getting started)
snow connection add \
--connection-name "quickstart" \
--account "<your-account>.<region>" \
--user "<your-username>" \
--password \
--warehouse "<your-warehouse>"
# Enter password when prompted
# Expected: "Connection 'quickstart' added successfully"
Finding your account identifier:
- Your Snowflake URL:
https://abc12345.us-east-1.snowflakecomputing.com - Your account identifier:
abc12345.us-east-1(remove.snowflakecomputing.com)
Finding your warehouse:
- Trial accounts: Usually
COMPUTE_WH(default warehouse) - Enterprise: Check Snowflake UI → Admin → Warehouses, or ask your admin
- Common names:
COMPUTE_WH,WH_DEV,ANALYTICS_WH
Don't have these? Ask your Snowflake admin for:
- Account identifier
- Username & password
- Warehouse name
Step 3: Configure Cursor MCP (1 minute)
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"igloo-mcp": {
"command": "igloo-mcp",
"args": [
"--profile",
"quickstart"
],
"env": {
"SNOWFLAKE_PROFILE": "quickstart"
}
}
}
}
Note: No
service_config.ymlneeded! igloo-mcp uses Snowflake CLI profiles directly.
Restart Cursor after configuring.
Step 4: Test Your Setup (30 seconds)
Verify Snowflake Connection
# Test your profile
snow sql -q "SELECT CURRENT_VERSION()" --connection quickstart
Verify MCP Server
# Start MCP server (should show help without errors)
igloo-mcp --profile quickstart --help
Step 5: Test It! (30 seconds)
In Cursor, try these prompts:
"Test my Snowflake connection"
Expected: ✅ Connection successful message
"Show me my Snowflake databases"
Expected: List of your databases
"What tables are in my database?"
Expected: List of tables (if you have access)
Success! 🎉
You've successfully:
- ✅ Installed igloo-mcp
- ✅ Configured Snowflake connection
- ✅ Connected Cursor to igloo-mcp
- ✅ Ran your first Snowflake queries via AI
Time taken: ~5 minutes
What's Next?
Explore MCP Tools
Try these prompts in Cursor:
"Build a catalog for MY_DATABASE"
→ Explores all tables, columns, views, functions, procedures, and metadata
→ Only includes user-defined functions (excludes built-in Snowflake functions)
"Show me lineage for USERS table"
→ Visualizes data dependencies
"Preview the CUSTOMERS table with 10 rows"
→ Shows sample data from tables
"Execute: SELECT COUNT(*) FROM orders WHERE created_at > CURRENT_DATE - 7"
→ Runs custom SQL queries
Improve Security
Replace password auth with key-pair authentication:
- Generate keys:
mkdir -p ~/.snowflake
openssl genrsa -out ~/.snowflake/key.pem 2048
openssl rsa -in ~/.snowflake/key.pem -pubout -out ~/.snowflake/key.pub
chmod 400 ~/.snowflake/key.pem
- Upload public key to Snowflake:
# Format key for Snowflake
cat ~/.snowflake/key.pub | grep -v "BEGIN\|END" | tr -d '\n'
# In Snowflake, run:
ALTER USER <your_username> SET RSA_PUBLIC_KEY='<paste_key_here>';
- Update your profile:
snow connection add \
--connection-name "quickstart" \
--account "mycompany-prod.us-east-1" \
--user "your-username" \
--private-key-file "~/.snowflake/key.pem" \
--warehouse "COMPUTE_WH"
Troubleshooting
"Profile not found"
Fix:
# List profiles
snow connection list
# Use exact name from list in your MCP config
"Connection failed"
Fix:
- Verify account format:
org-account.region(nothttps://...) - Check username/password are correct
- Ensure warehouse exists and you have access
- Try:
snow sql -q "SELECT 1" --connection quickstart
"MCP tools not showing up"
Fix:
- Verify igloo-mcp is installed:
which igloo-mcp - Check MCP config JSON syntax is valid
- Restart Cursor completely
- Check Cursor logs for errors
"Permission denied"
Fix:
- Ensure you have
USAGEon warehouse - Check database/schema access:
SHOW GRANTS TO USER <your_username> - Contact your Snowflake admin for permissions
Still stuck?
- 💬 GitHub Discussions - Community help
- 🐛 GitHub Issues - Report bugs
- 📖 Full Documentation - Comprehensive guides
Complete Setup Guide
For Cursor Users
# 1. Set up your Snowflake profile
snow connection add --connection-name "my-profile" \
--account "your-account.region" --user "your-username" \
--private-key-file "/path/to/key.p8" --database "DB" --warehouse "WH"
# 2. Configure Cursor MCP
# Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"igloo-mcp": {
"command": "igloo-mcp",
"args": [
"--profile",
"my-profile"
],
"env": {
"SNOWFLAKE_PROFILE": "my-profile"
}
}
}
}
# 3. Restart Cursor and test
# Ask: "Test my Snowflake connection"
See Getting Started Guide for detailed setup instructions.
MCP Server (MCP-Only Interface)
| Task | Command | Notes |
|---|---|---|
| Start MCP server | igloo-mcp |
For AI assistant integration |
| Start with profile | igloo-mcp --profile PROF |
Specify profile explicitly |
| Configure | igloo-mcp --configure |
Interactive setup |
🐻❄️ MCP-Only Architecture Igloo MCP is MCP-only. All functionality is available through MCP tools.
Profile Selection Options:
- Command flag:
igloo-mcp --profile PROFILE_NAME(explicit) - Environment variable:
export SNOWFLAKE_PROFILE=PROFILE_NAME(session) - Default profile: Set with
snow connection set-default PROFILE_NAME(implicit)
Python API
from igloo_mcp import QueryService, CatalogService
# Execute query
query_service = QueryService(profile="my-profile")
result = query_service.execute("SELECT * FROM users LIMIT 10")
# Build catalog
catalog_service = CatalogService(profile="my-profile")
catalog = catalog_service.build_catalog(database="MY_DB")
Documentation
- Getting Started Guide - Recommended for all users
- MCP Server User Guide - Advanced MCP configuration
- Architecture Overview
- API Reference - All available MCP tools
- Migration Guide (CLI to MCP)
- Contributing Guide
Examples
Query Execution via MCP
# AI assistant sends query via MCP
{
"tool": "execute_query",
"arguments": {
"statement": "SELECT COUNT(*) FROM users WHERE created_at > CURRENT_DATE - 30",
"timeout_seconds": 60
}
}
Data Catalog Building
# Build comprehensive metadata catalog
{
"tool": "build_catalog",
"arguments": {
"database": "MY_DATABASE",
"output_dir": "./catalog",
"account": false,
"format": "json"
}
}
# Returns: databases, schemas, tables, views, functions, procedures, columns, etc.
# Note: Only includes user-defined functions (excludes built-in Snowflake functions)
Data Lineage
# Query lineage for impact analysis
{
"tool": "query_lineage",
"arguments": {
"object_name": "MY_TABLE",
"direction": "both",
"depth": 3
}
}
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.