【MCP Server】LangChain からMicrosoft Dataverse のデータに連携しよう!
LangChain は、開発者やデータエンジニア、AI 実践者が LLM、ツール、API、データコネクタを組み合わせて AI 活用アプリケーションやワークフローを構築するためのフレームワークです。LangChain と CData Connect AI を組み込みの MCP Server を通じて統合することで、ワークフローからライブの Microsoft Dataverse にリアルタイムで簡単にアクセスして対話できるようになります。
CData Connect AI は、Microsoft Dataverse のデータに接続するための専用クラウド間インターフェースを提供します。CData Connect AI Remote MCP Server により、Google ADK エージェントと Microsoft Dataverseの間でセキュアな通信が可能になります。これにより、ネイティブ対応データベースへのデータレプリケーションを必要とせずに、エージェントから Microsoft Dataverse のデータの読み取りや操作を実行できます。CData Connect AIは最適化されたデータ処理機能を備えており、フィルタや JOIN を含むサポート対象のすべての SQL 操作を効率的に Microsoft Dataverseへ直接送信します。サーバーサイド処理を活用することで、要求されたMicrosoft Dataverse のデータ を迅速に取得できます。
この記事では、CData Connect AI での Microsoft Dataverse 接続の設定、LangChain への MCP サーバーの登録、そして Microsoft Dataverse をリアルタイムでクエリするワークフローの構築方法をご紹介します。
前提条件
- CData Connect AI のアカウント
- Python バージョン 3.10 以上(LangChain および LangGraph パッケージをインストールするため)
- OpenAI API キーを生成して保存
- システムに Visual Studio Code をインストール
Microsoft Dataverse データ連携について
CData は、Microsoft Dataverse(旧 Common Data Service)のライブデータにアクセスし、統合するための最も簡単な方法を提供します。お客様は CData の接続機能を以下の目的で使用しています:
- Dataverse エンティティと Dataverse システムテーブルの両方にアクセスし、必要なデータを正確に扱うことができます。
- Azure Active Directory、Azure マネージド サービス ID 認証情報、クライアントシークレットまたは証明書を使用した Azure サービスプリンシパルなど、さまざまな方法で Microsoft Dataverse に安全に認証できます。
- SQL ストアドプロシージャを使用して、Microsoft Dataverse エンティティを管理できます。エンティティ間の関連付けの一覧表示、作成、削除などが可能です。
CData のお客様は、データをデータウェアハウスにレプリケートしたい場合(他のデータソースと併せて)や、Microsoft エコシステム内のお気に入りのデータツール(Power BI、Excel など)または外部ツール(Tableau、Looker など)からライブ Dataverse データを分析したい場合など、さまざまな理由で当社の Dataverse 接続ソリューションを使用しています。
はじめに
ステップ 1:LangChain 用の Microsoft Dataverse 接続を設定する
それでは早速、LangChain から Microsoft Dataverse にアクセスできるようにしていきましょう。まず、CData Connect AI で Microsoft Dataverse 接続を作成します。この接続は、その後リモート MCP サーバーを通じて LangChain に公開されます。
- Connect AI にログインし、「Sources」をクリックして「+ Add Connection」をクリックします
- 利用可能なデータソースから「Microsoft Dataverse」を選択します
-
Microsoft Dataverse に接続するために必要な認証情報を入力しましょう。
ユーザー資格情報の接続プロパティを設定せずに接続できます。接続に最小限必要な接続プロパティは、以下のとおりです。
- InitiateOAuth: GETANDREFRESH に設定します。
- OrganizationUrl: 接続先の組織のURL、例えばhttps://organization.crm.dynamics.com などに設定。
- Tenant (optional): デフォルトと異なるテナントに認証したい場合は、これを設定します。これは、デフォルトのテナントに所属していない組織と連携するために必要です。
接続すると、CData 製品はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、CData 製品にアクセス許可を与えます。CData 製品がOAuth プロセスを完了します。
- 「Create & Test」をクリックします
- 認証が完了したら、Microsoft Dataverse 接続の「Permissions」タブを開き、必要に応じてユーザーベースの権限を設定します
パーソナルアクセストークン(PAT)を生成する
LangChain は、アカウントのメールアドレスとパーソナルアクセストークン(PAT)を使用して Connect AI に認証します。アクセス制御の粒度を維持するために、統合ごとに個別の PAT を作成することをおすすめします。
- Connect AI で、右上の歯車アイコンを選択して「Settings」を開きます
- 「Access Tokens」で、「Create PAT」を選択します
- トークンのわかりやすい名前を付けて、「Create」を選択します
- トークンをコピーして安全に保管してください。PAT は作成時にのみ表示されます
これで Microsoft Dataverse 接続の設定と PAT の生成が完了しました。LangChain から CData MCP サーバーを通じて Microsoft Dataverse に接続する準備が整いました。
注: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 を使用して Microsoft Dataverse にプロンプトを送信する(MCP サーバー経由)
- インストールが完了したら、
python langchain.py
を実行してスクリプトを実行します - スクリプトは MCP サーバーに接続し、接続されたデータをクエリするために利用可能な CData Connect AI MCP ツールを検出します
- プロンプトを入力します(例:「Microsoft Dataverse で利用可能なテーブルはいくつありますか?」)
- それに応じて、エージェントが結果を返します
CData Connect AI でビジネスシステムのデータ活用を今すぐスタート
いかがでしたか?LangChain から Microsoft Dataverse へのデータ接続が簡単に完了したのではないでしょうか。業務に使えそう、と感じてくださった方は、14 日間の無償トライアルで AI ツールからビジネスシステムへのリアルタイムデータ接続をぜひお試しください。