mcp server · snowflake

Snowflake MCP server with query cost preview.

Route Claude, Cursor, and Codex to Snowflake through wmcp.sh. Every query gets an EXPLAIN-driven cost preview before it runs — bytes scanned, partitions hit, warehouse credit estimate — so an agent's accidental SELECT * doesn't surprise you on the next invoice. wmcp.sh is not affiliated with Snowflake Inc.

Connect at https://wmcp.sh/mcp/snowflake · key-pair + PAT auth · cost preview default-on

Why route through wmcp.sh instead of running the official server.

Snowflake bills by warehouse-credit consumption. A single naïve query on a multi-terabyte table can chew through hours of warehouse time and tens to hundreds of dollars in credits. That's a known footgun for human operators — it gets worse the moment you put a tool-calling agent on the other side.

The community Snowflake-Labs/mcp project is now marked deprecated and directs users to the officially-supported Snowflake MCP Server. Both expose query and warehouse tools; neither, by default, surfaces cost estimates to the calling agent.

wmcp.sh adds a pre-execution cost preview: every query goes through EXPLAIN first, the result (bytes-scanned, partitions, credit estimate) is returned to the agent, and queries above a configurable threshold can be auto-blocked. Plus encrypted vault for key-pair / PAT credentials, role-based access, and per-call audit logs.

Snowflake tools, MCP-shaped.

Nine tools designed for read-heavy analytical agents.

Python — Claude with cost-aware Snowflake access.

# pip install anthropic mcp
import os, asyncio
from anthropic import Anthropic
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

WMCP = "https://wmcp.sh/mcp/snowflake"
TOKEN = os.environ["WMCP_TOKEN"]  # /dashboard

async def run():
    async with streamablehttp_client(WMCP, headers={"Authorization": f"Bearer {TOKEN}"}) as (r, w, _):
        async with ClientSession(r, w) as s:
            await s.initialize()
            tools = (await s.list_tools()).tools
            anthropic = Anthropic()
            # Tell Claude: always explain_cost first, abort if > 1 credit.
            msg = anthropic.messages.create(
                model="claude-opus-4-5",
                max_tokens=2048,
                system="Always call snowflake.explain_cost first. Abort if credits_estimate > 1.0.",
                tools=[{"name": t.name, "description": t.description, "input_schema": t.inputSchema} for t in tools],
                messages=[{"role": "user", "content": "What was our daily active users for the last 7 days?"}],
            )
            return msg

asyncio.run(run())

Self-hosted Snowflake MCP server vs wmcp.sh-routed.

CapabilitySelf-hosted official / communitywmcp.sh-routed
Pre-execution cost previewNot exposed as a toolEXPLAIN-driven cost preview, threshold gate
Key-pair authSupported via configSupported, key encrypted in per-user vault
PAT (Programmatic Access Token)SupportedSupported + per-token TTL enforcement
Role-based access surfacingYou inspect roles manuallylist_roles + current_session built-in
Query history with creditsOptional QUERY_HISTORY viewTool-level, 24h rolling window
Audit logSnowflake-side onlyPer-call wmcp audit + Snowflake-side trail
Works with Claude.ai connectorsStdio only / partialStreamable HTTP + OAuth 2.1

Common questions.

Is there an official Snowflake MCP server?
The community Snowflake-Labs/mcp project is marked deprecated and directs users to Snowflake's officially-supported MCP Server. wmcp.sh is not affiliated with Snowflake Inc. — we are a hosted alternative that adds query cost preview, encrypted credential vault, and audit logging.
What's the query cost preview?
Before any query runs, wmcp.sh runs EXPLAIN, derives bytes-scanned and estimated warehouse-credit consumption, and surfaces it to the agent. You can configure a threshold — queries above N credits get blocked unless the agent confirms. Closes the loop on the most common Snowflake agent-billing trap.
Key-pair auth?
Yes and recommended over password. Private key lives encrypted in the per-user vault, decrypted in memory at the edge per request, never logged. PAT auth also supported.
Can the agent switch warehouses?
Yes — list_warehouses returns size/state, the query tool accepts an explicit warehouse parameter. You can pin a default per connection and require explicit override.
Pricing?
wmcp.sh: free 100 reads/day anonymous, Managed Starter $499 one-time, Managed Retainer $999/mo, Enterprise $4,999+/mo. Snowflake credits billed by Snowflake. See /managed.

Need this in production?

Production Snowflake MCP includes a read-only role with row-access policies, cost-threshold tuning, audit retention, SSO, and PrivateLink for Enterprise. Starter $499 one-time, Managed Retainer $999/mo, Enterprise $4,999+/mo.

→ Managed setup ($499) Submit your MCP server (free)