Skip to main content
Glama

Snowflake MCP Service

MIT License
2
  • Apple
  • Linux

스노우플레이크 MCP 서비스

모든 MCP 호환 클라이언트에게 Snowflake 데이터베이스에 대한 액세스를 제공하는 MCP(Model Context Protocol) 서버입니다.

GitHub 저장소라이센스: MIT

이 서버는 모든 MCP 클라이언트가 다음을 수행할 수 있도록 모델 컨텍스트 프로토콜을 구현합니다.

  • Snowflake 데이터베이스에서 SQL 쿼리 실행
  • 데이터베이스 연결 수명 주기를 자동으로 처리합니다(연결, 시간 초과 시 재연결, 닫기)
  • 쿼리 결과 및 오류 처리
  • 데이터베이스 작업을 안전하게 수행하세요
  • 비밀번호 또는 키 쌍 인증을 사용하여 연결

아키텍처 개요

MCP(모델 컨텍스트 프로토콜)란 무엇인가요?

MCP는 애플리케이션이 AI 모델 및 외부 서비스와 통신할 수 있도록 하는 표준 프로토콜입니다. AI 모델은 MCP를 통해 훈련 데이터 외에도 다양한 도구와 데이터 소스에 접근하여 표준화된 통신 인터페이스를 통해 기능을 확장할 수 있습니다. 주요 기능은 다음과 같습니다.

  • stdio 통신(표준 입출력) 기반
  • 구조화된 도구 정의 및 발견
  • 표준화된 도구 호출 메커니즘
  • 구조화된 결과 전송

시스템 구성 요소

Snowflake-MCP 서버는 다음과 같은 몇 가지 주요 구성 요소로 구성됩니다.

  1. MCP 서버 - MCP 프로토콜을 구현하고 클라이언트 요청을 처리하는 중앙 구성 요소
  2. Snowflake Connection Manager - 데이터베이스 연결 생성, 유지 관리 및 정리를 포함한 데이터베이스 연결을 관리합니다.
  3. 쿼리 프로세서 - Snowflake에서 SQL 쿼리를 실행하고 결과를 처리합니다.
  4. 인증 관리자 - 다양한 인증 방법(암호 또는 개인 키)을 처리합니다.

대체 텍스트

커뮤니케이션 흐름

시스템은 다음과 같은 통신 흐름을 통해 작동합니다.

  1. MCP 클라이언트(예: Claude 또는 기타 MCP 호환 애플리케이션)는 MCP 서버에 요청을 보냅니다.
  2. MCP 서버는 .env 파일의 자격 증명을 사용하여 Snowflake에 인증합니다.
  3. MCP 서버는 Snowflake에서 SQL 쿼리를 실행합니다.
  4. Snowflake는 결과를 MCP 서버로 반환합니다.
  5. MCP 서버는 결과를 포맷하고 MCP 클라이언트로 다시 전송합니다.

대체 텍스트

이 아키텍처는 보안과 효율적인 연결 관리를 유지하면서 AI 애플리케이션과 Snowflake 데이터베이스 간의 원활한 통합을 가능하게 합니다.

설치

  1. 이 저장소를 복제하세요

지엑스피1

  1. 종속성 설치
pip install -r requirements.txt

구성

MCP 클라이언트 구성 예

아래는 Claude Desktop의 구성 예시입니다. 하지만 이 서버는 모든 MCP 호환 클라이언트에서 작동합니다. 각 클라이언트는 고유한 구성 방법을 가질 수 있습니다.

{ "mcpServers": { "snowflake": { "command": "C:\\Users\\YourUsername\\path\\to\\python.exe", "args": ["C:\\path\\to\\snowflake-mcp\\server.py"] } } }

구성 매개변수:

  • command : Python 인터프리터의 전체 경로입니다. Python 설치 위치에 맞게 수정하세요.
  • args : 서버 스크립트의 전체 경로입니다. 저장소를 복제한 위치에 따라 이 경로를 수정하세요.

다양한 운영 체제에 대한 경로 예:

윈도우:

{ "mcpServers": { "snowflake": { "command": "C:\\Users\\YourUsername\\anaconda3\\python.exe", "args": ["C:\\Path\\To\\snowflake-mcp\\server.py"] } } }

MacOS/리눅스:

{ "mcpServers": { "snowflake": { "command": "/usr/bin/python3", "args": ["/path/to/snowflake-mcp/server.py"] } } }

눈송이 구성

프로젝트 루트 디렉토리에 .env 파일을 만들고 다음 구성을 추가합니다.

# Snowflake Configuration - Basic Info SNOWFLAKE_USER=your_username # Your Snowflake username SNOWFLAKE_ACCOUNT=YourAccount.Region # Example: MyOrg.US-WEST-2 SNOWFLAKE_DATABASE=your_database # Your database SNOWFLAKE_WAREHOUSE=your_warehouse # Your warehouse # Authentication - Choose one method
인증 옵션

이 MCP 서버는 두 가지 인증 방법을 지원합니다.

  1. 비밀번호 인증
    SNOWFLAKE_PASSWORD=your_password # Your Snowflake password
  2. 키 쌍 인증
    SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8 # Path to private key file SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_passphrase # Optional: passphrase if key is encrypted
    키 쌍 인증을 위해서는 먼저 Snowflake로 키 쌍 인증을 설정해야 합니다.
    • 키 쌍을 생성하고 Snowflake에 공개 키를 등록합니다.
    • 개인 키 파일을 컴퓨터에 안전하게 저장하세요
    • 구성에서 개인 키 파일의 전체 경로를 제공하세요.

    키 쌍 인증을 설정하는 방법에 대한 지침은 Snowflake의 키 쌍 인증 설명서를 참조하세요.

두 가지 인증 방법이 모두 구성된 경우 서버는 키 쌍 인증을 우선시합니다.

연결 관리

서버는 자동 연결 관리 기능을 제공합니다.

  • 자동 연결 초기화
    • 첫 번째 쿼리를 수신하면 연결을 생성합니다.
    • 연결 매개변수를 검증합니다.
  • 연결 유지 관리
    • 연결 상태를 추적합니다
    • 연결 시간 초과를 처리합니다
    • 연결이 끊어지면 자동으로 다시 연결됩니다.
  • 연결 정리
    • 서버가 중지되면 연결을 제대로 닫습니다.
    • 리소스를 적절하게 해제합니다

용법

표준 사용

MCP 클라이언트와 함께 구성하면 서버가 자동으로 시작됩니다. 정상적인 작동 시에는 수동 시작이 필요하지 않습니다. 서버가 실행되면 MCP 클라이언트에서 Snowflake 쿼리를 실행할 수 있습니다.

개발 테스트를 위해 다음을 사용하여 서버를 수동으로 시작할 수 있습니다.

python server.py

참고: 일반적인 사용 시에는 수동으로 서버를 시작할 필요가 없습니다. MCP 클라이언트가 일반적으로 구성에 따라 서버 시작 및 종료를 관리합니다.

Docker 사용법

Docker를 사용하여 서버를 실행할 수도 있습니다. 이 방법은 프로덕션 환경에 권장되며 다양한 플랫폼에서 일관된 실행을 보장합니다.

  1. Docker 이미지를 빌드합니다.
docker build -t snowflake-mcp .
  1. Docker를 사용하도록 MCP 클라이언트를 구성하세요. 구성 예시:
{ "mcpServers": { "snowflake-docker": { "command": "docker", "args": [ "run", "-i", "snowflake-mcp" ], "env": { "SNOWFLAKE_USER": "your_username", "SNOWFLAKE_ACCOUNT": "your_account", "SNOWFLAKE_DATABASE": "your_database", "SNOWFLAKE_WAREHOUSE": "your_warehouse", "SNOWFLAKE_PASSWORD": "your_password" } } } }

참고: Docker 구현은 통신에 stdio를 사용하므로 포트를 노출할 필요가 없습니다.

Docker에서 키 쌍 인증을 사용하는 경우 개인 키 파일을 마운트해야 합니다.

docker run -i -v /path/to/your/key.p8:/app/rsa_key.p8:ro snowflake-mcp

그리고 그에 따라 구성을 업데이트하세요.

{ "mcpServers": { "Snowflake-Docker": { "command": "docker", "args": [ "run", "-i", "-v", "/path/to/your/key.p8:/app/rsa_key.p8:ro", //optional "-v", "/path/to/export/dir/:/export/" "snowflake-mcp" ], "env": { "SNOWFLAKE_USER": "your_username", "SNOWFLAKE_ACCOUNT": "your_account", "SNOWFLAKE_DATABASE": "your_database", "SNOWFLAKE_WAREHOUSE": "your_warehouse", "SNOWFLAKE_PRIVATE_KEY_FILE": "/app/rsa_key.p8" } } } }

특징

  • 안전한 Snowflake 데이터베이스 액세스
  • 유연한 인증(암호 또는 키 쌍 인증)
  • 강력한 오류 처리 및 보고
  • 자동 연결 관리
  • 쿼리 실행 및 결과 처리
  • 모든 MCP 호환 클라이언트와 호환 가능

기술적 세부 사항

핵심 구성 요소

구현은 몇 가지 주요 클래스와 모듈로 구성됩니다.

  • server.py - MCP 서버 구현을 포함하는 주요 진입점입니다.
  • SnowflakeConnection - 다음을 포함한 모든 Snowflake 데이터베이스 작업을 처리하는 클래스:
    • 연결 설정 및 재연결
    • 쿼리 실행 및 트랜잭션 관리
    • 연결 유지 관리 및 정리
  • SnowflakeMCPServer - MCP 프로토콜을 구현하는 주요 서버 클래스:
    • MCP 프레임워크를 사용하여 사용 가능한 도구를 등록합니다.
    • 클라이언트의 도구 호출 요청을 처리합니다.
    • 연결의 수명 주기를 관리합니다

연결 수명 주기

연결 수명 주기는 안정성을 보장하기 위해 신중하게 관리됩니다.

  1. 초기화 - 첫 번째 쿼리가 수신되면 연결이 지연 생성됩니다.
  2. 유효성 검사 - 연결 매개변수는 연결을 시도하기 전에 유효성 검사됩니다.
  3. 모니터링 - 연결은 유효성을 위해 정기적으로 테스트됩니다.
  4. 복구 - 연결이 끊어지거나 시간 초과되면 자동으로 다시 연결됩니다.
  5. 정리 - 서버가 종료될 때 적절한 리소스 해제

MCP 도구 인터페이스

서버는 다음 도구를 MCP 클라이언트에 제공합니다.

  • execute_query - Snowflake에서 SQL 쿼리를 실행하고 결과를 반환합니다.
    • 입력: SQL 쿼리 문자열
    • 출력: 구조화된 형식의 쿼리 결과
  • export_to_csv - Snowflake에서 SQL 쿼리를 실행하고 결과를 반환합니다.
    • 입력: SQL 쿼리 문자열
    • 출력: 내보낸 행 수. 출력 파일의 파일 경로

이 구현은 MCP 프로토콜 구현과 Snowflake 데이터베이스 상호작용에 대한 모범 사례를 따릅니다.

특허

이 프로젝트는 MIT 라이선스 에 따라 라이선스가 부여됩니다. 자세한 내용은 라이선스 파일을 참조하세요.

저작권 (c) 2025 David Amom

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

MCP 호환 클라이언트에게 Snowflake 데이터베이스에 대한 액세스를 제공하는 모델 컨텍스트 프로토콜 서버로, 자동 연결 관리를 통해 SQL 쿼리를 실행할 수 있습니다.

  1. 아키텍처 개요
    1. MCP(모델 컨텍스트 프로토콜)란 무엇인가요?
    2. 시스템 구성 요소
    3. 커뮤니케이션 흐름
  2. 설치
    1. 구성
      1. MCP 클라이언트 구성 예
      2. 눈송이 구성
    2. 연결 관리
      1. 용법
        1. 표준 사용
        2. Docker 사용법
      2. 특징
        1. 기술적 세부 사항
          1. 핵심 구성 요소
          2. 연결 수명 주기
          3. MCP 도구 인터페이스
        2. 특허

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            A Model Context Protocol server that enables Claude to execute SQL queries on Snowflake databases with automatic connection lifecycle management.
            Last updated -
            28
            Python
            MIT License
            • Apple
            • Linux
          • -
            security
            -
            license
            -
            quality
            A Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.
            Last updated -
            Python
          • -
            security
            F
            license
            -
            quality
            A Model Context Protocol server that provides tools for interacting with databases, including PostgreSQL, DuckDB, and Google Cloud Storage Parquet files.
            Last updated -
            2
            TypeScript
            • Linux
            • Apple
          • A
            security
            F
            license
            A
            quality
            A Model Context Protocol server that provides a SQL interface for querying and managing Apache Iceberg tables through Claude desktop, allowing natural language interaction with Iceberg data lakes.
            Last updated -
            1
            2
            Python

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/davidamom/snowflake-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server