【MCP Server】OpenAI のPython SDK からPingOne のデータと連携しよう!

加藤龍彦
加藤龍彦
デジタルマーケティング
CData Connect AI のリモートMCP Server で OpenAI Python アプリからPingOne へのリアルタイムアクセスを実現。自然言語でデータ探索・分析できる AI アシスタントを構築できます。

OpenAI の Python SDK は、さまざまなデータソースとやり取りできるAI アプリケーションを構築するための強力な機能を提供しています。CData Connect AI のリモートMCP と組み合わせることで、自然言語クエリを通じてPingOne とリアルタイムでやり取りできるインテリジェントなチャットアプリケーションを構築できます。この記事では、Connect AI のリモートMCP を使用してPingOne に接続し、会話型AI を通じてPingOne とやり取りする OpenAI API 対応のPython アプリケーションを作成する方法をご紹介します。

CData Connect AI は、PingOneを含む数百のデータソースをMCP経由でAIツールにつなげるクラウドサービスです。接続情報はConnect AI側で一元管理されるため、OpenAI エージェントにPingOneの認証情報を直接渡すことなくセキュアに連携できます。

この記事では、自然言語を使用してデータを会話形式で探索(Vibe Query)できる OpenAI 対応 Python アプリケーションの設定方法をご紹介します。Connect AI を使用すれば、PingOne に加えて、数百の他のデータソースにもアクセスできる AI アシスタントを構築できます。

ステップ 1:OpenAI アプリケーション用の PingOne 接続を設定する

OpenAI アプリケーションからPingOne への接続は、CData Connect AI のリモートMCP を通じて実現されます。OpenAI アシスタントからPingOne とやり取りするために、まず CData Connect AI で PingOne 接続を作成・設定していきましょう。

  1. Connect AI にログインし、「Sources」をクリックして、「Add Connection」をクリックします。
  2. 接続の追加
  3. 「Add Connection」パネルから「PingOne」を選択します
  4. データソースの選択
  5. PingOne に接続するために必要な認証プロパティを入力します。

    PingOne に接続するには以下のプロパティを設定します。

    • Region:自身のPingOne 組織のデータがホスティングされている地域。
    • AuthScheme:PingOne に接続する際に使用する認証の種類。
    • WorkerAppEnvironmentId (デフォルトのPingOne ドメインを使用する場合に必要)、またはAuthorizationServerURL のいずれかで、下で説明するように設定します。

    WorkerAppEnvironmentId の設定

    WorkerAppEnvironmentId は、Worker アプリケーションが存在するPingOne 環境のID です。 このパラメータは、環境がデフォルトのPingOne ドメイン(auth.pingone)を利用している場合のみ使用されます。 これは、ヘルプドキュメントのカスタムOAuth アプリケーションの作成で説明するように、PingOne への認証に使用するカスタムOAuth アプリケーションを作成した後に設定します。

    はじめに、このプロパティの値を見つけます。

    1. 自身のPingOne 組織のホームページからナビゲーションサイドバーに移動し、Environments をクリックします。
    2. OAuth / Worker のカスタムアプリケーションを作成した環境(通常はAdministrators)を見つけ、Manage Environment をクリックします。 環境のホームページが表示されます。
    3. 環境のホームページのナビゲーションサイドバーで、Applications をクリックします。
    4. リストから、OAuth またはWorker アプリケーションの詳細を見つけます。
    5. Environment ID フィールドの値をコピーします。 以下の例に似たものになるはずです:
      WorkerAppEnvironmentId='11e96fc7-aa4d-4a60-8196-9acf91424eca'

    次に、WorkerAppEnvironmentId をEnvironment ID フィールドの値に設定します。

    AuthorizationServerURL の設定

    AuthorizationServerURL は、お使いのアプリケーションが配置されている環境のPingOne 認可サーバーのベースURL です。 このプロパティは、PingOne プラットフォームAPI ドキュメントで説明されているように、環境にカスタムドメインを設定した場合にのみ使用されます。 Custom Domains を参照してください。

    OAuth でのPingOne への認証

    PingOne はOAuth とOAuthClient 認証の両方をサポートしています。 上述の設定手順に加え、OAuth またはOAuthCliet 認証をサポートするために、さらに2つの手順を完了する必要があります。

    • ヘルプドキュメントのカスタムOAuth アプリケーションの作成で説明するように、カスタムOAuth アプリケーションを作成して設定します。
    • ドライバーがデータモデル内のエンティティにアクセスできるようにするには、ヘルプドキュメントのAdministrator Roles での説明のとおり、使用するアドミンユーザー / ワーカーアプリケーションに対して正しいロールを設定していることを確認してください。
    • 以下のサブセクションで説明されているように、選択した認証スキームと認証フローに適切なプロパティを設定します。

    OAuth(認可コードグラント)

    AuthScheme をOAuth に設定します。

    デスクトップアプリケーション

    OAuth アクセストークンの取得およびリフレッシュ

    以下を設定して、接続してください。

    • InitiateOAuth:GETANDREFRESH。繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要をなくすには、InitiateOAuth を使用します。
    • OAuthClientId:カスタムOAuth アプリケーションを作成した際に取得したClient ID。
    • OAuthClientSecret:カスタムOAuth アプリケーションを作成した際に取得したClient Secret。
    • CallbackURL:カスタムOAuth アプリケーションの登録時に定義したリダイレクトURI。例:https://localhost:3333

    接続すると、CData 製品 はデフォルトブラウザでPingOne のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。 ドライバーはこれでOAuth プロセスを完了します。

    1. ドライバーはPingOne からアクセストークンを取得し、それを使ってデータをリクエストします。
    2. OAuth 値はOAuthSettingsLocation で指定された場所に保存され、接続間で永続化されるようにします。

    ドライバーはアクセストークンの期限が切れると自動的にリフレッシュします。

    Web アプリケーションやヘッドレスマシン、クライアントクレデンシャルグラントを含むその他のOAuth メソッドについては、ヘルプドキュメントを参照してください。

    接続の設定(Salesforce の例)
  6. 「Create & Test」をクリックします
  7. 「Add PingOne Connection」ページの「Permissions」タブに移動し、ユーザーベースの権限を更新します。 権限の更新

パーソナルアクセストークンの追加

パーソナルアクセストークン(PAT)は、OpenAI アプリケーションから Connect AI への接続を認証するために使用されます。アクセス制御の粒度を維持するために、サービスごとに個別のPAT を作成することをおすすめします。

  1. Connect AI アプリの右上にある歯車アイコン()をクリックして、設定ページを開きます。
  2. 設定ページの「Access Tokens」セクションに移動し、「Create PAT」をクリックします。
  3. PAT に名前を付けて「Create」をクリックします。 新しい PAT の作成
  4. パーソナルアクセストークンは作成時にのみ表示されますので、必ずコピーして安全な場所に保管してください。

これで接続の設定とPAT の生成が完了しました。OpenAI アプリケーションからPingOne に接続する準備が整いました。

ステップ 2:CData Connect AI 用にOpenAI Python アプリケーションを設定する

以下の手順に従って、CData Connect AI に接続するように OpenAI Python アプリケーションを設定していきましょう。事前構築済みのエージェントをこちらから使用できます。または、以下の手順に従って独自のエージェントを作成することもできます。

  1. Python 3.8 以上がインストールされていることを確認し、必要な依存関係をインストールします。
    pip install openai python-dotenv httpx
  2. GitHub から OpenAI MCP クライアントをクローンまたはダウンロードします。
    git clone https://github.com/CDataSoftware/openai-mcp-client.git
    cd openai-mcp-client
  3. 環境変数を設定します。プロジェクトのルートに .env ファイルを作成し、以下の変数を設定します:
    
    OPENAI_API_KEY=YOUR_OPENAI_API_KEY
    MCP_SERVER_URL=https://mcp.cloud.cdata.com/mcp
    MCP_USERNAME=YOUR_EMAIL
    MCP_PASSWORD=YOUR_PAT
    OPENAI_MODEL=gpt-4
        
    YOUR_OPENAI_API_KEY を OpenAI API キーに、YOUR_EMAIL を Connect AI のメールアドレスに、YOUR_PAT をステップ 1 で作成したパーソナルアクセストークンに置き換えてください。
  4. 独自のアプリケーションを作成する場合は、CData Connect AI MCP Server に接続するための中核となる実装は以下のとおりです。
    
    import os
    import asyncio
    import base64
    from dotenv import load_dotenv
    from mcp_client import MCPServerStreamableHttp, MCPAgent
    
    # 環境変数を読み込む
    load_dotenv()
    
    async def main():
        """[service] データとやり取りするためのメインチャットループ"""
        # 設定を取得
        api_key = os.getenv('OPENAI_API_KEY')
        mcp_url = os.getenv('MCP_SERVER_URL', 'https://mcp.cloud.cdata.com/mcp')
        username = os.getenv('MCP_USERNAME', '')
        password = os.getenv('MCP_PASSWORD', '')
        model = os.getenv('OPENAI_MODEL', 'gpt-4')
    
        # MCP サーバー用の認証ヘッダーを作成
        headers = {}
        if username and password:
            auth = base64.b64encode(f"{username}:{password}".encode()).decode()
            headers = {"Authorization": f"Basic {auth}"}
    
        # CData MCP Server に接続
        async with MCPServerStreamableHttp(
            name="CData MCP Server",
            params={
                "url": mcp_url,
                "headers": headers,
                "timeout": 30,
                "verify_ssl": True
            }
        ) as mcp_server:
    
            #[service] データにアクセスできる AI エージェントを作成
            agent = MCPAgent(
                name="data_assistant",
                model=model,
                mcp_servers=[mcp_server],
                instructions="""あなたは CData Connect AI を通じてPingOne データにアクセスできるデータクエリアシスタントです。
    
                ユーザーが[service] をリアルタイムで探索・クエリできるようサポートしてください。
                利用可能な MCP ツールを使用して以下を実行できます:
                - 利用可能なデータベースとスキーマの一覧表示
                - テーブル構造の探索
                - SQL クエリの実行
                - データに関する洞察の提供
    
                実行内容を常に説明し、結果を明確にフォーマットしてください。""",
                api_key=api_key
            )
    
            await agent.initialize()
            print(f"接続完了!{len(agent._tools_cache)} 個のツールが利用可能です。")
            print("
    [service] と会話してみましょう(終了するには 'exit' と入力):
    ")
    
            # 対話型チャットループ
            conversation = []
            while True:
                user_input = input("あなた: ")
                if user_input.lower() in ['exit', 'quit']:
                    break
    
                conversation.append({"role": "user", "content": user_input})
    
                print("アシスタント: ", end="", flush=True)
                response = await agent.run(conversation)
                print(response["content"])
    
                conversation.append({"role": "assistant", "content": response["content"]})
    
    if __name__ == "__main__":
        asyncio.run(main())
        
  5. OpenAI アプリケーションを実行します:
    python client.py
  6. 自然言語クエリを使用してPingOne とやり取りを開始してください。これで、OpenAI アシスタントは CData Connect AI MCP Server を通じてPingOne にアクセスできるようになりました。

ステップ 3:ライブPingOne データへのアクセスを備えたインテリジェントアプリケーションを構築する

OpenAI Python アプリケーションを設定して CData Connect AI に接続できたので、自然言語を使用してPingOne とやり取りする高度な AI アシスタントを構築できます。MCP 統合により、OpenAI の高度な言語モデルを通じて、アプリケーションに強力なデータアクセス機能が提供されます。

アシスタントで使用可能な MCP ツール

OpenAI アシスタントは、以下の CData Connect AI MCP ツールにアクセスできます:

  • queryData:接続されたデータソースに対して SQL クエリを実行
  • execData:ストアドプロシージャを実行
  • getCatalogs:利用可能なデータベース接続を取得
  • getSchemas:特定のカタログのデータベーススキーマを一覧表示
  • getTables:スキーマ内のテーブルを一覧表示
  • getColumns:特定のテーブルの列情報を取得
  • getPrimaryKeys:プライマリキー情報を取得
  • getIndexes:テーブルのインデックス情報を取得
  • getProcedures:利用可能なストアドプロシージャを一覧表示

ユースケース例

ライブのPingOne アクセスを備えた OpenAI 対応アプリケーションでできることの例をいくつかご紹介します:

  • 会話型分析:自然言語を使用して複雑なビジネスの質問に答えるチャットインターフェースを構築
  • 自動化レポート:リアルタイムデータクエリに基づいて動的なレポートとサマリーを生成
  • データディスカバリーアシスタント:SQL の知識がなくてもデータ構造を探索・理解できるようユーザーをサポート
  • インテリジェントデータモニター:トレンドや異常を積極的に特定する AI アシスタントを作成
  • カスタムクエリビルダー:会話型のやり取りを通じて複雑なクエリを作成できるように

アシスタントとのやり取り

実行すると、自然言語を通じて OpenAI アシスタントとやり取りできます。クエリの例:

  • 「利用可能なすべてのデータベースを表示して」
  • 「sales データベースにはどんなテーブルがある?」
  • 「売上トップ 10 の顧客をリストアップして」
  • 「先月のすべての注文を検索して」
  • 「過去四半期の売上トレンドを分析して」
  • 「customer テーブルの構造は?」

OpenAI アシスタントは、これらの自然言語クエリを自動的に適切な SQL クエリに変換し、CData Connect AI MCP Server を通じてPingOne データに対して実行します。複雑な SQL を記述したり、基盤となるデータ構造を理解したりすることなく、インテリジェントな洞察を提供できます。

高度な機能

OpenAI MCP 統合は、以下の高度な機能をサポートしています:

  • コンテキスト認識:アシスタントは会話のコンテキストを維持し、フォローアップ質問に対応
  • マルチターン会話:反復的な対話を通じて複雑なクエリを構築
  • インテリジェントエラー処理:クエリで問題が発生した場合に役立つ提案を提供
  • データインサイト:GPT の分析機能を活用してパターンやトレンドを特定
  • 柔軟なフォーマット:さまざまな形式(テーブル、サマリー、JSON など)で結果をリクエスト

CData Connect AI でビジネスシステムのデータ活用を今すぐスタート

いかがでしたか?OpenAI からPingOne へのデータ接続が簡単に完了したのではないでしょうか。業務に使えそう、と感じてくださった方は、14 日間の無償トライアルで AI ツールからビジネスシステムへのリアルタイムデータ接続をぜひお試しください。

はじめる準備はできましたか?

CData Connect AI の詳細、または無料トライアルにお申し込みください:

無料トライアル