mcpField
M
MCP Server for Snowflake

MCP Server for Snowflake

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

MCP Server for Snowflake について

Snowflake データベースを Claude などのクライアントから読み取り専用で照会する MCP サーバーです。複数データベースのビューに対応し、データ変更を防ぐ検証と結果件数の制限を備えています。

主な機能

  1. 01秘密鍵認証とブラウザー認証
  2. 02接続プールとバックグラウンド更新
  3. 03複数データベースとビューの照会
  4. 04複数の読み取り専用 SQL 文
  5. 05結果行数の自動制限

活用シーン

  1. 01アクセス可能なデータベースとビューの確認
  2. 02ビューの列と SQL 定義の調査
  3. 03ビューを照会してデータを分析
  4. 04制限付きの読み取り専用 SQL の実行

MCP 対応

MCP クライアントに Snowflake のデータベース一覧、ビュー情報、読み取り専用クエリのツールを提供します。Claude Desktop などのクライアント向けに stdio トランスポートをサポートします。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Snowflake 用 MCP サーバー

Snowflake データベースに対して読み取り専用の操作を行うための Model Context Protocol(MCP)サーバーです。このツールを使うと、情報を変更することなく、Claude が Snowflake のデータを安全にクエリできます。

機能

  • 次のいずれかを使った柔軟な Snowflake 認証:
    • 秘密鍵を使ったサービスアカウント認証
    • 対話型セッション向けの外部ブラウザー認証
  • 永続的な接続を維持する、自動バックグラウンド更新機能付きのコネクションプーリング
  • 1 つのセッションで複数のビューやデータベースをクエリ可能
  • 複数の SQL ステートメントタイプに対応(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)
  • Snowflake データのクエリに対応する MCP 互換ハンドラー
  • データ変更を防止するセキュリティチェック付きの読み取り専用操作
  • Python 3.12 以降に対応
  • Claude Desktop と簡単に連携できる、stdio ベースの MCP サーバー

利用可能なツール

このサーバーは、Snowflake をクエリするために次のツールを提供します。

  • list_databases:アクセス可能な Snowflake データベースをすべて一覧表示します
  • list_views:指定したデータベースとスキーマ内のビューをすべて一覧表示します
  • describe_view:列や SQL 定義を含む、指定したビューの詳細情報を取得します
  • query_view:任意の行数制限を指定して、ビューのデータをクエリします
  • execute_query:カスタムの読み取り専用 SQL クエリ(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)を実行し、結果を Markdown テーブル形式で表示します

インストール

前提条件
  • Python 3.12 以降
  • 次のいずれかを備えた Snowflake アカウント:
    • 設定済みのサービスアカウント(ユーザー名+秘密鍵)、または
    • ブラウザーベースの認証に使用する通常のユーザーアカウント
  • uv パッケージマネージャー(推奨)
手順
  1. このリポジトリをクローンします。

    git clone https://github.com/yourusername/snowflake-mcp-server.git
    cd snowflake-mcp-server
    
  2. パッケージをインストールします。

    uv pip install -e .
    
  3. Snowflake の認証情報を記載した .env ファイルを作成します。

    使用する認証方法に応じて、用意されているサンプルファイルのいずれかを選択します。

    秘密鍵認証の場合:

    cp .env.private_key.example .env
    

    次に、.env ファイルを編集し、Snowflake アカウントの詳細と秘密鍵へのパスを設定します。

    外部ブラウザー認証の場合:

    cp .env.browser.example .env
    

    次に、.env ファイルを編集し、Snowflake アカウントの詳細を設定します。

使用方法

uv で実行する

パッケージをインストールした後、次のコマンドでサーバーを直接実行できます。

uv run snowflake-mcp

# Or you can be explicit about using stdio transport
uv run snowflake-mcp-stdio

これにより stdio ベースの MCP サーバーが起動します。このサーバーは、Claude Desktop または stdio 通信に対応した任意の MCP クライアントに接続できます。

外部ブラウザー認証を使用すると、ブラウザーウィンドウが自動的に開き、Snowflake アカウントへのログインを求められます。

Claude Desktop との連携
  1. Claude Desktop で、「設定」→「MCP サーバー」に移動します

  2. uv 実行ファイルのフルパスを指定して、新しいサーバーを追加します。

    "snowflake-mcp-server": {
       "command": "uv",
       "args": [
          "--directory",
          "/<path-to-code>/snowflake-mcp-server",
          "run",
          "snowflake-mcp"
       ]
    }
    

    または、stdio トランスポートを明示的に指定します。

    "snowflake-mcp-server": {
       "command": "uv",
       "args": [
          "--directory",
          "/<path-to-code>/snowflake-mcp-server",
          "run",
          "snowflake-mcp-stdio"
       ]
    }
    
  3. ターミナルで which uv を実行すると、uv のパスを確認できます

  4. サーバーの設定を保存します

クエリの例

Claude と一緒に使用する場合、次のような質問ができます。

  • 「Snowflake アカウント内のデータベースをすべて一覧表示できますか?」
  • 「MARKETING データベース内のビューをすべて一覧表示して」
  • 「SALES データベースにある CUSTOMER_ANALYTICS ビューの構造を説明して」
  • 「FINANCE データベースにある REVENUE_BY_REGION ビューのサンプルデータを見せて」
  • 「次の SQL クエリを実行して:SELECT customer_id, SUM(order_total) as total_spend FROM SALES.ORDERS GROUP BY customer_id ORDER BY total_spend DESC LIMIT 10」
  • 「MARKETING データベースをクエリして、コンバージョン率が高いキャンペーンのトップ 5 を見つけて」
  • 「SALES.CUSTOMER_METRICS と MARKETING.CAMPAIGN_RESULTS をクエリして、異なるデータベースのビューのデータを比較して」
設定

接続プーリングの動作は、環境変数で設定できます。

  • SNOWFLAKE_CONN_REFRESH_HOURS:接続を更新する間隔(時間単位、デフォルト:8)

.env 設定例:

# Set connection to refresh every 4 hours
SNOWFLAKE_CONN_REFRESH_HOURS=4

認証方法

秘密鍵認証

この方法では、サービスアカウントと秘密鍵を使用して、対話を必要としない認証を行います。自動化されたプロセスに最適です。

  1. Snowflake のドキュメントに従って、Snowflake ユーザー用のキーペアを作成します
  2. .env ファイルで SNOWFLAKE_AUTH_TYPE=private_key を設定します
  3. SNOWFLAKE_PRIVATE_KEY_PATH に秘密鍵のパスを指定します
外部ブラウザー認証

この方法では、対話型認証のためにブラウザーウィンドウが開きます。

  1. .env ファイルで SNOWFLAKE_AUTH_TYPE=external_browser を設定します
  2. サーバーを起動すると、ログインを求めるブラウザーウィンドウが開きます
  3. 認証後、Snowflake アカウントの設定で指定された期間、セッションが有効になります

セキュリティに関する考慮事項

このサーバーは次の処理を行います。

  • 読み取り専用操作を強制します(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH ステートメントのみ許可されます)
  • 大きな結果セットを防ぐため、LIMIT 句を自動的に追加します
  • Snowflake への接続に安全な認証方法を使用します
  • SQL インジェクションを防ぐため、入力を検証します

⚠️ 重要:.env ファイルは安全に保管し、バージョン管理に絶対にコミットしないでください。.gitignore ファイルでは、このファイルが除外されるように設定されています。

開発

静的型チェック
mypy mcp_server_snowflake/
リンティング
ruff check .
フォーマット
ruff format .
テストの実行
pytest

コントリビューション

コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。

技術的な詳細

このプロジェクトでは、次のものを使用します。

コメント

MCP は初めてですか?

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

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