snowflake-analytics-mcp-server
An MCP server for Snowflake that enables table discovery, metadata inspection, and SQL query execution through natural language, supporting password, key-pair, and OAuth authentication.
README
snowflake-analytics-mcp-server
A Model Context Protocol server for Snowflake, built for the Analytics Model platform. It connects to Snowflake via the official snowflake-sdk driver (pure Node — no client binary needed, unlike the Oracle server) and exposes table-discovery and query tools over stdio. Runnable directly with npx.
The list_tables tool returns the platform's exact table-discovery envelope, so it drops straight into the same fetchMcpTables flow as the Clio, Dropbox and Shopify servers.
Install
npm install -g snowflake-analytics-mcp-server
# or run directly (no install):
npx -y snowflake-analytics-mcp-server
Configuration
All credentials come from environment variables.
| Variable | Required | Default | Description |
|---|---|---|---|
SNOWFLAKE_ACCOUNT |
✅ | — | Account identifier, e.g. xy12345.eu-central-1 or orgname-account_name |
SNOWFLAKE_USERNAME |
✅ | — | Login name |
SNOWFLAKE_PASSWORD |
✅ (password auth) | — | Password (required unless using key-pair/OAuth) |
SNOWFLAKE_WAREHOUSE |
— | — | Virtual warehouse to use |
SNOWFLAKE_DATABASE |
recommended | — | Default database (used by list_tables when no arg is given) |
SNOWFLAKE_SCHEMA |
recommended | — | Default schema |
SNOWFLAKE_ROLE |
— | — | Role to assume |
SNOWFLAKE_AUTHENTICATOR |
— | SNOWFLAKE |
SNOWFLAKE (password), SNOWFLAKE_JWT (key-pair), OAUTH |
SNOWFLAKE_PRIVATE_KEY |
key-pair | — | PEM private key contents |
SNOWFLAKE_PRIVATE_KEY_PATH |
key-pair | — | Path to a PEM private key file (alternative to above) |
SNOWFLAKE_PRIVATE_KEY_PASSPHRASE |
— | — | Passphrase, if the key is encrypted |
SNOWFLAKE_TOKEN |
OAuth | — | OAuth access token (with SNOWFLAKE_AUTHENTICATOR=OAUTH) |
SNOWFLAKE_READ_ONLY |
— | true |
Blocks writes/DDL in execute_query. Set false to allow them |
SNOWFLAKE_ROW_LIMIT |
— | 1000 |
Hard cap on returned rows |
QUERY_TIMEOUT_MS |
— | 60000 |
Client-side query timeout |
Account identifier tip
Use hyphens, not underscores, in the account identifier if a client has trouble connecting (e.g. orgname-account-name).
Claude Desktop config
Add to claude_desktop_config.json:
{
"mcpServers": {
"snowflake": {
"command": "npx",
"args": ["-y", "snowflake-analytics-mcp-server"],
"env": {
"SNOWFLAKE_ACCOUNT": "xy12345.eu-central-1",
"SNOWFLAKE_USERNAME": "ANALYTICS_USER",
"SNOWFLAKE_PASSWORD": "••••••••",
"SNOWFLAKE_WAREHOUSE": "COMPUTE_WH",
"SNOWFLAKE_DATABASE": "ANALYTICS_DB",
"SNOWFLAKE_SCHEMA": "PUBLIC",
"SNOWFLAKE_ROLE": "ANALYST"
}
}
}
}
Key-pair auth example
"env": {
"SNOWFLAKE_ACCOUNT": "xy12345.eu-central-1",
"SNOWFLAKE_USERNAME": "ANALYTICS_USER",
"SNOWFLAKE_AUTHENTICATOR": "SNOWFLAKE_JWT",
"SNOWFLAKE_PRIVATE_KEY_PATH": "/path/to/rsa_key.p8",
"SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "••••••••",
"SNOWFLAKE_DATABASE": "ANALYTICS_DB",
"SNOWFLAKE_SCHEMA": "PUBLIC"
}
Tools
| Tool | Args | Description |
|---|---|---|
list_tables |
database?, schema?, include_views? |
Platform contract. Returns { table_name }[] in the double-wrapped envelope for fetchMcpTables |
test_connection |
— | Returns version, account, user, role, warehouse, database, schema |
list_databases |
— | Databases visible to the current role |
list_schemas |
database? |
Schemas in a database |
list_warehouses |
— | Warehouses with size/state |
describe_table |
table, database?, schema? |
Columns, types, nullability, defaults |
get_table_sample |
table, database?, schema?, limit? |
Preview rows from a table |
execute_query |
query |
Run SQL. Read-only unless SNOWFLAKE_READ_ONLY=false |
Platform integration note
list_tables matches the confirmed envelope used by the Shopify/Clio servers:
{
"is_success": true,
"status_code": 200,
"data": "[{\"table_name\":\"ORDERS\"},{\"table_name\":\"CUSTOMERS\"}]", // double-stringified
"message": "Found 2 table(s).",
"requestedPayload": { "database": "ANALYTICS_DB", "schema": "PUBLIC", "include_views": true }
}
Because Snowflake exposes arbitrary user tables (unlike Clio's fixed resource categories, which each had a list_<resource> tool), there is no per-table tool. When a user selects a table in the platform, the backend should fetch its rows via get_table_sample (preview) or execute_query (SELECT * FROM <table>), rather than calling a tool named after the table. Confirm this mapping with the backend before wiring the row-fetch step.
License
MIT
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.
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.
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.
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.
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.
E2B
Using MCP to run code via e2b.