Skip to main content
Glama
davidamom

Snowflake MCP Service

スノーフレークMCPサービス

MCP 互換クライアントに Snowflake データベースへのアクセスを提供するモデル コンテキスト プロトコル (MCP) サーバー。

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

このサーバーはモデル コンテキスト プロトコルを実装し、MCP クライアントが次の操作を実行できるようにします。

  • SnowflakeデータベースでSQLクエリを実行する

  • データベース接続のライフサイクル(接続、タイムアウト時に再接続、閉じる)を自動的に処理します

  • クエリ結果とエラーを処理する

  • データベース操作を安全に実行する

  • パスワードまたはキーペア認証を使用して接続します

アーキテクチャの概要

MCP (モデルコンテキストプロトコル) とは何ですか?

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 データベース間のシームレスな統合が可能になります。

Related MCP server: Database MCP Server

インストール

  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 : サーバースクリプトへのフルパス。リポジトリをクローンした場所に応じて変更してください。

さまざまなオペレーティング システムの例のパス:

ウィンドウズ:

{ "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"] } } }

スノーフレーク構成

プロジェクトのルート ディレクトリに.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 サーバーは、次の 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. MCPクライアントをDockerを使用するように設定します。設定例:

{ "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

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

著作権 (c) 2025 デビッド・アモム

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

Latest Blog Posts

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