mcpField
S
Snowflake MCP Service

Snowflake MCP Service

ローカル
github.com/davidamomデータベース557 週間前に更新

Snowflake MCP Service について

Snowflake MCP Serviceは、Snowflakeデータベースをクエリするクライアント向けのMCPサーバーです。SQL実行とCSVエクスポートに対応し、接続を管理します。パスワードまたはキーペアで認証できます。

主な機能

  1. 01Snowflake SQLクエリの実行
  2. 02クエリ結果のCSVエクスポート
  3. 03接続ライフサイクルの管理
  4. 04タイムアウト後の再接続
  5. 05パスワードまたはキーペア認証

活用シーン

  1. 01MCP対応クライアントからのSQL実行
  2. 02後続処理向けのクエリ結果エクスポート

MCP 対応

MCPクライアントにexecute_queryとexport_to_csvツールを提供します。SnowflakeでSQLを実行し、構造化された結果またはエクスポートファイルのパスを返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Snowflake MCP サービス

MCP 互換クライアントから Snowflake データベースにアクセスできる Model Context Protocol(MCP)サーバーです。

GitHub リポジトリ ライセンス:MIT

このサーバーは Model Context Protocol を実装しており、あらゆる MCP クライアントから以下の操作を行えます。

  • Snowflake データベースで SQL クエリを実行する
  • データベース接続のライフサイクル(接続、タイムアウト時の再接続、切断)を自動的に処理する
  • クエリ結果とエラーを処理する
  • データベース操作を安全に実行する
  • パスワード認証またはキーペア認証で接続する

アーキテクチャの概要

MCP(Model Context Protocol)とは?

MCP は、アプリケーションが AI モデルや外部サービスと通信できるようにする標準プロトコルです。標準化された通信インターフェースを通じて、AI モデルが学習データ以外のツールやデータソースにアクセスできるようにし、機能を拡張します。主な機能は以下のとおりです。

  • 標準入出力(stdio)による通信
  • 構造化されたツールの定義と検出
  • 標準化されたツール呼び出しの仕組み
  • 構造化された結果の送信
システムコンポーネント

Snowflake-MCP サーバーは、以下の主要コンポーネントで構成されています。

  1. MCP サーバー - MCP プロトコルを実装し、クライアントからのリクエストを処理する中核コンポーネント
  2. Snowflake 接続マネージャー - 接続の作成、維持、クリーンアップなど、データベース接続を管理します
  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. このリポジトリをクローンします
git clone https://github.com/davidamom/snowflake-mcp.git
  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:サーバースクリプトのフルパスです。リポジトリをクローンした場所に合わせて変更してください。

各 OS のパスの例:

Windows:

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

MacOS/Linux:

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

プロジェクトのルートディレクトリに .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
SNOWFLAKE_ROLE=your_role              # Your role

# Authentication - Choose one method
認証オプション

この MCP サーバーは、以下の 2 種類の認証方式に対応しています。

  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",
        "SNOWFLAKE_ROLE": "your_role"
        
      }
    }
  }
}

注: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_ROLE": "your_role",
        "SNOWFLAKE_PRIVATE_KEY_FILE": "path_for_your_private_key",
        "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "your_password_for_private_key"
      }
    }
  }
}

機能

  • 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

このプロジェクトはMIT ライセンスのもとでライセンスされています。詳細についてはLICENSEファイルをご覧ください。

Copyright (c) 2025 David Amom

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。