MCP 문서 관리

메뉴

Snowflake

Snowflake

Snowflake MCP 서버는 Snowflake 데이터베이스와 상호작용할 수 있는 Model Context Protocol 서버입니다. 이 서버는 LLM이 Snowflake 데이터베이스에서 SQL 쿼리를 실행하고 데이터 분석을 수행할 수 있도록 안전하고 효율적인 인터페이스를 제공합니다.

특징

  • Snowflake 데이터베이스 연결 및 쿼리 실행
  • 데이터베이스 스키마 검사 및 테이블 메타데이터 조회
  • 읽기 전용 또는 읽기/쓰기 모드 지원(구성 가능)
  • 데이터 인사이트 메모 기능 - 발견된 인사이트를 저장하고 추적
  • 테이블별 컨텍스트 리소스 제공(옵션)
  • 자연어 쿼리 지원(일부 구현에서)
  • 안전한 연결 관리 및 보안 구성 옵션

API

리소스

memo://insights

발견된 데이터 인사이트를 지속적으로 업데이트하는 메모 리소스입니다. append_insight 도구를 통해 새로운 인사이트가 추가될 때마다 자동으로 업데이트됩니다.

context://table/{table_name}

(프리페치 활성화된 경우) 테이블별 스키마 요약을 제공하는 리소스입니다. 컬럼과 코멘트 등의 정보를 포함합니다.

도구

query_database

Snowflake 데이터베이스에서 SQL 쿼리를 실행합니다. - 입력: - query: 실행할 SQL 쿼리 문자열 또는 자연어 쿼리 - parameters: (선택적) 쿼리 매개변수

get_table_structure

특정 테이블의 구조 정보를 조회합니다. - 입력: - table_name: 전체 테이블 이름(database.schema.table) - 출력: - 컬럼 정의 배열(이름, 타입, NULL 허용 여부, 기본값, 코멘트 포함)

append_insight

새로운 데이터 인사이트를 메모 리소스에 추가합니다. - 입력: - insight: 발견된 데이터 인사이트 문자열 - 효과: - memo://insights 리소스 업데이트

사용 방법

Snowflake MCP 서버는 다음과 같이 구성할 수 있습니다:

  1. 로컬 설치 및 실행:

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

  2. pip 설치를 통한 실행:

    {
      "mcpServers": {
        "snowflake_pip": {
          "command": "uvx",
          "args": [
            "mcp_snowflake_server",
            "--account", "your_account",
            "--warehouse", "your_warehouse",
            "--user", "your_user",
            "--password", "your_password",
            "--role", "your_role",
            "--database", "your_database",
            "--schema", "your_schema"
            // 선택적: "--allow_write"
          ]
        }
      }
    }

  3. 환경 변수 사용:

    SNOWFLAKE_USER="xxx@your_email.com"
    SNOWFLAKE_ACCOUNT="xxx"
    SNOWFLAKE_ROLE="xxx"
    SNOWFLAKE_DATABASE="xxx"
    SNOWFLAKE_SCHEMA="xxx"
    SNOWFLAKE_WAREHOUSE="xxx"
    SNOWFLAKE_PASSWORD="xxx"

또는 외부 브라우저 인증을 사용할 수 있습니다:

SNOWFLAKE_AUTHENTICATOR="externalbrowser"

  1. 간단한 Claude Desktop 구성:
    {
      "mcpServers": {
        "snowflake": {
          "command": "uvx",
          "args": ["mcp_snowflake_server"],
          "env": {
            "SNOWFLAKE_WAREHOUSE": "your_warehouse",
            "SNOWFLAKE_DATABASE": "your_database",
            "SNOWFLAKE_ACCOUNT": "your_account_identifier",
            "SNOWFLAKE_USER": "your_username",
            "SNOWFLAKE_ROLE": "your_role",
            "SNOWFLAKE_SCHEMA": "your_schema",
            "SNOWFLAKE_PASSWORD": "your_password"
          }
        }
      }
    }

고급 구성

  1. 쓰기 작업 허용: 기본적으로 쓰기 작업은 비활성화되어 있습니다. 명시적으로 --allow-write 옵션을 사용하여 활성화할 수 있습니다.

  2. 제외 패턴: 특정 데이터베이스, 스키마 또는 테이블을 제외하기 위한 패턴을 설정할 수 있습니다.

  3. 테이블 컨텍스트 리소스: 프리페치를 활성화하면 테이블별 컨텍스트 리소스가 노출됩니다.

보안 고려사항

  • 기본적으로 쓰기 작업은 비활성화되어 있으며, 필요한 경우에만 활성화해야 합니다.
  • 최소 권한 원칙을 따라 필요한 권한만 가진 Snowflake 역할을 사용하세요.
  • 민감한 데이터가 있는 환경에서는 항상 데이터 액세스 감사 및 로깅을 활성화하세요.
  • 환경 변수 또는 구성 파일에 저장된 자격 증명을 안전하게 관리하세요.

연결된 구성 요소

  • PostgreSQL - PostgreSQL 데이터베이스와 상호작용하기 위한 MCP 서버
  • MySQL - MySQL 데이터베이스와 상호작용하기 위한 MCP 서버
  • MSSQL - Microsoft SQL Server와 상호작용하기 위한 MCP 서버
  • DBHub - MySQL, PostgreSQL, SQLite, DuckDB 등에 연결하는 범용 데이터베이스 MCP 서버