Metabase MCP server
OFFICIAL SERVERBuilt-in MCP endpoint of a Metabase instance for searching, querying, charting and editing its content
Deprecated Snowflake Labs server for Cortex Search, Analyst, Agents, SQL and object management
By Snowflake Labs Python Local · stdio DatabasesData and analyticsAI and ML
66 popularity score ★ 303 ↓ 44k/mo
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
claude mcp add snowflake-cortex-ai-model-context-protocol -- uvx snowflake-labs-mcp --service-config-file '<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>' --connection-name default{
"mcpServers": {
"snowflake-cortex-ai-model-context-protocol": {
"command": "uvx",
"args": [
"snowflake-labs-mcp",
"--service-config-file",
"<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>",
"--connection-name",
"default"
]
}
}
}{
"mcpServers": {
"snowflake-cortex-ai-model-context-protocol": {
"command": "uvx",
"args": [
"snowflake-labs-mcp",
"--service-config-file",
"<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>",
"--connection-name",
"default"
]
}
}
}{
"servers": {
"snowflake-cortex-ai-model-context-protocol": {
"type": "stdio",
"command": "uvx",
"args": [
"snowflake-labs-mcp",
"--service-config-file",
"<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>",
"--connection-name",
"default"
]
}
}
}[mcp_servers.snowflake-cortex-ai-model-context-protocol]
command = "uvx"
args = ["snowflake-labs-mcp", "--service-config-file", "<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>", "--connection-name", "default"]gemini mcp add --scope user snowflake-cortex-ai-model-context-protocol uvx -- snowflake-labs-mcp --service-config-file '<ABSOLUTE_PATH_TO_TOOLS_CONFIG_YAML>' --connection-name defaultSNOWFLAKE_ACCOUNT |
Optional: Account identifier, when not using a connections.toml entry. |
|---|---|
SNOWFLAKE_USER |
Optional: User name for sign-in. |
SNOWFLAKE_PASSWORD |
Optional: Password or programmatic access token. |
SNOWFLAKE_PRIVATE_KEY_FILE |
Optional: Path to a private key for key-pair sign-in (or SNOWFLAKE_PRIVATE_KEY with the key itself). |
SNOWFLAKE_PRIVATE_KEY_FILE_PWD |
Optional: Password of an encrypted private key. |
SNOWFLAKE_ROLE |
Optional: Role to connect with; the user's default role otherwise. |
SNOWFLAKE_WAREHOUSE |
Optional: Warehouse used for queries. |
SERVICE_CONFIG_FILE |
Optional: Path to the tools YAML file, instead of --service-config-file. |
SNOWFLAKE_MCP_VERBOSE |
Optional: Set to true for debug logging. |
A local Python server from the Snowflake-Labs GitHub organisation that exposes a Snowflake account to an MCP client. Its makers now mark it deprecated and no longer maintained, and point every user to the managed Snowflake MCP Server documented by Snowflake instead.
What it offers is set by a YAML file passed at start. Each Cortex Agent, Cortex Search and Cortex Analyst service listed there becomes reachable through one tool per service type (cortex_agent, cortex_search, cortex_analyst). Three optional groups can be switched on: object management (create, drop, create-or-alter, describe and list databases, schemas, tables, views, warehouses, compute pools, roles, stages, users and image repositories), a general SQL tool, and semantic view tools for listing, describing and querying Snowflake Semantic Views.
SQL statements are classified with sqlglot and checked against an allow/deny list in the same file, so an operator can, for example, allow Select but refuse Drop. Everything runs under the Snowflake role given at connection time.
At version 1.4.2 the object management group is five generic tools that take an object type, not the "dozens" of narrow tools the README describes, so a full setup has at most 16 tools (mcp_server_snowflake/object_manager/tools.py). The server also tags every session it opens with a query tag (origin sf_sit, name mcp_server), which makes its queries visible in Snowflake query history (mcp_server_snowflake/server.py).
| Runtime | Python |
|---|
uv (for uvx) and Python; a Snowflake account and a role with access to the objects and Cortex services you configure; a tools YAML file (passed with --service-config-file or the SERVICE_CONFIG_FILE variable, the server will not start without it); credentials through a connections.toml entry (--connection-name) or SNOWFLAKE_* variables. The Docker image must be built from the repository and serves streamable HTTP on port 9000, not stdio.
Deprecated and unmaintained by its makers; no new fixes are expected. Only Cortex Agent objects already created in Snowflake can be used as agents. Cortex Search returns the service's default columns and 10 results unless the prompt asks otherwise. Some Snowflake commands are not mapped by sqlglot and fall under Unknown, which is refused unless set to True. The README's Docker examples use docker run -d with an HTTP port, so they are not stdio commands for a client. The --account-identifier and --pat flags and SNOWFLAKE_PAT are deprecated.
Suits teams that already run it against Snowflake and want Cortex Search, Analyst and Agents plus guarded SQL from a local client while they plan a move. For new setups its own README sends users to Snowflake's managed Snowflake MCP Server, which is maintained and supported. Pick this one only if you need a self-run process with a statement allow-list you control, and accept that it receives no updates.
cortex_agentcortex_searchcortex_analystcreate_objectdrop_objectcreate_or_alter_objectdescribe_objectlist_objectsrun_snowflake_querylist_semantic_viewsdescribe_semantic_viewshow_semantic_dimensionsshow_semantic_metricsget_semantic_view_ddlwrite_semantic_view_query_toolquery_semantic_view