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
}
}
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。