Skip to main content
Glama
isaacwasserman

mcp-snowflake-server

Snowflake MCP 서버

대장간 배지 PyPI - 버전


개요

Snowflake와 데이터베이스 간 상호작용을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버 구현입니다. 이 서버는 도구를 통해 SQL 쿼리를 실행하고 데이터 인사이트와 스키마 컨텍스트를 리소스로 제공합니다.


Related MCP server: Snowflake MCP Server

구성 요소

자원

  • memo://insights
    발견된 데이터 통찰력을 집계하여 지속적으로 업데이트되는 메모입니다.
    append_insight 도구를 통해 새로운 통찰력이 추가되면 자동으로 업데이트됩니다.

  • context://table/{table_name}
    (사전 페치가 활성화된 경우) 열과 주석을 포함한 테이블별 스키마 요약이 개별 리소스로 표시됩니다.


도구

서버는 다음 도구를 제공합니다.

쿼리 도구

  • read_query
    SELECT 쿼리를 실행하여 데이터베이스에서 데이터를 읽습니다.
    입력:

    • query (문자열): 실행할 SELECT SQL 쿼리
      반환: 객체 배열로 쿼리 결과

  • write_query ( --allow-write 로만 활성화됨)
    INSERT , UPDATE 또는 DELETE 쿼리를 실행합니다.
    입력:

    • query (문자열): SQL 수정 쿼리
      반환: 영향을 받은 행 수 또는 확인

  • create_table ( --allow-write 로만 활성화됨)
    데이터베이스에 새로운 테이블을 만듭니다.
    입력:

    • query (문자열): CREATE TABLE SQL 문
      반환: 테이블 생성 확인

스키마 도구

  • list_databases
    Snowflake 인스턴스의 모든 데이터베이스를 나열합니다.
    반환: 데이터베이스 이름 배열

  • list_schemas
    특정 데이터베이스 내의 모든 스키마를 나열합니다.
    입력:

    • database (문자열): 데이터베이스 이름
      반환: 스키마 이름 배열

  • list_tables
    특정 데이터베이스와 스키마 내의 모든 테이블을 나열합니다.
    입력:

    • database (문자열): 데이터베이스 이름

    • schema (문자열): 스키마의 이름
      반환: 테이블 메타데이터 배열

  • describe_table
    특정 테이블의 열 정보를 봅니다.
    입력:

    • table_name (문자열): 정규화된 테이블 이름( database.schema.table )
      반환: 이름, 유형, Null 허용 여부, 기본값 및 주석이 포함된 열 정의 배열

분석 도구

  • append_insight
    메모 리소스에 새로운 데이터 통찰력을 추가합니다.
    입력:

    • insight (문자열): 분석을 통해 발견된 데이터 통찰력
      반환: 통찰력 추가 확인
      효과: memo://insights 리소스 업데이트를 트리거합니다.


Claude Desktop과 함께 사용

Smithery를 통해 설치

Smithery를 통해 Claude Desktop에 Snowflake Server를 자동으로 설치하는 방법:

지엑스피1


UVX를 통해 설치

"mcpServers": {
  "snowflake_pip": {
    "command": "uvx",
    "args": [
      "--python=3.12",  // Optional: specify Python version <=3.12
      "mcp_snowflake_server",
      "--account", "your_account",
      "--warehouse", "your_warehouse",
      "--user", "your_user",
      "--password", "your_password",
      "--role", "your_role",
      "--database", "your_database",
      "--schema", "your_schema"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

로컬 설치

  1. Claude AI 데스크톱 앱 설치

  2. uv 설치 :

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Snowflake 자격 증명으로 .env 파일을 만듭니다.

SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
  1. [선택 사항] runtime_config.json 수정하여 데이터베이스, 스키마 또는 테이블에 대한 제외 패턴을 설정합니다.

  2. 로컬로 테스트:

uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
  1. claude_desktop_config.json 에 서버를 추가합니다.

"mcpServers": {
  "snowflake_local": {
    "command": "/absolute/path/to/uv",
    "args": [
      "--python=3.12",  // Optional
      "--directory", "/absolute/path/to/mcp_snowflake_server",
      "run", "mcp_snowflake_server"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

노트

  • 기본적으로 쓰기 작업은 비활성화되어 있습니다 . --allow-write 사용하여 명시적으로 활성화하세요.

  • 서버는 제외 패턴을 통해 특정 데이터베이스, 스키마 또는 테이블을 필터링하는 기능을 지원합니다.

  • 사전 페칭이 활성화된 경우 서버는 추가적인 테이블별 컨텍스트 리소스를 노출합니다.

  • append_insight 도구는 memo://insights 리소스를 동적으로 업데이트합니다.


특허

MIT

Available Tools

6 tools
append_insightB

Add a data insight to the memo

ParametersJSON Schema
NameRequiredDescriptionDefault
insightYesData insight discovered from analysis

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral traits but only states the action. It does not disclose side effects (e.g., whether the memo is modified permanently), permissions needed, or return behavior beyond 'add'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is front-loaded and concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description is mostly adequate. It identifies the action and parameter, though it could be more explicit about which memo (e.g., current context) and whether it appends or replaces.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'insight' has a description in the schema ('Data insight discovered from analysis'), and schema description coverage is 100%. The tool description adds no further meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and the resource ('data insight to the memo'), with a specific verb and resource that distinguishes it from sibling tools (e.g., describe_table, read_query).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any context about prerequisites or exclusions. The description only states the function without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_tableA

Get the schema information for a specific table

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesFully qualified table name in the format 'database.schema.table'

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a safe read operation. However, with no annotations, it lacks details on potential limitations, permissions, or the exact content of the schema returned (e.g., columns, types).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no output schema, the description is mostly complete. However, it could specify what 'schema information' includes (e.g., columns, types) for better agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the parameter 'table_name' is fully described in the schema. The description adds no additional semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get the schema information for a specific table' clearly specifies the verb and resource. It distinguishes from sibling tools like list_tables which only list table names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates usage for retrieving schema of a specific table. While no explicit when-not-to-use is provided, sibling names provide context, making it clear that this tool is for detailed schema rather than listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_databasesA

List all available databases in Snowflake

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only states it lists databases, but does not disclose behavioral details such as permissions required, whether it returns names only, or any limitations. For a read-only tool, minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence of 6 words, no redundancy, front-loaded. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description is minimally adequate. It could mention return format or whether it requires any permissions, but overall meets basic needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema, so description doesn't need to add parameter semantics. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available databases in Snowflake, with a specific verb ('List') and resource ('databases'). It distinguishes itself from sibling tools like 'list_schemas' and 'describe_table'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_schemas' or 'list_tables'. No when-not-to-use or explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_schemasB

List all schemas in a database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYesDatabase name to list schemas from

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states the action without disclosing any behavioral traits like authentication, side effects, or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded and concise without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description and schema together provide adequate information, though no output schema exists to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter description in schema is clear; description adds no extra semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'schemas', clearly distinguishing from siblings like list_databases and list_tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives; no context about prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tablesB

List all tables in a specific database and schema

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYesDatabase name
schemaYesSchema name

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states 'list', implying read-only, but no details on permissions, performance, or whether metadata is included. Insufficient for a tool with zero annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with full schema coverage and no output schema, the description is adequate. Lacks context about output format but sufficient for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. Description adds no extra meaning beyond what schema already provides; baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all tables in a specific database and schema' with a specific verb and resource. It distinguishes from sibling tools like list_databases and list_schemas which cover different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like list_databases, list_schemas, or describe_table. No mention of prerequisites (e.g., need to select database first) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_queryB

Execute a SELECT query.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSELECT SQL query to execute

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only says 'Execute a SELECT query.' This implies a read-only operation, but it does not explicitly state that no side effects occur, no data is modified, or what happens on invalid queries. The behavioral profile is insufficiently disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 4 words, front-loading the core purpose. While it could be slightly more structured by adding a sentence about return value or constraints, it is not verbose and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a single parameter, the description is minimally adequate: it states what the tool does. However, it lacks mention of the return format (e.g., result rows), potential limits (e.g., max rows), or error behavior. It is complete enough for a simple tool but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with the query parameter description 'SELECT SQL query to execute'. The tool description adds no extra meaning beyond this. Per guidelines, baseline is 3 when coverage is high, and there is no additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Execute' and the resource 'SELECT query', making the tool's function obvious. It is distinct from sibling tools like describe_table or list_tables, which are metadata operations, and append_insight, which is likely a write operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is for ad-hoc data retrieval and not for exploring schema or modifying data, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedappend_insight
    • First observeddescribe_table
    • First observedlist_databases
    • First observedlist_schemas
    • First observedlist_tables
    • First observedread_query

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: metadata listing, schema description, query execution, and memo insight. No overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores, e.g., list_databases, read_query.

Tool Count5/5

6 tools is well-scoped for a Snowflake server covering metadata exploration and querying without being excessive.

Completeness4/5

Covers metadata listing and SELECT queries thoroughly, but lacks DML/DDL operations like INSERT or CREATE, which may be needed depending on use case.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with Snowflake databases through SQL queries, schema exploration, and data analysis. Supports read/write operations, table management, and automatic insight tracking for comprehensive database operations through natural language.
    7
    GPL 3.0
  • A
    license
    A
    quality
    Not graded
    maintenance
    Enables AI assistants to securely connect to Snowflake data warehouses and execute SQL queries through natural language interactions. Supports multiple authentication methods and provides formatted query results with built-in security controls.
    1
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Snowflake through Cortex AI services including search, analyst, and agents for querying structured and unstructured data, plus SQL execution and object management capabilities.
    8,972 PyPI
    298
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to securely access Snowflake data warehouses through natural language, executing SQL queries and retrieving insights with support for multiple authentication methods.
    3
    MIT