【MCP Server】LlamaIndex からAmazon Athena のデータに連携しよう!
LlamaIndex は、LLM アプリケーションを構築するためのデータフレームワークです。エージェントや RAG パイプライン、外部データをもとに推論する構造化ワークフローなどを開発できます。LlamaIndex と CData Connect AI を組み込みの MCP Server を通じて統合すれば、カスタムコネクタを書くことなく、エージェントがライブの Amazon Athena のデータ をネイティブツールとして検出・クエリできるようになります。
CData Connect AI は、Amazon Athena をはじめとするさまざまなデータソースに接続できる、セキュアでローコードな環境を提供します。複雑な ETL を必要とせず、リアルタイムデータを使ったビジネスアプリケーション間のシームレスな自動化を実現します。
この記事では、CData Connect AI での Amazon Athena 接続の設定、LlamaIndex への MCP サーバーの登録、そして Amazon Athena のデータ をリアルタイムでクエリする ReAct エージェントの構築方法をご紹介します。
前提条件
- CData Connect AI のアカウント
- Python バージョン 3.10 以上(LlamaIndex パッケージをインストールするため)
- OpenAI API キーを生成して保存
- システムに Visual Studio Code をインストール
Amazon Athena データ連携について
CData は、Amazon Athena のライブデータにアクセスし、統合するための最も簡単な方法を提供します。お客様は CData の接続機能を以下の目的で使用しています:
- IAM 認証情報、アクセスキー、インスタンスプロファイルなど、さまざまな方法で安全に認証できます。多様なセキュリティニーズに対応し、認証プロセスを簡素化します。
- 詳細なエラーメッセージにより、セットアップを効率化し、問題を迅速に解決できます。
- サーバーサイドでのクエリ実行により、パフォーマンスを向上させ、クライアントリソースへの負荷を最小限に抑えます。
ユーザーは、Tableau、Power BI、Excel などの分析ツールと Athena を統合し、お気に入りのツールから詳細な分析を行うことができます。
CData を使用した Amazon Athena のユニークなユースケースについては、ブログ記事をご覧ください:https://jp.cdata.com/blog/amazon-athena-use-cases
はじめに
ステップ 1:LlamaIndex 用の Amazon Athena 接続を設定する
それでは早速、LlamaIndex から Amazon Athena にアクセスできるようにしていきましょう。まず、CData Connect AI で Amazon Athena 接続を作成します。この接続は、その後リモート MCP サーバーを通じて LlamaIndex に公開されます。
- Connect AI にログインし、「Sources」をクリックして「+ Add Connection」をクリックします
- 利用可能なデータソースから「Amazon Athena」を選択します
-
Amazon Athena に接続するために必要な認証情報を入力しましょう。
Amazon Athena 接続プロパティの取得・設定方法
それでは、早速Athena に接続していきましょう。
データに接続するには、以下の接続パラメータを指定します。
- DataSource:接続するAmazon Athena データソース。
- Database:接続するAmazon Athena データベース。
- AWSRegion:Amazon Athena データがホストされているリージョン。
- S3StagingDirectory:クエリの結果を保存するS3 フォルダ。
Database またはDataSource が設定されていない場合、CData 製品はAmazon Athena の利用可能なデータソースからすべてのデータベースのリスト化を試みます。そのため、両方のプロパティを設定することでCData 製品のパフォーマンスが向上します。
Amazon Athena の認証設定
CData 製品は幅広い認証オプションに対応しています。詳しくはヘルプドキュメントの「はじめに」を参照してみてください。
AWS キーを取得
IAM ユーザーの認証情報を取得するには、以下のステップお試しください。
- IAM コンソールにサインインします。
- ナビゲーションペインでユーザーを選択します。
- ユーザーのアクセスキーを作成または管理するには、ユーザーを選択してからセキュリティ認証情報タブに移動します。
AWS ルートアカウントの資格情報を取得するには、以下のステップをお試しください。
- ルートアカウントの認証情報を使用してAWS 管理コンソールにサインインします。
- アカウント名または番号を選択します。
- 表示されたメニューでMy Security Credentials を選択します。
- ルートアカウントのアクセスキーを管理または作成するには、Continue to Security Credentials をクリックし、[Access Keys]セクションを展開します。
その他の認証オプションについては、ヘルプドキュメントの「Amazon Athena への認証」を参照してください。
- 「Save & Test」をクリックします
- 認証が完了したら、Amazon Athena 接続の「Permissions」タブを開き、必要に応じてユーザーベースの権限を設定します
パーソナルアクセストークン(PAT)を生成する
LlamaIndex は、アカウントのメールアドレスとパーソナルアクセストークン(PAT)を使用して Connect AI に認証します。アクセス制御の粒度を維持するために、統合ごとに個別の PAT を作成することをおすすめします。
- Connect AI で、右上の歯車アイコンを選択して「Settings」を開きます
- 「Access Tokens」で、「Create PAT」を選択します
- トークンのわかりやすい名前を付けて、「Create」を選択します
- トークンをコピーして安全に保管してください。PAT は作成時にのみ表示されます
これで Amazon Athena 接続の設定と PAT の生成が完了しました。LlamaIndex から CData MCP サーバーを通じて Amazon Athena のデータ に接続する準備が整いました。
ステップ 2:LlamaIndex で MCP サーバーに接続する
続いて、LlamaIndex を CData Connect AI のリモート MCP サーバーに接続し、推論に OpenAI を使用していきましょう。MCP サーバーのエンドポイントと認証情報を
config.pyファイルで設定します。これらを設定することで、LlamaIndex の MCP ツールスペックが MCP サーバーツールを呼び出せるようになり、OpenAI が自然言語での推論を処理してくれます。
- LlamaIndex MCP プロジェクト用のフォルダを作成します
- フォルダ内に
config.py
とllamaindex_agent.py
の2つの Python ファイルを作成します config.py
で、MCP サーバーの URL と、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 エンコード版を作成できます。
llamaindex_agent.py
で、MCP ツールスペックと ReAct エージェントを設定します:""" LlamaIndex ReAct エージェントと CData Connect AI MCP サーバーを統合します。 このスクリプトは、MCP ツールを検出して LlamaIndex ツールとしてラップし、 OpenAI による推論で駆動されるエージェントループを実行します。 """ import asyncio from llama_index.tools.mcp import BasicMCPClient, McpToolSpec from llama_index.core.agent.workflow import ReActAgent from llama_index.llms.openai import OpenAI from config import Config async def main(): # Connect AI を指す MCP クライアントを初期化 mcp_client = BasicMCPClient( Config.MCP_BASE_URL, headers={"Authorization": f"Basic {Config.MCP_AUTH}"}, ) # MCP サーバーが公開するツール(getCatalogs、queryData など)を検出 tool_spec = McpToolSpec(client=mcp_client) tools = await tool_spec.to_tool_list_async() print("検出された MCP ツール:", [t.metadata.name for t in tools]) # ReAct ループを駆動する LLM を設定 llm = OpenAI( model="gpt-4o", temperature=0.2, api_key="YOUR_OPENAI_API_KEY", # https://platform.openai.com/ ) # MCP ツールを使用するエージェントを構築 agent = ReActAgent(tools=tools, llm=llm) user_prompt = "[rootadoname]1 で利用可能なテーブルはいくつありますか?" # 必要に応じて変更してください print(f" ユーザープロンプト: {user_prompt}") response = await agent.run(user_prompt) print("エージェントの最終応答:", response) if __name__ == "__main__": asyncio.run(main())
ステップ 3:LlamaIndex パッケージをインストールする
このワークフローでは LlamaIndex を CData Connect AI MCP サーバーおよび推論用の OpenAI と組み合わせて使用するため、必要な Python パッケージをインストールしていきましょう。
プロジェクトのターミナルで次のコマンドを実行してください。
pip install llama-index llama-index-tools-mcp llama-index-llms-openai
ステップ 4:LlamaIndex を使用して Amazon Athena にプロンプトを送信する(MCP サーバー経由)
- インストールが完了したら、
python llamaindex_agent.py
を実行してスクリプトを実行します - スクリプトは MCP サーバーに接続し、接続されたデータをクエリするために利用可能な CData Connect AI MCP ツールを検出します
- プロンプトを入力します(例:「Amazon Athena で利用可能なテーブルはいくつありますか?」)
- エージェントは利用可能なツールをもとに推論し、Amazon Athena に対して
queryData
を呼び出して、その結果を返します
CData Connect AI でビジネスシステムのデータ活用を今すぐスタート
いかがでしたか?LlamaIndex から Amazon Athena へのデータ接続が簡単に完了したのではないでしょうか。業務に使えそう、と感じてくださった方は、14 日間の無償トライアルで AI ツールからビジネスシステムへのリアルタイムデータ接続をぜひお試しください。