Azure OpenAI ServiceとCData MCP Serversを連携させる方法

by 浦邊信太郎 | December 6, 2025 | Last Updated: December 6, 2025

この記事では、Azure AI Foundry でデプロイしたAzure OpenAI Service のモデルを、Python コードでCData MCP Server と連携させる方法を解説します。

前提条件

  • Azure アカウント

  • Python 環境

  • CData MCP Server のインストール

1. Azure AI Foundryでモデルをデプロイ

まず、Azure AI Foundry で使用したいAI モデルをデプロイします。詳細な手順については、Microsoftの公式ドキュメントを参照してください。

デプロイ後、以下の情報をメモしておきます。

  • エンドポイントURL

  • APIキー

  • デプロイメント名

2. Python環境のセットアップ

仮想環境の作成とアクティベート

python -m venv venv
venv\Scripts\activate

必要なパッケージのインストール

pip install openai
pip install mcp

3. 基本的な接続テスト

まず、Azure OpenAI Serviceへの接続を確認します。Azure AI Foundryのサンプルコードを参考に、以下のようなシンプルなスクリプトを作成して実行してみましょう。

from openai import OpenAI

client = OpenAI(
    base_url="",
    api_key=""
)

completion = client.chat.completions.create(
    model=deployment_name,
    messages=[
        {
            "role": "user",
            "content": "What is the capital of France?",
        }
    ],
    temperature=0.7,
)

print(response.choices[0].message.content)

これを実行すると、以下のようにコード上に設定されたプロンプト「What is the capital of France?」に対する応答が返ってきます。

Azure OpenAI ServiceとCData MCP Serverを連携させる方法

4. MCP Serverとの連携実装

次に、CData kintone MCP Serverと連携するコードを実装します。このコードでは1回のみMCP Server のツールを呼び出します。そのため「kintoneのProductsテーブルのデータを一回のツール呼び出しで取得して。」というプロンプトを送信してkintone アプリからのデータ取得を試みます。

import asyncio
from openai import OpenAI
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
import json

endpoint = ""
deployment_name = "gpt-4.1-mini"
api_key = ""

def convert_mcp_schema_to_openai(schema):
    # MCPのスキーマをOpenAI Function Calling形式に変換
    if schema is None:
        return {
            "type": "object",
            "properties": {},
            "required": []
        }
    
    if isinstance(schema, dict) and schema.get("type") == "object":
        return schema
    
    return {
        "type": "object",
        "properties": {},
        "required": []
    }

async def main():
    openai_client = OpenAI(
        base_url=endpoint,
        api_key=api_key
    )

    # CData MCP Serverのパラメータ設定
    server_params = StdioServerParameters(
        command="C:\\Program Files\\CData\\CData MCP Server for Kintone 2025\\jre\\bin\\java.exe",
        args=[
            "-Dfile.encoding=UTF-8",
            "-jar",
            "C:\\Program Files\\CData\\CData MCP Server for Kintone 2025\\lib\\cdata.mcp.kintone.jar",
            "kintone_dev"
        ]
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # MCPサーバーを初期化
            await session.initialize()
            
            # 利用可能なツールを取得
            tools_list = await session.list_tools()

            # ユーザーメッセージ
            messages = [
                {
                    "role": "user",
                    "content": "kintoneのProductsテーブルのデータを一回のツール呼び出しで取得して。"
                }
            ]
            
            # MCPツールをOpenAI形式に変換
            tools = []
            for tool in tools_list.tools:
                tool_def = {
                    "type": "function",
                    "function": {
                        "name": tool.name,
                        "description": tool.description or "No description provided",
                        "parameters": convert_mcp_schema_to_openai(tool.inputSchema)
                    }
                }
                tools.append(tool_def)

            # Azure OpenAI APIを呼び出し
            response = openai_client.chat.completions.create(
                model=deployment_name,
                messages=messages,
                tools=tools
            )

            # ツール呼び出しを処理
            if response.choices[0].message.tool_calls:
                for tool_call in response.choices[0].message.tool_calls:
                    try:
                        arguments = json.loads(tool_call.function.arguments)
                        result = await session.call_tool(
                            tool_call.function.name,
                            arguments
                        )
                        
                        print(f"結果: {result.content}")
                    except Exception as e:
                        print(f"ツール実行エラー: {e}")
            else:
                print("ツール呼び出しなし")
                print(f"応答: {response.choices[0].message.content}")

asyncio.run(main())

これを実行すると、以下のようにkintone のアプリのデータが返ってきます。

Azure OpenAI ServiceとCData MCP Serverを連携させる方法

コードの解説

スキーマ変換関数

convert_mcp_schema_to_openai関数は、MCP Serverのツールスキーマを、Azure OpenAI のFunction Calling 形式に変換します。

MCP Serverの初期化

StdioServerParametersでCData MCP Serverのパスと引数を指定し、stdio_clientで接続を確立します。

ツールの取得と変換

session.list_tools()でMCP Serverから利用可能なツール一覧を取得し、OpenAI形式に変換してAPIに渡します。

ツール呼び出しの実行

Azure OpenAIがツール呼び出しを返した場合、session.call_tool()でMCP Serverのツールを実行し、結果を取得します。

まとめ

Python コードを使ったAI 連携の最大の利点は、既存のGUI ツールの制約を受けずに、自由度の高い実装が可能になることです。この実装により、Azure OpenAI Service とCData MCP Servers を組み合わせて、自然言語によるデータベース操作やSaaS 連携を実現できます。Python コードで直接制御することで、例えばツール呼び出しの前後に独自の処理を挿入する、複数のMCP Server を組み合わせた複雑なワークフローを構築する、エラーハンドリングやログ記録などの業務要件に応じた実装、といった柔軟なカスタマイズが可能になります。

CData MCP Servers は、kintone 以外にもSalesforce、Google Drive、MySQL など、さまざまなデータソースに対応しています。Python コードベースのアプローチにより、これらを自由に組み合わせて、企業の具体的な業務要件に合わせたAI ソリューションを構築できます。