【MCP Server】LangChain からSnowflake のデータに連携しよう!
LangChain は、開発者やデータエンジニア、AI 実践者が LLM、ツール、API、データコネクタを組み合わせて AI 活用アプリケーションやワークフローを構築するためのフレームワークです。LangChain と CData Connect AI を組み込みの MCP Server を通じて統合することで、ワークフローからライブの Snowflake にリアルタイムで簡単にアクセスして対話できるようになります。
CData Connect AI は、Snowflake のデータに接続するための専用クラウド間インターフェースを提供します。CData Connect AI Remote MCP Server により、Google ADK エージェントと Snowflakeの間でセキュアな通信が可能になります。これにより、ネイティブ対応データベースへのデータレプリケーションを必要とせずに、エージェントから Snowflake のデータの読み取りや操作を実行できます。CData Connect AIは最適化されたデータ処理機能を備えており、フィルタや JOIN を含むサポート対象のすべての SQL 操作を効率的に Snowflakeへ直接送信します。サーバーサイド処理を活用することで、要求されたSnowflake のデータ を迅速に取得できます。
この記事では、CData Connect AI での Snowflake 接続の設定、LangChain への MCP サーバーの登録、そして Snowflake をリアルタイムでクエリするワークフローの構築方法をご紹介します。
前提条件
- CData Connect AI のアカウント
- Python バージョン 3.10 以上(LangChain および LangGraph パッケージをインストールするため)
- OpenAI API キーを生成して保存
- システムに Visual Studio Code をインストール
Snowflake データ連携について
CData は、Snowflake のライブデータへのアクセスと統合を簡素化します。お客様は CData の接続機能を以下の目的で活用しています:
- Snowflake データを迅速かつ効率的に読み書きできます。
- 指定された Warehouse、Database、Schema のメタデータを動的に取得できます。
- OAuth、OKTA、Azure AD、Azure マネージド サービス ID、PingFederate、秘密鍵など、さまざまな方法で認証できます。
多くの CData ユーザーは、CData ソリューションを使用して、お気に入りのツールやアプリケーションから Snowflake にアクセスし、さまざまなシステムからデータを Snowflake にレプリケートして、包括的なウェアハウジングと分析を行っています。
CData ソリューションとの Snowflake 統合についての詳細は、ブログをご覧ください:https://jp.cdata.com/blog/snowflake-integrations
はじめに
ステップ 1:LangChain 用の Snowflake 接続を設定する
それでは早速、LangChain から Snowflake にアクセスできるようにしていきましょう。まず、CData Connect AI で Snowflake 接続を作成します。この接続は、その後リモート MCP サーバーを通じて LangChain に公開されます。
- Connect AI にログインし、「Sources」をクリックして「+ Add Connection」をクリックします
- 利用可能なデータソースから「Snowflake」を選択します
-
Snowflake に接続するために必要な認証情報を入力しましょう。
それでは、Snowflake データベースに接続していきましょう。認証に加えて、以下の接続プロパティを設定します。
- Url:お使いのSnowflake URL を指定します。例:https://orgname-myaccount.snowflakecomputing.com
- Legacy URL を使用する場合:https://myaccount.region.snowflakecomputing.com
- ご自身のURL は以下のステップで確認できます。
- Snowflake UI の左下にあるユーザー名をクリックします
- Account ID にカーソルを合わせます
- Copy Account URL アイコンをクリックして、アカウントURL をコピーします
- Database(オプション):CData 製品によって公開されるテーブルとビューを、特定のSnowflake データベースのものに制限したい場合に設定します
- Schema(オプション):CData 製品によって公開されるテーブルとビューを、特定のSnowflake データベーススキーマのものに制限したい場合に設定します
Snowflakeへの認証
CData 製品では、Snowflake ユーザー認証、フェデレーション認証、およびSSL クライアント認証をサポートしています。認証するには、User とPassword を設定し、AuthScheme プロパティで認証方法を選択してください。
キーペア認証
ユーザーアカウントに定義されたプライベートキーを使用してセキュアなトークンを作成し、キーペア認証で接続することも可能です。この方法で接続するには、AuthScheme をPRIVATEKEY に設定し、以下の値を設定してください。
- User:認証に使用するユーザーアカウント
- PrivateKey:プライベートキーを含む.pem ファイルへのパスなど、ユーザーに使用されるプライベートキー
- PrivateKeyType:プライベートキーを含むキーストアの種類(PEMKEY_FILE、PFXFILE など)
- PrivateKeyPassword:指定されたプライベートキーのパスワード
その他の認証方法については、ヘルプドキュメントの「Snowflakeへの認証」セクションをご確認ください。
- Url:お使いのSnowflake URL を指定します。例:https://orgname-myaccount.snowflakecomputing.com
- 「Create & Test」をクリックします
- 認証が完了したら、Snowflake 接続の「Permissions」タブを開き、必要に応じてユーザーベースの権限を設定します
パーソナルアクセストークン(PAT)を生成する
LangChain は、アカウントのメールアドレスとパーソナルアクセストークン(PAT)を使用して Connect AI に認証します。アクセス制御の粒度を維持するために、統合ごとに個別の PAT を作成することをおすすめします。
- Connect AI で、右上の歯車アイコンを選択して「Settings」を開きます
- 「Access Tokens」で、「Create PAT」を選択します
- トークンのわかりやすい名前を付けて、「Create」を選択します
- トークンをコピーして安全に保管してください。PAT は作成時にのみ表示されます
これで Snowflake 接続の設定と PAT の生成が完了しました。LangChain から CData MCP サーバーを通じて Snowflake に接続する準備が整いました。
注:Connect AI の「Integrations」セクションの「LangChain」から PAT を生成することもできます。「Connect」→「 Create PAT」をクリックするだけで生成できます。
ステップ 2:LangChain で MCP サーバーに接続する
続いて、LangChain をCData Connect AI のリモートMCP サーバー に接続していきましょう。推論に OpenAI(ChatGPT)を使用するには、MCP サーバーエンドポイントと認証情報を config.py ファイルで設定します。これらを設定することで、LangChain が MCP サーバーツールを呼び出せるようになり、OpenAI が自然言語での推論を処理してくれます。
- LangChain MCP 用のフォルダを作成します
- フォルダ内にconfig.py と langchain.py の2つの Python ファイルを作成します。
- config.py で、MCP サーバーの認証と URL を定義する Config クラスを作成します。Base64 エンコードされた CData Connect AI のユーザー名と PAT(前提条件で取得したもの)を指定する必要があります。
class Config: MCP_BASE_URL = "https://mcp.cloud.cdata.com/mcp" # MCP Server の URL MCP_AUTH = "base64encoded(EMAIL:PAT)" # Base64 エンコードされた Connect AI の Email:PAT注:Base64 エンコードツールを使用して、MCP_AUTH の Base64 エンコード版を作成できます。
- langchain.py で、MCP サーバーと MCP クライアントを設定して、ツールとプロンプトを呼び出します:
""" LangChain ReAct エージェントと CData Connect AI MCP サーバーを統合します。 このスクリプトは、ツールの取得、フィルタリング、LLM を使用したエージェントベースの推論を実行します。 """ import asyncio from langchain_mcp_adapters.client import MultiServerMCPClient from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent from config import Config async def main(): # 1 つ以上のサーバー URL で MCP クライアントを初期化 mcp_client = MultiServerMCPClient( connections={ "default": { # お好きな名前でOKです "transport": "streamable_http", "url": Config.MCP_BASE_URL, "headers": {"Authorization": f"Basic {Config.MCP_AUTH}"}, } } ) # サーバーによって公開されているリモート MCP ツールを読み込む all_mcp_tools = await mcp_client.get_tools() print("検出された MCP ツール:", [tool.name for tool in all_mcp_tools]) # ReAct スタイルのエージェントを作成して実行 llm = ChatOpenAI( model="gpt-4o", temperature=0.2, api_key="YOUR_OPEN_API_KEY" # ここに OpenAI API キーを使用します(https://platform.openai.com/ で確認できます) ) agent = create_react_agent(llm, all_mcp_tools) user_prompt = "[rootadoname]1 で利用可能なテーブルはいくつありますか?" # 必要に応じてプロンプトを変更してください print(f" ユーザープロンプト: {user_prompt}") # エージェントに MCP ツールを使用するように求めるプロンプトを送信 response = await agent.ainvoke( {"messages": [{"role": "user", "content": (user_prompt),}]} ) # エージェントの最終応答を出力 final_msg = response["messages"][-1].content print("エージェントの最終応答:", final_msg) if __name__ == "__main__": asyncio.run(main())
ステップ 3:LangChain と LangGraph パッケージをインストールする
それでは、LangChain を CData Connect AI MCP と組み合わせて使用し、推論に OpenAI を統合するために必要なPython パッケージをインストールしていきましょう。
プロジェクトのターミナルで次のコマンドを実行してください。
pip install langchain-mcp-adapters langchain-openai langgraph
ステップ 4:LangChain を使用して Snowflake にプロンプトを送信する(MCP サーバー経由)
- インストールが完了したら、
python langchain.py
を実行してスクリプトを実行します - スクリプトは MCP サーバーに接続し、接続されたデータをクエリするために利用可能な CData Connect AI MCP ツールを検出します
- プロンプトを入力します(例:「Snowflake で利用可能なテーブルはいくつありますか?」)
- それに応じて、エージェントが結果を返します
CData Connect AI でビジネスシステムのデータ活用を今すぐスタート
いかがでしたか?LangChain から Snowflake へのデータ接続が簡単に完了したのではないでしょうか。業務に使えそう、と感じてくださった方は、14 日間の無償トライアルで AI ツールからビジネスシステムへのリアルタイムデータ接続をぜひお試しください。