【後編】Azure上のDeepSeek V4×MCP Toolboxで実践!BigQueryとSQL Serverの自動データ分析&Wordレポート生成

皆さん、こんにちは。okamoです。

前回記事(前編)では、DeepSeek V4(DeepSeek-V4-Flash-0731)をAzure上にデプロイして動かす基本手順を紹介しました。

今回の【後編】では、アプリケーションからAzure上のDeepSeek V4に接続し、MCP(Model Context Protocol)を活用してデータベースからデータを取得・分析し、自動でWord形式のレポートを作成するエージェントを動かしてみます!

フレームワークには、AWS主導でオープンソース開発されているPython製SDK「Strands Agents」を利用します。

👉 サンプルコードはこちら


① 全体の流れ

今回のチュートリアルでは、以下の2つのユースケースを中心に進めます。

  1. BigQuery MCPの活用: Google Cloud上のSearch Consoleデータを読み取り、接続確認&テーブル分析レポートを作成する。
  2. SQL Server MCPの活用: 社内データベースを想定したSQL Serverの在庫データを読み取り、在庫切れアラート・発注予測レポートを作成する。

全体の処理フローは以下のようになります。

[ Python (Strands Agents) ]
       │  ▲
       │  │ (Tool Call)
       ▼  │
[ Azure DeepSeek V4 ] <───> [ MCP Toolbox (BigQuery / SQL Server) ]
                                      │
                                      ▼
                               [ 各種データベース ]

AIがMCP経由で必要なクエリ(SELECTのみ)を発行し、結果を集計してWordファイル(.docx)に書き出し、Windows側からダブルクリックで確認できるようにします。


0. 事前準備と環境設定

前回記事(前編) の手順を実施している必要があります。WSL内のサンプルコード(dsv4_wsl_poc_agent.py)のあるディレクトリに移動して下さい。

作業を始める前に、必要な設定とライブラリをまとめて用意します。

0.1 環境変数を .env にまとめる

前編で取得したAzure AIのエンドポイントやAPIキーなどを、作業ディレクトリ内の .env ファイルに記述します。

cat > .env <<'EOF'
# Azure AI(前編で設定した値)
AZURE_AI_ENDPOINT="https://<RESOURCE_NAME>.cognitiveservices.azure.com"
AZURE_AI_API_KEY="<API_KEY>"
AZURE_AI_DEPLOYMENT="DeepSeek-V4-Flash-0731"
AZURE_RG="<RESOURCE_GROUP>"
AZURE_AI_ACCOUNT="<AI_RESOURCE_NAME>"
EOF

chmod 600 .env

0.2 必要なライブラリのインストール

Pythonのパッケージマネージャー uv を使用して、必要なパッケージを一括追加します。

uv add google-cloud-bigquery python-docx matplotlib

0.3 Azure AIのレート制限(429エラー)対策

DeepSeekなどのMaaSモデルは、デプロイの capacity 設定によって1分あたりのリクエスト数(RPM)やトークン数(TPM)の上限が決まります。 初期値の capacity 1 だとツール呼び出しの連続実行ですぐに 429 (RateLimitReached) に達してしまうため、Azureポータルの「Deployments」またはAzure CLIから sku-capacity 20 程度まで引き上げておきましょう。

0.4 MCP Toolboxのインストール

データベース接続を安全かつ手軽に仲介してくれる公式ツール「MCP Toolbox for Databases」をダウンロードしてパスを通します(Linux x86_64環境の例)。

export TOOLBOX_VERSION="1.11.0"
mkdir -p "$HOME/.local/bin"
curl -fL "https://storage.googleapis.com/mcp-toolbox-for-databases/v${TOOLBOX_VERSION}/linux/amd64/toolbox" -o "$HOME/.local/bin/toolbox"
chmod +x "$HOME/.local/bin/toolbox"
export PATH="$HOME/.local/bin:$PATH"
toolbox --version

② BigQuery MCPを活用してSearch Consoleの分析レポートを作る

まずはGoogle CloudのBigQueryと接続し、自律運営サイト(LLM Data Hub)のSearch Consoleデータを確認して作業レポートを生成してみます。

2.1 チュートリアル用の使い捨てサービスアカウント(SA)の準備

安全に検証するため、読み取り権限だけを持たせた使い捨てのサービスアカウントとJSONキーを作成します。

set -a; . ./.env; set +a

# プロジェクトIDとデータセット等の設定
export SA_PROJECT="<SERVICE_ACCOUNT_PROJECT_ID>"
export BQ_PROJECT="<BIGQUERY_DATA_PROJECT_ID>"
export BQ_DATASET="<DATASET_ID>"
export BQ_TABLE="<TABLE_ID>"
export SA_ID="deepseek-poc-$(date +%Y%m%d%H%M%S)"
export SA_EMAIL="${SA_ID}@${SA_PROJECT}.iam.gserviceaccount.com"
export KEY_JSON="$PWD/xxx.json"

# SA作成と権限付与(Job User と 対象データセットへの Data Viewer)
gcloud iam service-accounts create "$SA_ID" --project="$SA_PROJECT"
gcloud projects add-iam-policy-binding "$BQ_PROJECT" --member="serviceAccount:${SA_EMAIL}" --role="roles/bigquery.jobUser"
bq query --use_legacy_sql=false --project_id="$BQ_PROJECT" \
  "GRANT \`roles/bigquery.dataViewer\` ON SCHEMA \`${BQ_PROJECT}.${BQ_DATASET}\` TO \"serviceAccount:${SA_EMAIL}\";"

# 鍵の発行
gcloud iam service-accounts keys create "$KEY_JSON" --iam-account="$SA_EMAIL" --key-file-type=json
chmod 600 "$KEY_JSON"

設定したSA情報を .env に追記しておきます。

cat >> .env <<EOF
SA_PROJECT="$SA_PROJECT"
BQ_PROJECT="$BQ_PROJECT"
BQ_DATASET="$BQ_DATASET"
BQ_TABLE="$BQ_TABLE"
KEY_JSON="$KEY_JSON"
GOOGLE_APPLICATION_CREDENTIALS="$KEY_JSON"
GOOGLE_BIGQUERY_PROJECT="$BQ_PROJECT"
GOOGLE_BIGQUERY_LOCATION="asia-northeast1"
EOF

2.2 DeepSeek × BigQuery MCP でデータを読み取る

準備ができたら、エージェントを動かしてBigQueryのメタデータ取得とSQL実行を行わせます。

uv run --env-file .env python dsv4_wsl_poc_agent.py \
  --bigquery-mcp \
  --prompt "MCP Toolbox の list_table_ids で project=${BQ_PROJECT}、dataset=${BQ_DATASET} に ${BQ_TABLE} が存在することを確認してください。次に execute_sql で SELECT * FROM \`${BQ_PROJECT}.${BQ_DATASET}.${BQ_TABLE}\` LIMIT 5 を実行してください。行の値は表示せず、使用した MCP ツール名、テーブルの存在、SQL の成否、取得行数だけを回答してください。"

DeepSeekが自律的に list_table_ids や execute_sql などのMCPツールを選択して呼び出し、結果を要約してくれます。

2.3 分析レポート(Word)の自動作成

続けて、レポート作成用のコマンドを実行します。作成されたWordファイルは、WSL上だけでなくWindows側のフォルダ(/mnt/c/DeepSeekV4PoC/reports)にもコピーされます。

export WINDOWS_REPORT_DIR="/mnt/c/DeepSeekV4PoC/reports"
mkdir -p "$WINDOWS_REPORT_DIR"

uv run --env-file .env python dsv4_wsl_poc_agent.py --bigquery-mcp

実行時のターミナル出力は以下のようになります。

BigQuery MCP実行結果画面

ターミナル上では、SELECT 1 による疎通確認、データセット名(searchconsole_llm)の取得、Wordファイルの生成、一時ファイルのクリーンアップが順を追って自動実行されている様子が確認できます。

出力された 作業レポート.docx をWordで開くと、次のように綺麗に表組みされたレポートが仕上がっています。

BigQuery検証作業レポートWord画面


③ SQL Server MCPを活用して在庫データの分析レポートを作る

次に、応用編として社内SQL Serverにある在庫データを分析し、毎朝の在庫切れアラート・発注予測レポートを作成するユースケースを試してみましょう。

ポイント: AIエージェントに直接データベース更新(UPDATE/INSERT)をさせないよう、DB管理者には SELECTのみ許可した読み取り専用ユーザー と 集計済みビュー(例: dbo.InventoryOrderView) を用意してもらうのが運用のベストプラクティスです。

3.1 接続設定の追加

.env にSQL Serverの接続情報を追加します。

read -rsp "SQL Server password: " MSSQL_PASSWORD && echo
cat >> .env <<EOF
MSSQL_HOST="<SQL_SERVER_HOST>"
MSSQL_PORT="1433"
MSSQL_DATABASE="<DATABASE_NAME>"
MSSQL_USER="<READ_ONLY_USER>"
MSSQL_PASSWORD="$MSSQL_PASSWORD"
EOF
chmod 600 .env
unset MSSQL_PASSWORD

3.2 在庫アラートレポートを生成する

DeepSeekに対して「発注が必要な優先度の高い商品を抽出し、Word形式でレポートを作成する」指示を出します。

export WINDOWS_REPORT_DIR="/mnt/c/DeepSeekV4PoC/reports"
mkdir -p "$WINDOWS_REPORT_DIR"

uv run --env-file .env python dsv4_wsl_poc_agent.py \
  --sql-server-only \
  --prompt "SQL Server の execute_sql だけを使ってください。dbo.InventoryOrderView から推奨発注量が 0 より大きい商品を優先度順に最大100件取得し、対象件数、緊急件数、データ基準日時、商品コード、商品名、販売可能在庫、入荷時点の予測在庫、推奨発注量、アラート理由をまとめてください。値や列がない場合は推測せず不足項目として記載してください。write_work_report の data_source は SQL Server (MCP Toolbox / read-only)、filename は 在庫切れアラート発注予測レポート.docx とし、表を含む Word ファイルを作成してください。SQL は SELECT または WITH だけを使い、発注登録やデータ更新はしないでください。"

ターミナル上で処理が完了すると、抽出された集計サマリーと対象商品の一覧が表示されます。

SQL Server在庫分析のターミナル実行結果

上記のように、優先度1(緊急)の商品数や欠品リスクのある商品コード(SKU-1001、SKU-1003など)が自動で整理・リストアップされています。

生成された 在庫切れアラート発注予測レポート.docx を開いてみましょう。

在庫切れアラート発注予測レポートWord画面

対象件数や緊急度、各商品の販売可能在庫と推奨発注量がわかりやすい表形式でまとめられており、担当者が朝一番に確認して意思決定する業務フローにそのまま活用できます!


④ さらなる発展と後片付け

活用を広げるヒント(Oracleなどへの応用)

MCP ToolboxはSQL ServerやBigQueryだけでなく、OracleやPostgreSQLなど多様なDBに対応しています。アーキテクチャの基本は同じですので、読み取り専用ユーザーと業務用ビューを用意すれば、社内の様々な業務データを横断したレポート自動生成エージェントへと発展させることが可能です。

後片付け(リソース削除)

検証が完了したら、不要な課金や情報流出を防ぐためにリソースを整理しましょう。

  1. GCP側: 発行した使い捨てサービスアカウント、アクセス権(IAM)、ローカルのJSONキーファイルを削除します。
  2. Azure側: 前編で作成した検証用リソースグループ(AZURE_RG)を az group delete で削除します。

まとめ

今回は、Azure上のDeepSeek V4とMCP Toolboxを組み合わせ、自然言語の指示からBigQueryやSQL Serverのデータを取得してWordレポートを自動生成する一連の流れを紹介しました。

MCP Toolboxによるデータベース連携(読み取り専用権限・ビューの活用)とStrands Agentsを活かすことで、実務に役立つAIアシスタントを素早く構築できます。

今回使用したサンプルコードの全容や詳細なオプション説明は、以下のGitHubリポジトリに公開しています。ぜひ手元で動かしてみてください!

👉 GitHub: okamoto53515606/azure-deepseek-v4