この記事では、Azure AI Foundry でデプロイしたAzure OpenAI Service のモデルを、Python コードでCData MCP Server と連携させる方法を解説します。
前提条件
Azure アカウント
Python 環境
CData MCP Server のインストール
1. Azure AI Foundryでモデルをデプロイ
まず、Azure AI Foundry で使用したいAI モデルをデプロイします。詳細な手順については、Microsoftの公式ドキュメントを参照してください。
デプロイ後、以下の情報をメモしておきます。
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?」に対する応答が返ってきます。

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 のアプリのデータが返ってきます。

コードの解説
スキーマ変換関数
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 ソリューションを構築できます。