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

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

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

CData Connect AI は、NetSuite のデータに接続するための専用クラウド間インターフェースを提供します。CData Connect AI Remote MCP Server により、Google ADK エージェントと NetSuiteの間でセキュアな通信が可能になります。これにより、ネイティブ対応データベースへのデータレプリケーションを必要とせずに、エージェントから NetSuite のデータの読み取りや操作を実行できます。CData Connect AIは最適化されたデータ処理機能を備えており、フィルタや JOIN を含むサポート対象のすべての SQL 操作を効率的に NetSuiteへ直接送信します。サーバーサイド処理を活用することで、要求されたNetSuite のデータ を迅速に取得できます。

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

NetSuite データ連携について

CData は、Oracle NetSuite のライブデータにアクセスし、統合するための最も簡単な方法を提供します。お客様は CData の接続機能を以下の目的で使用しています:

  • Standard、CRM、OneWorld を含む、すべてのエディションの NetSuite にアクセスできます。
  • SuiteTalk API(SOAP ベース)のすべてのバージョンと、SQL のように機能し、より簡単なデータクエリと操作を可能にする SuiteQL に接続できます。
  • Saved Searches のサポートにより、事前定義されたレポートとカスタムレポートにアクセスできます。
  • トークンベースおよび OAuth 2.0 で安全に認証でき、あらゆるユースケースで互換性とセキュリティを確保します。
  • SQL ストアドプロシージャを使用して、ファイルのアップロード・ダウンロード、レコードや関連付けのアタッチ・デタッチ、ロールの取得、追加のテーブルやカラム情報の取得、ジョブ結果の取得などの機能的なアクションを実行できます。

お客様は、Power BI や Excel などのお気に入りの分析ツールからライブ NetSuite データにアクセスするために CData ソリューションを使用しています。また、CData Sync を直接使用するか、Azure Data Factory などの他のアプリケーションとの CData の互換性を活用して、NetSuite データを包括的なデータベースやデータウェアハウスに統合しています。CData は、Oracle NetSuite のお客様が NetSuite からデータを取得し、NetSuite にデータをプッシュするアプリを簡単に作成できるよう支援し、他のソースからのデータを NetSuite と統合することを可能にしています。

当社の Oracle NetSuite ソリューションの詳細については、ブログをご覧ください:Drivers in Focus Part 2: Replicating and Consolidating ... NetSuite Accounting Data


はじめに


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

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

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

    NetSuiteへの接続

    NetSuite では、2種類のAPI でデータにアクセスできます。どちらのAPI を使用するかは、Schema 接続プロパティで以下のいずれかを選択して指定してください。

    • SuiteTalk は、NetSuite との通信に使用されるSOAP ベースの従来から提供されているサービスです。幅広いエンティティをサポートし、INSERT / UPDATE / DELETE の操作も対応しています。ただし、SuiteQL API と比べるとデータの取得速度が劣ります。また、サーバーサイドでのJOIN に対応していないため、これらの処理はCData 製品がクライアントサイドで実行します。
    • SuiteQL は、より新しいAPI です。JOIN、GROUP BY、集計、カラムフィルタリングをサーバーサイドで処理できるため、SuiteTalk よりもはるかに高速にデータを取得できます。ただし、NetSuite データへのアクセスは読み取り専用となります。

    データの取得のみが目的でしたらSuiteQL をお勧めします。データの取得と変更の両方が必要な場合は、SuiteTalk をお選びください。

    NetSuite への認証

    CData 製品では、以下の認証方式がご利用いただけます。

    • トークンベース認証(TBA)はOAuth1.0に似た仕組みです。2020.2以降のSuiteTalk とSuiteQL の両方で利用できます。
    • OAuth 2.0 認証(OAuth 2.0 認可コードグラントフロー)は、SuiteQL でのみご利用いただけます。
    • OAuth JWT 認証は、OAuth2.0 クライアント認証フローの一つで、クライアント認証情報を含むJWT を使用してNetSuite データへのアクセスを要求します。

    トークンベース認証(OAuth1.0)

    トークンベース認証(TBA)は、基本的にOAuth 1.0 の仕組みです。この認証方式はSuiteTalk とSuiteQL の両方でサポートされています。管理者権限をお持ちの方がNetSuite UI 内でOAuthClientId、OAuthClientSecret、OAuthAccessToken、OAuthAccessTokenSecret を直接作成することで設定できます。 NetSuite UI でのトークン作成手順については、ヘルプドキュメントの「はじめに」セクションをご参照ください。

    アクセストークンを作成したら、以下の接続プロパティを設定して接続してみましょう。

    • AuthScheme = Token
    • AccountId = 接続先のアカウント
    • OAuthClientId = アプリケーション作成時に表示されるコンシューマーキー
    • OAuthClientSecret = アプリケーション作成時に表示されるコンシューマーシークレット
    • OAuthAccessToken = アクセストークン作成時のトークンID
    • OAuthAccessTokenSecret = アクセストークン作成時のトークンシークレット

    その他の認証方法については、ヘルプドキュメントの「はじめに」をご確認ください。

  4. 「Create & Test」をクリックします
  5. 「Add NetSuite Connection」ページの「Permissions」タブに移動し、ユーザーベースの権限を更新します。

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

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

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

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

ステップ 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 を通じてNetSuite データにアクセスできるデータクエリアシスタントです。
    
                ユーザーが[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. 自然言語クエリを使用してNetSuite とやり取りを開始してください。これで、OpenAI アシスタントは CData Connect AI MCP Server を通じてNetSuite にアクセスできるようになりました。

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

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

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

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

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

ユースケース例

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

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

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

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

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

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

高度な機能

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

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

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

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

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

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

無料トライアル お問い合わせ